OdidoOdido MemberComments: 15 Received thanks: 0 Member since: June 2017

Hallo zusammen,

kann mir bitte jemand sagen, wie ich in einer beliebigen TPL-Datei auf eine der Shopseiten (Inhalte/Shopseiten) zugreifen kann?

Ich hab mir zwar dazu schon die sites-navigation.tpl angeschaut, aber ich komm nicht drauf, wie ich die $customPages in meinem Template gefüllt bekomme.

Danke und liebe Grüße

Oliver

1 Answer

  • sirthxalotsirthxalot MemberComments: 12 Received thanks: 2 Member since: July 4

    Hallo Oliver

    Den richtigen Controller findest Du in der Browser Konsole:

    Hier ist ersichlich das der `Listing` Controller angesprochen wird.

    Gruss

    Alexander

    Quote
    Accepted Answer
    Thanked by 1Odido
  • Accepted Answer

Answers

  • sschreiersschreier MemberComments: 2942 Received thanks: 793 edited August 22 Member since: August 2014

    Hallo,

    im Prinzip müsstest du dir das Array $customPages selbst in deinem gewünschten Controller „zusammenbauen“, anders geht es logischerweise nicht, da $customPages ja nur bei Shopseiten ausgeliefert wird. Siehe: https://github.com/shopware/shopware/blob/5.6/engine/Shopware/Controllers/Frontend/Custom.php#L57 bzw. https://github.com/shopware/shopware/blob/5.6/engine/Shopware/Controllers/Frontend/Custom.php#L73 .

    Grüße

    Sebastian

  • OdidoOdido MemberComments: 15 Received thanks: 0 Member since: June 2017

    Hallo Sebastian,

    Danke für Deine Antwort. Im Prinzip klar, ABER wie und wo find ich jeweils den richtigen Controller?

    Dake

    Oliver

  • sirthxalotsirthxalot MemberComments: 12 Received thanks: 2 Member since: July 4

    Hallo Oliver

    Den richtigen Controller findest Du in der Browser Konsole:

    Hier ist ersichlich das der `Listing` Controller angesprochen wird.

    Gruss

    Alexander

    Quote
    Accepted Answer
    Thanked by 1Odido
  • sirthxalotsirthxalot MemberComments: 12 Received thanks: 2 edited August 28 Member since: July 4

    Hier ein Beispiel wie Du eine Smarty Variable global für alle Views bereitstellen kannst - falls Dir so etwas hilft?

    <?php
    
    namespace CustomerCanvas\Subscriber;
    
    use Doctrine\Common\Collections\ArrayCollection;
    use Enlight\Event\SubscriberInterface;
    use Shopware\Components\Theme\LessDefinition;
    
    class SmartySubscriber implements SubscriberInterface
    {
        private $pluginDirectory;
    
        private $templateManager;
    
        private $pluginName;
    
        public function __construct($pluginName ,$pluginDirectory, \Enlight_Template_Manager $templateManager)
        {
            $this->pluginName = $pluginName;
            $this->pluginDirectory = $pluginDirectory;
            $this->templateManager = $templateManager;
        }
    
        public static function getSubscribedEvents()
        {
            return [
                'Enlight_Controller_Action_PostDispatchSecure' => 'onFrontendPostDispatchSecure'
            ];
        }
    
        public function onFrontendPostDispatchSecure()
        {
            $this->assignSmartyVariables();
        }
    
        private function assignSmartyVariables()
        {
            $this->templateManager->assign('customPages', "Your Value");
        }
    }
    

    In Deiner services.xml:

    <service id="customer_canvas.subscriber.smarty_subscriber" class="CustomerCanvas\Subscriber\SmartySubscriber">
                <argument>%customer_canvas.plugin_name%</argument>
                <argument>%customer_canvas.plugin_dir%</argument>
                <argument type="service" id="template"/>
                <tag name="shopware.event_subscriber"/>
            </service>
    

     

    Thanked by 1Odido
Sign In or Register to comment.