Contao-Camp 2024
Ergebnis 1 bis 13 von 13

Thema: Insert Template 'mod_article'

  1. #1
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard Insert Template 'mod_article'

    Warum funktioniert dieses Template nicht? Das Template wird aufgerufen, allerdings funktioniert die Ausgabe nicht.

    HTML-Code:
    <div class="rg-parallax" data-parallax="scroll" data-image-src="<?= $this->parallaxSRC ?>">
        <?php $this->insert('mod_article', $this->getData()); ?> 
    </div>

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.061
    Partner-ID
    10107

    Standard

    Fehlt da nicht ein echo? (oder = statt php)

  3. #3
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Scheint nicht der Fall zu sein. Hier die Beschreibung. Habe beides getestet und das funktioniert leider nicht. Wenn ich das
    PHP-Code:
    $this->getData() 
    weglasse, dann erhalte ich folgende Fehlermeldung:
    HTML-Code:
    Warning: implode(): Invalid arguments passed in system/modules/core/templates/modules/mod_article.html5 on line 32
    #0 [internal function]: __error(2, 'implode(): Inva...', '/www/htdocs/w00...', 32, Array)
    #1 system/modules/core/templates/modules/mod_article.html5(32): implode('', NULL)
    #2 system/modules/core/library/Contao/BaseTemplate.php(88): include('/www/htdocs/w00...')
    #3 system/modules/core/library/Contao/Template.php(277): Contao\BaseTemplate->parse()
    #4 system/modules/core/classes/FrontendTemplate.php(46): Contao\Template->parse()
    #5 system/modules/core/library/Contao/BaseTemplate.php(280): Contao\FrontendTemplate->parse()
    #6 system/modules/rg-parallax/templates/rg_parallax_mod_article.html5(2): Contao\BaseTemplate->insert('mod_article')
    #7 system/modules/core/library/Contao/BaseTemplate.php(88): include('/www/htdocs/w00...')
    #8 system/modules/core/library/Contao/Template.php(277): Contao\BaseTemplate->parse()
    #9 system/modules/core/classes/FrontendTemplate.php(46): Contao\Template->parse()
    #10 system/modules/core/modules/Module.php(307): Contao\FrontendTemplate->parse()
    #11 system/modules/core/modules/ModuleArticle.php(67): Contao\Module->generate()
    #12 system/modules/core/library/Contao/Controller.php(409): Contao\ModuleArticle->generate(false)
    #13 system/modules/core/library/Contao/Controller.php(269): Contao\Controller::getArticle(Object(Contao\ArticleModel), true, false, 'main')
    #14 system/modules/core/pages/PageRegular.php(133): Contao\Controller::getFrontendModule('0', 'main')
    #15 system/modules/core/controllers/FrontendIndex.php(267): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #16 index.php(20): Contao\FrontendIndex->run()

  4. #4
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    Ne, in der Tat muss da kein echo hin, weil das geparste Template in der insert-Methode ausgegeben wird.

    Gibt es denn eine Fehlermeldung in dem Szenario aus deinem ersten Post und wo befindest du dich da?

  5. #5
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Ich habe mir ein eigenes Modul unter system/modules angelegt und erweitere dort zum einen das Template Objekt und zum anderen ändere ich den Namen des Templates.
    1. compileArticle
    2. parseTemplate
    Das sind die beiden Hooks. Erst wird ein Bild hinzugefügt und wenn bei parseTemplate das Bild vorhanden ist, dann ändere ich den Namen des Templates auf das von mir erstellte im Verzeichnis meines Moduls. Wenn ich den Inhalt aus dem Template "mod_article" in mein Template kopiere funktioniert alles einwandfrei, ich möchte das Template aber möglichst updatesicher haben, daher die Idee mit dem insert-Befehl.

    Eine Fehlermeldung kommt nicht, ich sehe eine schlicht weiße Seite ohne Code.

  6. #6
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    Zitat Zitat von Murmelschorsch Beitrag anzeigen
    Eine Fehlermeldung kommt nicht, ich sehe eine schlicht weiße Seite ohne Code.
    Das spricht dafür, dass die Fehlermeldungen nicht angezeigt werden. Mach in der localconfig.php mal Folgendens:

    PHP-Code:
    $GLOBALS['TL_CONFIG']['displayErrors'] = true

  7. #7
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Hatte ich auch schon gedacht, aber Fehlermeldungen werden angezeigt. Daran liegt es auch nicht. Hier ist mal meine Klasse, vielleicht ist dort ja auch der Fehler zu finden:
    PHP-Code:
    class Parallax
    {
        public function 
    addParallaxImage($objTemplate$arrData$objModule)
        {
            
    $addParallax $arrData['rg_parallaxAddImage'];
            
    $parallaxSRC $arrData['rg_parallaxSingleSRC'];
            if (
    $addParallax == 1) {
                if (
    $parallaxSRC == '') {
                    return 
    '';
                }

                
    $objFile = \FilesModel::findByUuid($parallaxSRC);

                if (
    $objFile === null) {
                    if (!\
    Validator::isUuid($parallaxSRC)) {
                        return 
    '<p class="error">' $GLOBALS['TL_LANG']['ERR']['version2format'] . '</p>';
                    }
                    return 
    '';
                }

                if (!
    is_file(TL_ROOT '/' $objFile->path)) {
                    return 
    '';
                }

                
    $parallaxSRC $objFile->path;
                
    $objTemplate->parallaxSRC $parallaxSRC;
            }
        }

        public function 
    addParallaxJS($buffer$templateName)
        {
            
    $GLOBALS['TL_CSS'][] = 'system/modules/rg-parallax/assets/css/rg-parallax.css';
            
    $GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/rg-parallax/assets/js/parallax.min.js';
            return 
    $buffer;
        }

        public function 
    changeTemplate($objTemplate)
        {
            if (!empty(
    $objTemplate->parallaxSRC)) {
                if (
    $objTemplate->getName() == 'mod_article') {
                    
    $objTemplate->setName('rg_parallax_mod_article');
                }
            }
        }


  8. #8
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Gibt es noch eine andere gute Möglichkeit, um einem Artikel ein umschließendes Element hinzufügen? Ich kann mir gut vorstellen in einem Artikel eine Dropdown-Liste mit unterschiedlichen Sections zu erstellen. Diese müssten den Artikel dann umschließen und ich möchte nicht das Template duplizieren, sondern dies über eine Erweiterung lösen. Bin sehr dankbar für Hinweise!

  9. #9
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    (...)

    Edit: ich bin gerade etwas ratlos Kannst du mal deinen ganzen Quellcode zippen und hochladen?
    Geändert von benzin (30.07.2016 um 16:21 Uhr)

  10. #10
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.076
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Murmelschorsch Beitrag anzeigen
    Gibt es noch eine andere gute Möglichkeit, um einem Artikel ein umschließendes Element hinzufügen? Ich kann mir gut vorstellen in einem Artikel eine Dropdown-Liste mit unterschiedlichen Sections zu erstellen. Diese müssten den Artikel dann umschließen und ich möchte nicht das Template duplizieren, sondern dies über eine Erweiterung lösen. Bin sehr dankbar für Hinweise!
    Das verstehe ich gerade nicht. Du willst innerhalb eines Artikels etwas erstellen, was dann den Artikel umschliesst? Jede einzelne Section umschliesst den Artikel?

  11. #11
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Hier mein Code:
    rg-parallax.zip

    Denke damit wird es klarer. In diesem Fall möchte ich, dass in den Einstellungen des Artikels ein Hintergrund-Bild mit einem Parallax-Scroll-Effekt eingefügt wird. Das Bild wird also in den Artikeleinstellungen erstellt, dies erspart dann ein umschließendes Inhaltselement. Ich habe zum Testen noch das Template "mod_article.html5" im Standard Templates-Ordner erstellt, umbenannt und es dort mit <?php $this->insert("mod_article"); ?> versucht, dies schlug ebenfalls fehl.

    Habe zudem recht häufig, dass ich den Bereich eines Artikels mit einem anderen Hintergrund versehen möchte und gleichzeitig mit einem container, so:

    HTML-Code:
    <div class="dunkler-hintergrund">
        <article class="container">
            <!--- INHALTSELEMENTE --->
        </article>
    </div>
    HTML-Code:
    .container { max-width: 1200px; margin: auto; }

  12. #12
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    Die Variante mit $this->insert('mod_article') schlägt fehl, weil jedes Mal, wenn du das mod_article-Template einfügst, deine changeTemplate-Methode (Parallax.php:39) dieses wieder zu rg_parallax_mod_article ändert. Ergo: Endlosschleife

  13. #13
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Multimedia

    Alles klar, das erklärt so einiges, vielen Dank!!

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
  •