das Shopware-Standard-Plugin “LastArticles” schreibt als Artikelnamen die Artikel inkl. Variantenbezeichnung in die DB.
Ich versuche grade mich da reinzuhängen, da wir hier nur den Artikelnamen ohne die Variantenbezeichnung stehen haben wollen.
In "Shopware\_Plugins\_Frontend\_LastArticles\_Bootstrap" gibt es in der Methode setLastArticleById() ein notify-Event, wo ich allerdings nur an die Artikel-ID rankomme. Den DB-Eintrag updaten geht auch nicht, da das Event schon vor dem DB-Insert ausgeführt wird. Mittels after-Hook habe ich auch versucht, aber der scheint gar nicht zu greifen, bzw. bin ich mir nicht sicher, ob Hooks in Methoden der Bootstrap überhaupt möglich sind? Hat jemand einen Tipp, wie ich den Artikelnamen hier überschreiben kann, am besten bevor der Insert geschieht, müsste also irgendwie an die $article rankommen.
public function setLastArticleById($articleId)
{
$article = $this->getArticleData((int) $articleId);
Shopware()->Session()->sLastArticle = $articleId;
$sessionId = Shopware()->Session()->get('sessionId');
if (empty($sessionId) || empty($article['articleName']) || empty($articleId)) {
return;
}
Shopware()->Events()->notify('Shopware_Modules_Articles_Before_SetLastArticle', array(
'subject' => Shopware()->Modules()->Articles(),
'article' => $articleId
));
return Shopware()->Db()->query('
INSERT INTO s_emarketing_lastarticles
(img, name, articleID, sessionID, time, userID, shopID)
VALUES
(?, ?, ?, ?, NOW(), ?, ?)
ON DUPLICATE KEY UPDATE time=NOW(), userID=VALUES(userID)
', array(
(string) $article['image'],
(string) $article['articleName'],
$articleId,
$sessionId,
(int) Shopware()->Session()->sUserId,
(int) Shopware()->Shop()->getId()
));
}
draufgesetzt haben und dann den Artikelnamen in der Datenbank upgedatet hab. Hat aber nichts gebracht, weil die Artikelname in “Zuletzt angesehen” aus dem Local-Storage gezogen werden.
Ein einfaches Überschreiben der JS-Var im Smarty-Template (frontend/index/index) hat gereicht
Mit einem anderen Smarty-Block hat es bei mir geklappt (Shopware 5.5.10):
{extends file='parent:frontend/index/index.tpl'}
{* let the user modify the data here *}
{block name="frontend_index_header_javascript_data"}
{$smarty.block.parent}
{if $sArticle}
{$lastSeenProductsConfig.currentArticle.articleName = $sArticle.articleName}
{/if}
{/block}