Ergebnis 1 bis 6 von 6

Thema: 3.3.x Template-Element block_searchable anpassen

  1. #1
    Contao-Nutzer
    Registriert seit
    22.09.2014.
    Ort
    Chemnitz
    Beiträge
    34

    Standard 3.3.x Template-Element block_searchable anpassen

    Hallo,

    ich bin ganz neu in der Contao-Welt und wollte mal mit was einfachem anfangen...
    Ein Eingabeelement im Backend mit dem man einer Überschrift ein Bild zuordnen kann, das dann automatisch im Frontend ausgegeben wird.

    Das mit dem Backend ging relativ schnell nachdem ich kapiert hatte was DCA ist. Der Front-End Teil mit den Templates hat etwas länger gedauert, auch wenn ich das gut gemacht finde.

    Jetzt bin ich auf ein Problem gestoßen, was sogar ein Bug sein könnte, aber vielleicht auch nur meine Unwissenheit.

    Meine config.php :

    PHP-Code:
    TemplateLoader::addFiles(array
    (
        
    'block_searchable' => 'system/modules/himage/templates',
        
    'block_unsearchable' => 'system/modules/himage/templates',
        
    'block_headline' => 'system/modules/himage/templates',
        
    'ce_headline' => 'system/modules/himage/templates',
    )); 
    wobei block_headline mein neues Template ist, der Rest ist alles aus dem Core.
    Und diese sieht folgendermaßen aus:
    PHP-Code:
    <?php $this->block('headline'); ?>
    ...
    //ausgabe Überschrift mit Bild
    ...
    <?php $this->endblock(); ?>
    Die block_searchable.html5 habe ich folgendermaßen modifiziert:

    PHP-Code:
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?>
    <?php 
    if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>

        <?php $this->extend('block_headline')?>
        
        //könnte auch weggelassen werden:
        <?php $this->block('headline'?>
        <?php $this->parent() ?>
        <?php $this->endblock() ?>
        
        //wird nicht angezeigt:
        <?php $this->block('content'); ?>
        <?php $this->endblock(); ?>

    </div>
    Nun ist das Problem das NUR die Überschrift ausgegeben wird...
    Der content-Block der ja von den Content-Elementen (ce_text) überschrieben wird, wird nicht ausgegeben.

    Ich habe mich an der Beschreibung von http://rocksolidthemes.com/de/contao...-3-3-templates orientiert.

  2. #2
    Contao-Nutzer Avatar von RockSolid Themes
    Registriert seit
    29.05.2012.
    Beiträge
    205
    Partner-ID
    8945

    Standard

    Hallo,

    um dir bei deinem Problem im Frontend-Bereich besser helfen zu können, wäre es hilfreich wenn du deine Änderungen im Backend näher beschreiben würdest. Hast du ein neues Inhaltselement erstellt, oder für alle Inhaltselemente ein Bild-Eingabefeld hinzugefügt?

    Mit TemplateLoader::addFiles überschreibst du die Core-Templates block_searchable, block_unsearchable und ce_headline. Das solltest du nicht machen, wenn deine Erweiterung universell einsetzbar sein soll.

    Wenn du in einem Template extend verwendest, wird sämtlicher Code außerhalb von block und endblock ignoriert. Wenn du innerhalb eines blocks nur die parent-Funktion verwendest kann er auch weggelassen werden. Dein block_searchable.html5-Code macht im Moment genau dasselbe wie folgender Code:

    PHP-Code:
    <?php $this->extend('block_headline'?>
    <?php $this
    ->block('content'?> 
    <?php $this->endblock() ?>
    Was nichts anderes macht als vom Template block_headline abzuleiten und den Inhalt aus dem Block content zu entfernen. Allerdings ist der Block content in dem Template von dem abgeleitet wurde (block_headline) gar nicht vorhanden, deshalb wird dieser Block auch gänzlich ignoriert.

    Eventuell suchst du nach der Template-Funktion $this->insert('block_headline', $this->arrData), diese fügt ein anderes Template in das bestehende Template ein.

  3. #3
    Contao-Urgestein Avatar von KlausGrenoble
    Registriert seit
    27.01.2013.
    Ort
    Grenoble
    Beiträge
    2.362

    Standard

    Zitat Zitat von garyee Beitrag anzeigen
    Hallo, ich bin ganz neu in der Contao-Welt und wollte mal mit was einfachem anfangen...
    Na, ich würde sagen, Du fängst gleich mit was Schwerem an.
    Wenn ich mit contao anfange, komme ich zunächst mal ohne jegliche CSS-, PHP-, HTML- oder Programmierkenntnisse aus.
    Wenn ich also mal eine für mich schwierige Frage habe, weiss ich also schon mal, an wen ich mich zuerst wenden kann.
    Willkommen im contao-Forum.

  4. #4
    Contao-Nutzer
    Registriert seit
    22.09.2014.
    Ort
    Chemnitz
    Beiträge
    34

    Standard

    Zitat Zitat von RockSolid Themes Beitrag anzeigen
    Hast du ein neues Inhaltselement erstellt, oder für alle Inhaltselemente ein Bild-Eingabefeld hinzugefügt?
    zweitens, per dca ein neues Feld im BE hinzugefügt.

    Zitat Zitat von RockSolid Themes Beitrag anzeigen
    Was nichts anderes macht als vom Template block_headline abzuleiten und den Inhalt aus dem Block content zu entfernen. Allerdings ist der Block content in dem Template von dem abgeleitet wurde (block_headline) gar nicht vorhanden, deshalb wird dieser Block auch gänzlich ignoriert.
    Das Wort ableiten ist für mich in dem Zusammenhang noch irgendwie ungewohnt, weil ich aus der Java-Welt komme.
    Wäre es aber in dem Fall nicht irgendwie logischer das der content-Block einfach neu angelegt wird(wenn es ihn noch nicht gibt)? Weil so bedeutet das doch, dass man in Templates die von einem anderen extended sind, keine neuen Blöcke "aufmachen" kann, was doch irgendwie ziemlich unpraktisch ist.
    Vielen Dank auf jeden Fall schon mal für den Hinweis das erklärt einiges

    Zitat Zitat von RockSolid Themes Beitrag anzeigen
    Eventuell suchst du nach der Template-Funktion $this->insert('block_headline', $this->arrData), diese fügt ein anderes Template in das bestehende Template ein.
    Ja, genau das, irgendwie habe ich glaub ich den Sinn von der extend Funktion noch nicht ganz verstanden...
    Ist die nur dazu da, das man ein template im nachhinein erweitern kann?

    Zitat Zitat von RockSolid Themes Beitrag anzeigen
    Mit TemplateLoader::addFiles überschreibst du die Core-Templates block_searchable, block_unsearchable und ce_headline. Das solltest du nicht machen, wenn deine Erweiterung universell einsetzbar sein soll.
    Das ist ein sehr guter Punkt gerade bei Templates die wahrscheinlich mit die meist angepasstesten sind, das Ding ist dass ich gerade erst mit Contao anfange und nicht weiß an welchem Punkt ich sonst ansetzten muss. Gibt es es da eine andere Möglichkeit die Änderung einzuarbeiten?
    Vielleicht mit Hooks?
    Falls es noch andere Wege und Möglichkeiten gibt, wär ich echt dankbar für eine Erklärung bzw. Hinweise.
    (Oder wenn es eine Erweiterunge gibt die so was in der Art macht, wo ich das im Code nachvollziehen kann)

    Danke für die Antwort.

  5. #5
    Contao-Nutzer
    Registriert seit
    22.09.2014.
    Ort
    Chemnitz
    Beiträge
    34

    Standard

    Zitat Zitat von KlausGrenoble Beitrag anzeigen
    Na, ich würde sagen, Du fängst gleich mit was Schwerem an.
    Wenn ich mit contao anfange, komme ich zunächst mal ohne jegliche CSS-, PHP-, HTML- oder Programmierkenntnisse aus.
    Ja das es nichts einfaches ist habe ich auch erst jetzt bemerkt, aber das klang so schön einfach ... bau ich mal die Möglichkeit ein vor jede Überschrift ein Bild zu platzieren... etwas naiv, aber irgendwo muss man ja mal anfangen

    Zitat Zitat von KlausGrenoble Beitrag anzeigen
    Wenn ich also mal eine für mich schwierige Frage habe, weiss ich also schon mal, an wen ich mich zuerst wenden kann.
    Willkommen im contao-Forum.
    Na in gefühlten 2 Jahren bestimmt

    Danke.

  6. #6
    Contao-Nutzer
    Registriert seit
    22.09.2014.
    Ort
    Chemnitz
    Beiträge
    34

    Standard fertig

    Hi,

    der vollständigkeitshalber wollt ich noch mal sagen das ich fertig bin ...
    https://github.com/garyee/contao-h_image

    Kann gerne benutzt werden, keine Garantien und ohne Gewehr
    Bei Fragen und Problemen einfach die Issues-Funktion von Github benutzten.

    Gruß vom Gerald

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
  •