Kein Rewrite bei $sArticle.linkDetails

Wir haben ein Plugin auf Basis der neuen Plugin-Struktur erstellt.

Das Plugin erweitert das Template: frontend/listing/product-box/ box-basic.tpl

Über den StoreFrontBundle dekorieren wir den ListProductService.

In dem Template wollen wir jetzt auf die Variable  $sArticle.linkDetails  zurückgreifen.
Die ist auch prinzipiell vorhanden - allerdings bekommen wir hier nur “shopware.php?sViewport=detail&sArticle=168&sCategory=38” ausgegben, statt der PrettyUrl.

Hat jemand eine Idee, woran das liegen könnte?

Versuch mal 

 $sArticle.linkDetailsRewrited

Vielen Dank!

Leider gibt es unter $sArticle kein linkDetailRewrited

Unsere FrontendSubscriber.php sieht übrigens so aus:

namespace MagPlugin\Subscriber;

use Enlight\Event\SubscriberInterface;
use Enlight_Event_EventArgs;
use Doctrine\Common\Collections\ArrayCollection;

class FrontendSubscriber implements SubscriberInterface
{
    /**
     * @var string
     */
    private $pluginDirectory;

    /**
     * @param $pluginDirectory
     */
    public function __construct($pluginDirectory)
    {
        $this->pluginDirectory = $pluginDirectory;
        $this->templateManager = $templateManager;
    }

    /**
     * @return array
     */
    public static function getSubscribedEvents()
    {
        return [
			'Theme_Compiler_Collect_Plugin_Javascript' => 'onCollectJavascriptFiles',
			'Enlight_Controller_Action_PostDispatchSecure_Frontend_Listing' => 'onFrontendListing',
        ];
    }

    /**
     * @param Enlight_Controller_ActionEventArgs $args
     */
    public function onFrontendListing(\Enlight_Controller_ActionEventArgs $args)
   {
		/** @var \Enlight_Controller_Action $controller */
		$controller = $args->get('subject');
		$view = $controller->View();

		$view->addTemplateDir($this->pluginDirectory . '/Resources');
    }
	
    /**
     * @param Enlight_Event_EventArgs $args
     *
     * @return ArrayCollection
     */
    public function onCollectJavascriptFiles(Enlight_Event_EventArgs $args)
    {
        $collection = new ArrayCollection();

		$collection->add($this->pluginDirectory . '/Resources/frontend/js/jquery.plugin.js');

        return $collection;
    }
}

 

@magnolia4 schrieb:

Wir haben ein Plugin auf Basis der neuen Plugin-Struktur erstellt.

Das Plugin erweitert das Template: frontend/listing/product-box/ box-basic.tpl

Über den StoreFrontBundle dekorieren wir den ListProductService.

In dem Template wollen wir jetzt auf die Variable  $sArticle.linkDetails  zurückgreifen.
Die ist auch prinzipiell vorhanden - allerdings bekommen wir hier nur „shopware.php?sViewport=detail&sArticle=168&sCategory=38“ ausgegben, statt der PrettyUrl.

Hat jemand eine Idee, woran das liegen könnte?

Im Template könnt ihr ruhig die shopware.php? Links verwenden, die werden automatisch umgeschrieben und schick ins Template geschrieben. Hast du das mal ausprobiert? 

Good to know but…

das klappt nur bei einem a href. Wir schreiben den Link in ein  data-link="…" Attribut.

Dann schreib es doch in das href-Tag. Dann kannst du mit jQuery via $el.attr(‘href’) darauf zugreifen. Und wenn der Browser kein JavaScript aktiviert hat, dann landet man immerhin trotzdem auf der Detailseite.

Viele Grüße

@simkli‍ Das wäre nicht unbedingt die smarteste Lösung.

Wir regeln das jetzt über (auch wenn leider mit der ganze Host ausgegeben wird): 

{url controller='detail' sArticle=$sArticle.articleID}

Wobei die Grundfrage offen bleibt, warum die URL prinzipiell nicht umgeschrieben wird :-/

@magnolia4 schrieb:

Wobei die Grundfrage offen bleibt, warum die URL prinzipiell nicht umgeschrieben wird :-/

Die oben von mir genannte Variable habe ich in einer Shopware 5.4.5 Umgebung verwendet.

Keine Ahnung warum Du diese nicht hast. Hast Du ggf. ne 5.3er Version am laufen?