all.less - Integration in einem Plugin funktioniert nicht [geklärt]

Hallo zusammen,

ich habe ein Problem mit der Integration einer all.less Datei in einem Plugin. Das Plugin erweitert das CustomProductsV2-Plugin und arbeitet nach dem Beispiel im Blog auch einwandfrei.

Ich habe einen Frontend-Subscriber der auf den Event “Enlight_Controller_Action_PreDispatch_Frontend_Detail” registriert und im Callback eine Funktion besitzt die über addTemplateDir() das Verzeichnis “/Resources/Views/” als Template-Verzeichnis hinzufügt.

Es gibt eine Testdatei “Resources/Views/frontend/detail/tabs.tpl” die einen neuen Tab auf der Artikeldetailseite hinzufügt. Sprich das Template-Verzeichnis funktioniert schon mal.

Jetzt habe ich mir gedacht, das ich einfach folgende less-Dateien im Template-Verzeichnis anlege, um einfach nur die Textfarbe anzupassen.

"/Resources/Views/frontend/_public/src/less/all.less

"/Resources/Views/frontend/_public/src/less/modules.less

"/Resources/Views/frontend/_public/src/less/_modules/detail.less

Das scheint jedoch nicht zu funktionieren. Nur warum nicht?

Hat jemand eine Idee und kann mir weiterhelfen?

Viele Grüße und einen schönen Abend,

Thomas

Für less und js gibt es eigene Funktionen.

/**
     *
     * @param Enlight_Event_EventArgs $args
     * @return \Doctrine\Common\Collections\ArrayCollection
     */
    public function addLessFiles(Enlight_Event_EventArgs $args)
    {
        $less = new \Shopware\Components\Theme\LessDefinition(
        /* Configuration */
            array(
            /* Less files to compile */
            array( __DIR__. '/Views/responsive/frontend/_public/src/less/all.less'),
            /* Import directory */
            __DIR__
        );

        return new Doctrine\Common\Collections\ArrayCollection(array($less));
    }

 

1 „Gefällt mir“

Hallo,

zunächst vielen Dank für deine Antwort. 

Ich habe die addLess-Funktion jetzt in einem eigenen Subscriber (siehe unten) untergebracht und in Resources/services.xml hinterlegt.
Der DesignFiles-Subscriber reagiert auf den Event “Theme_Compiler_Collect_Plugin_Less”. Siehe hierzu auch in der Shopware 5 Doku “plugin update guide”.

Leider kann ich nun nicht mehr das Theme kompilieren… (Warum auch immer…) und kann somit nicht testen, ob meine Änderungen funktionieren.

Habe ich das nun falsch eingebunden?

 

Subscriber/DesignFiles.php

container = $container;
        $this->path = $this->container->getParameter('modhoc_editor.plugin_dir');
    }

    public static function getSubscribedEvents() {
        return [
            'Theme_Compiler_Collect_Plugin_Less' => 'addLessFiles',
        ];
    }

    public function addLessFiles(Enlight_Event_EventArgs $args) {
        $less = new \Shopware\Components\Theme\LessDefinition(
                //configuration
                array(),
                //less files to compile
                array(
                    __DIR__. '/../Resources/Views/frontend/_public/src/less/all.less'
                ),
                //import directory
                __DIR__
        );

        return new Doctrine\Common\Collections\ArrayCollection(array($less));
    }

}

 

Ok ich habs und irgendwie lässt sich das Ganze auch wieder kompilieren.

Also für die Nachwelt: der passende Subscriber in Bezug auf meinen Fall

 

container = $container;
        $this->path = $this->container->getParameter('modhoc_editor.plugin_dir');
    }

    public static function getSubscribedEvents() {
        return [
            'Theme_Compiler_Collect_Plugin_Less' => 'addLessFiles',
        ];
    }

    public function addLessFiles(Enlight_Event_EventArgs $args) {
        $less = new LessDefinition(
                //configuration
                array(),
                //less files to compile
                array(
                    __DIR__. '/../Resources/Views/frontend/_public/src/less/all.less'
                ),
                //import directory
                __DIR__
        );

        return new ArrayCollection(array($less));
    }

}