Hallo zusammen,
ich möchte in dem Ajax Checkout Add Article Modal (ajax_add_article.tpl) statt dem Crosselling BoughtToo meine eigenen Related Crosselling Produkte ausgeben. Ich habe das auch schon im Template geändert doch das funktioniert so leider nicht.
Die Frage ist zwar schon etwas älter, aber da ich gerade sowas eingebaut habe, hier meine Lösung.
In dieser View gibt es $sArticle.sRelatedArticles nicht. Man kann die Daten aber selber einfügen.
Damit die Daten nur eingespielt werden, wenn ein Artikel in den Warenkorb gelegt wird und auch klar ist um welchen Artikel es sich handelt, muss man das Formular im Template parent:frontend/detail/buy.tpl (also das “In den Warenkorb Formular”) um ein Input-Feld mit der ID des Artikels erweitern.
War nicht so einfach einen passenden Event zu finden. Hab mich dann an Enlight_Controller_Action_PostDispatch_Frontend dran gehängt.
public static function getSubscribedEvents() {
return ['Enlight_Controller_Action_PostDispatch_Frontend' => 'onPostDispatchFrontend']
}
Wenn ein Artikel in den Warenkorb gelegt wird, wird nun die articleID übergeben.
Mit dieser kann man dann die Daten des Artikels in die View einbinden.
public function onPostDispatchFrontend(\Enlight_Event_EventArgs $arguments)
{
$view = $arguments->get('subject')->View();
$thisArticleID = $arguments->getRequest()->getPost('articleID');
if($thisArticleID) {
$thisArticle = Shopware()->Modules()->Articles()->sGetArticleById($thisArticleID);
$view->assign('thisArticle', $thisArticle);
}
}
An die “related Articles” kommt man nun über $thisArticle.sRelatedArticles.