Shopware Knowledgebase

Dieser Artikel ist noch nicht für Shopware 3.5 geprüft bzw. freigegeben.
Shopware Labs

Der Bereich Shopware Labs ist die Plattform für alle Entwickler. Hier findet man technische Dokumentationen und zahlreiche Tipps und Tricks rund um das Thema Programmieren. In dieser Rubrik stellen außerdem die Entwickler der shopware AG neue und experimentelle Lösungsansätze vor. Neue Funktionen, die in dieser Rubrik bereitgestellt werden, sind teilweise auch für zukünftige Releases geplant. Die Funktionen können dann ohne Programmierkenntnisse zukünftig direkt im Shopware Backend konfiguriert werden oder werden über Plugins bereitgestellt. Informationen über neue, geplante Funktionen finden Sie in unserer Roadmap.

Bitte beachten Sie, dass die hier bereitgestellten Lösungsansätze nicht offiziell supportet werden und nur eingebaut werden sollten, sofern Sie über das entsprechende, technische Wissen verfügen.

Artikel über Ajax in den Warenkorb legen (Kategorie)

  • shopware
  • 05.03.2010
  • 3.0.4 
  •  
  • 0
  • Voting
  •  
  • Labs/ Tutorials
  • Kein Support 

Beschreibung

Nach der Anpassung werden die Artikel, ohne die Seite zu verlassen, in den Warenkorb gelegt. Dies geschieht über ein Ajax-Request, der den Befehl zum "In den Warenkorb legen", an die Warenkorb-Funktion schickt. Nach dem Klick auf "in den Warenkorb" erscheint automatisch unter dem Button eine Erfolgsnachricht. Zusätzlich wird die Artikelanzahl im Warenkorb aktualisiert ohne Seitenreload. Diese Anpassung gilt für die Artikel im Kategorielisting. Diese Funktion wird ausgeblendet falls es sich bei den Artikel um ein Konfigurator-Artikel handelt.

Installation

Template-Anpassung

Diese Anpassungen beziehen sich auf das 3 Spaltige Kategorielisting. Natürlich können die Änderungen auch auf jedes andere Kategorielisting adaptiert werden.

Fügen Sie in der Datei "html/articles/article_box_3col.tpl" über diese Zeile:

{if $sArticle.pseudoprice}<s>{$sConfig.sCURRENCYHTML} {$sArticle.pseudoprice}</s>{/if}
 

folgende Zeilen ein:

 
	{if !$sArticle.sConfigurator}
		<span style="text-align:left">
    		<span><a href="#" id="basketLink{$sArticle.ordernumber}" style="font-size:9px; font-weight:bold; float: left;" onclick="sendArticleToBasket('{$sArticle.ordernumber}')">{$sConfig.sSnippets.sArticleaddtobasked}</a></span>
    		<span class="basketCatMessage" id="basketMessage{$sArticle.ordernumber}" >in den Warenkorb gelegt</span>
		</span>
	{/if}
 

Gehen Sie in die Datei "html/article/article_listing_3col.tpl" und fügen Sie den folgenden Code an das Ende der Datei an:

 
<script language="JavaScript" type="text/javascript">
{literal}
function sendArticleToBasket(orderNumber) {
	var sStart = {/literal}'{$sStart}'{literal};
	var basketID = 'basketLink'+orderNumber;
	var basketMessageID = 'basketMessage'+orderNumber;
	var sBasketLink = $(basketID);
	var sBasketMessage = $(basketMessageID);
	var sIndexArticle = {/literal}" {$sConfig.sSnippets.sIndexarticle|escape}{literal}";
	var data = 'sViewport=basket&sAjax=1&sAdd='+encodeURIComponent(orderNumber)+'&sQuantity=1';
	var request = new Ajax(sStart,{
	    data: data,
	    method: 'get',
	    onComplete: function(result){
	     result = Json.evaluate(result);
	     $(document.body).getElement('.mybasket_ul .basket_active').setHTML(result.sBasketQuantity+sIndexArticle);
	     $(document.body).getElement('.mybasket_ul li').removeClass('mybasket').addClass('mybasket_full');
	     new Fx.Style(sBasketMessage, 'opacity', {duration:600, onComplete: function () {
	     	 new Fx.Style(sBasketMessage, 'opacity', {duration:600}).start(1,0);
	     	}
	     }).start(0,1);
	    }
	}).request();
}
{/literal}
</script>
 

Navigieren Sie zu Ihrer "basic.css" unter /media/css/ und fügen Sie den folgenden Code ein:

 
.basketCatMessage {
	font-size:9px; font-weight:bold; opacity:0; float: left;
	-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
	filter: alpha(opacity=0); 
}
 

=== Viewport Anpassungen=== Fügen Sie in der Datei "engine/core/class/viewports/s_cat.php" über die Zeilen

 
	$variables = array(
		"sArticles"=>$categoryArticles['sArticles'],
		"sPropertiesOptionsOnly"=>$categoryArticles['sPropertiesOptionsOnly'],
		"sPropertiesGrouped"=>$categoryArticles['sPropertiesGrouped'],
		"sPages"=>$categoryArticles['sPages'],
		"sSupplierInfo"=>$categoryArticles['sSupplierInfo'],
		"sCategoryListing"=>$sCategoryListing,
		"sPerPage"=>$categoryArticles['sPerPage'],
		"sBanner"=>$promoteBanner,
		"sOffers"=>$promoteArticles,
		"sBreadcrumb"=>$categoryBreadcrumb,
		"sCategoryInfo"=>$categoryBreadcrumb[count($categoryBreadcrumb)-1],
		"sCategoryContent"=>$promoteContent,
		"sNumberPages"=>$categoryArticles['sNumberPages'],
		"sNumberArticles"=>$categoryArticles['sNumberArticles']
	);
 

folgenden Code ein:

 
foreach ($categoryArticles['sArticles'] as &$catArticle){
	$catArticle["sConfigurator"] = $this->sSYSTEM->sMODULES['sArticles']->sCheckIfConfig($catArticle["articleID"],true);
}
 

Im Viewport unter engine/core/class/viewports/s_basket.php vor dieser Zeile:

 
return array("templates"=>$templates,"variables"=>$variables);
 

diese Zeilen hinzufügen:

 
if(!empty($this->sSYSTEM->_GET["sAjax"]))
{
	if(empty($variables['sBasketInfo']))
	{
		$variables['sBasketInfo'] = $variables['sArticleName'].' '.$this->sSYSTEM->sCONFIG['sSnippets']['sBasketaddedtothebasket'];
	}
	echo json_encode(array(
		"sAmount"=>$variables["sAmount"],
		"sBasketQuantity"=>$variables["sBasket"]["Quantity"],
		"sArticleName"=>utf8_encode($variables["sArticleName"]),
		"sBasketInfo"=>utf8_encode($variables['sBasketInfo'])
	));
	exit();
}
 

Artikel-PDF erstellen

Erweiterung bewerten

Waren diese Informationen hilfreich? Ja Nein


Kommentare:

Artikel kommentieren


Die mit einem * markierten Felder sind Pflichtfelder.

Weitere interessante Artikel:

Bezeichnung:
Rating:
Klicks:
Datum:

Bestell-Nr.: SW1227_2741

Lieferzeit ca. 5 Tage

€ 1,00

Preise inkl. gesetzlicher
MwSt. zzgl. Versandkosten*

€ 1,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*