Ergebnis 1 bis 3 von 3

Thema: [avisota-twig-override] Twig Templates für Avisota überschreiben

  1. #1
    Contao-Nutzer Avatar von baumannsv
    Registriert seit
    28.01.2015.
    Beiträge
    152

    Standard [avisota-twig-override] Twig Templates für Avisota überschreiben

    Hallo Avisota Community,

    hier ein hilfreiches Modul mit dem man in verschieden Fällen die Twig Templates überschreiben kann.
    Dieses Modul wird ausschlieslich in PHP konfiguriert. Dies ist für alle wahrscheinlich
    ein missing feature, dass später noch im Backend konfigurierbar kommen wird.

    Dieses Modul kann man auch in einer nicht composer version herunterladen.
    Einfach den Tag bei GitHub umstellen.

    https://github.com/avisota/contao-avisota-twig-override

    MfG Sven
    Geändert von baumannsv (13.03.2015 um 14:37 Uhr)

  2. #2
    Contao-Nutzer Avatar von Coda
    Registriert seit
    18.08.2010.
    Ort
    Am Schreibtisch
    Beiträge
    32

    Daumen hoch

    Super Sache!!!

    Dein Tool könnte ich gerade gut gebrauchen...
    ... wenn ich's denn zum Laufen bekommen würde.

    Kannst Du mir sagen, was ich falsch mache?

    Wenn ich es richtig verstanden habe, kommt so was hier in die system/config/dcaconfig.php:
    PHP-Code:
    $GLOBALS['AvisotaTwigOverride']['layout'][] = array('alias''standardlayout''avisota/message/renderer/mailchimp/mce_headline''newsletter-avisota/mce_headline'); 
    Alias meines Templates: 'standardlayout'
    Pfad des Originaltemplates: 'system/modules/avisota-message-renderer-mailchimp/templates/avisota/message/renderer/mailchimp/mce_headline.html.twig'
    Pfad zum neuen Template: 'templates/newsletter-avisota/mce_headline.html.twig'

    Als kleine Info am Rande: ich habe Avisota 2.0.3 (nightly build) in Contao 3.2.19 ohne Composer installiert.
    Auch Deine Extension ist ohne Composer installiert. Von daher habe ich den Aufbau der Erweiterung etwas umstrukturiert:
    - system/modules/avisota-twig-override
    - system/modules/avisota-twig-override/composer.json
    - system/modules/avisota-twig-override/classes/[...]
    - system/modules/avisota-twig-override/config/[...]

    Zumindest scheint jetzt etwas zu passieren, nämlich Folgendes beim Ansehen des entworfenen Newsletters im Backend:
    HTML-Code:
    Fatal error: Call to undefined method TwigTemplate::import() in [...]/cms/system/modules/!avisota-nightly-build/vendor/bit3/contao-twig/src/ContaoTwig/TwigTemplate.php on line 153
    Hat die Fehlermeldung etwas mit Deinem Hinweis in der README zu tun?
    In the original contao twig module there is a problem.
    Before using the module check if class "TwigTemplate" extends "System".

    Falls ja, wie und in welcher Datei kann ich denn den Fehler beheben?

    Wenn ich in der o.a. Datei in Zeile 21 das hier einfüge:
    PHP-Code:
    class TwigTemplate extends \System 
    hagelt es bei der Vorschau vom Newsletter 'ne richtig dicke Fehlermeldung:
    PHP-Code:
    Warning: include([...]cms/system/modules/avisota_twig_overrride/classes/AvisotaTwigOverride.php): failed to open streamNo such file or directory in system/modules/core/library/Contao/ClassLoader.php on line 148

    #0 system/modules/core/library/Contao/ClassLoader.php(148): __error(2, 'include(/home/s...', '/home/sites/sit...', 148, Array)
    #1 system/modules/core/library/Contao/ClassLoader.php(148): Contao\ClassLoader::load()
    #2 [internal function]: Contao\ClassLoader::load('AvisotaTwigOver...')
    #3 [internal function]: spl_autoload_call('AvisotaTwigOver...')
    #4 system/modules/core/library/Contao/System.php(106): get_class_methods('AvisotaTwigOver...')
    #5 system/modules/!avisota-nightly-build/vendor/bit3/contao-twig/src/ContaoTwig/TwigTemplate.php(153): Contao\System->import('AvisotaTwigOver...')
    #6 system/modules/!avisota-nightly-build/vendor/avisota/contao-message-renderer-mailchimp/src/Avisota/Contao/Message/Renderer/MailChimp/Renderer/MailChimpRenderer.php(107): TwigTemplate->parse(Array)
    #7 [internal function]: Avisota\Contao\Message\Renderer\MailChimp\Renderer\MailChimpRenderer->renderHeadline(Object(Avisota\Contao\Message\Core\Event\RenderMessageContentEvent), 'avisota.contao....', Object(Symfony\Component\EventDispatcher\EventDispatcher))
    #8 system/modules/!avisota-nightly-build/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(164): call_user_func(Array, Object(Avisota\Contao\Message\Core\Event\RenderMessageContentEvent), 'avisota.contao....', Object(Symfony\Component\EventDispatcher\EventDispatcher))
    #9 system/modules/!avisota-nightly-build/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(53): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'avisota.contao....', Object(Avisota\Contao\Message\Core\Event\RenderMessageContentEvent))
    #10 system/modules/!avisota-nightly-build/vendor/avisota/contao-message/src/Avisota/Contao/Message/Core/Renderer/MessageRenderer.php(88): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('avisota.contao....', Object(Avisota\Contao\Message\Core\Event\RenderMessageContentEvent))
    #11 system/modules/!avisota-nightly-build/vendor/avisota/contao-message/src/Avisota/Contao/Message/Core/Renderer/MessageRenderer.php(69): Avisota\Contao\Message\Core\Renderer\MessageRenderer->renderContent(Object(Avisota\Contao\Entity\MessageContent), Object(DoctrineProxies\__CG__\Avisota\Contao\Entity\Layout))
    #12 system/modules/!avisota-nightly-build/vendor/avisota/contao-message-renderer-mailchimp/src/Avisota/Contao/Message/Renderer/MailChimp/Renderer/BlueprintRenderer.php(380): Avisota\Contao\Message\Core\Renderer\MessageRenderer->renderCell(Object(Avisota\Contao\Entity\Message), 'header', Object(DoctrineProxies\__CG__\Avisota\Contao\Entity\Layout))
    #13 system/modules/!avisota-nightly-build/vendor/avisota/contao-message-renderer-mailchimp/src/Avisota/Contao/Message/Renderer/MailChimp/Renderer/BlueprintRenderer.php(65): Avisota\Contao\Message\Renderer\MailChimp\Renderer\BlueprintRenderer->renderCell(Object(Avisota\Contao\Entity\Message), 'header', Object(DoctrineProxies\__CG__\Avisota\Contao\Entity\Layout))
    #14 system/modules/!avisota-nightly-build/vendor/avisota/contao-message-renderer-mailchimp/src/Avisota/Contao/Message/Renderer/MailChimp/Renderer/MailChimpRenderer.php(74): Avisota\Contao\Message\Renderer\MailChimp\Renderer\BlueprintRenderer->renderMessage(Object(Avisota\Contao\Entity\Message), Object(DoctrineProxies\__CG__\Avisota\Contao\Entity\Layout))
    #15 [internal function]: Avisota\Contao\Message\Renderer\MailChimp\Renderer\MailChimpRenderer->renderMessage(Object(Avisota\Contao\Message\Core\Event\RenderMessageEvent), 'avisota.contao....', Object(Symfony\Component\EventDispatcher\EventDispatcher))
    #16 system/modules/!avisota-nightly-build/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(164): call_user_func(Array, Object(Avisota\Contao\Message\Core\Event\RenderMessageEvent), 'avisota.contao....', Object(Symfony\Component\EventDispatcher\EventDispatcher))
    #17 system/modules/!avisota-nightly-build/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php(53): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'avisota.contao....', Object(Avisota\Contao\Message\Core\Event\RenderMessageEvent))
    #18 system/modules/!avisota-nightly-build/vendor/avisota/contao-message/src/Avisota/Contao/Message/Core/Renderer/MessageRenderer.php(38): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('avisota.contao....', Object(Avisota\Contao\Message\Core\Event\RenderMessageEvent))
    #19 system/modules/avisota-message/web/preview.php(93): Avisota\Contao\Message\Core\Renderer\MessageRenderer->renderMessage(Object(Avisota\Contao\Entity\Message))
    #20 system/modules/avisota-message/web/preview.php(104): preview->run()
    #21 {main} 

    Aber es passiert zumindest schon mal was

    Hast Du 'ne Ahnung, was da nicht passt? Stehe total auf dem Schlauch...


    b.t.w:
    in Deiner autoload.php steckt ein Fehler in Z. 20 (avisota_twig_overrrrrrrrride):
    -- 'AvisotaTwigOverride' => 'system/modules/avisota_twig_overrride/classes/AvisotaTwigOverride.php',
    ++ 'AvisotaTwigOverride' => 'system/modules/avisota_twig_override/classes/AvisotaTwigOverride.php',

    Habe ich gerade geändert, bringt auch nix.
    Geändert von Coda (25.03.2015 um 19:58 Uhr)

  3. #3
    Contao-Nutzer Avatar von Coda
    Registriert seit
    18.08.2010.
    Ort
    Am Schreibtisch
    Beiträge
    32

    Standard

    Ich werd' bekloppt. Das mit der autoload.php war doch der Fehler!

    Habe die Datei gerade gelöscht unf über das Contao Backend neu anlegen lassen.

    Also, Inhalt der Datei system/modules/avisota-twig-override/autoload.php ist nun:
    PHP-Code:
    <?php

    /**
     * Contao Open Source CMS
     *
     * Copyright (c) 2005-2015 Leo Feyer
     *
     * @license LGPL-3.0+
     */


    /**
     * Register the classes
     */
    ClassLoader::addClasses(array
    (
        
    // Classes
        
    'AvisotaTwigOverride' => 'system/modules/avisota-twig-override/classes/AvisotaTwigOverride.php',
    ));

    Zeile 21 der Datei system/modules/!avisota-nightly-build/vendor/bit3/contao-twig/src/ContaoTwig/TwigTemplate.php ist nun geändert in:
    PHP-Code:
    class TwigTemplate extends \System 
    Und was soll ich sagen?
    Dat läuft!!! Cooles Teil! Danke!!!

    P.S.:
    Sorry, viel Text für ein kleines 'r' zuviel. Aber vielleicht hilft es auch jemand anderem.

    Für dolche DAUs wie mich wäre noch erwähnenswert zu sagen, dass die twigs gecached werden. Hierzu kann man während der Entwicklung in der Systemwartung die gecachten twigs löschen und/oder in den Einstellungen bei der Twig Template Engine den Debugmodus aktivieren.
    Geändert von Coda (25.03.2015 um 20:25 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •