Ergebnis 1 bis 14 von 14

Thema: CONTAO 3.5.27: Kontrollstrukturen

  1. #1
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard CONTAO 3.5.27: Kontrollstrukturen

    Hallo,

    ich möchte ein MODUL erstellen, welches je nach ausgewählter Website in der Fußzeile unterschiedliche Inhaltselemente anzeigt:


    ******************** Modul in der Fußzeile ++++++++++++

    wenn Startseite
    +++ füge Inhaltselement ID1 ein

    wenn Kontaktseite
    +++ füge Inhaltselement ID3 ein

    wenn Impressum
    +++ füge Inhaltselement ID7 ein

    ******************** Modul in der Fußzeile ++++++++++++




    Vielen Dank für Hinweise.

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Erstelle ein Template mod_html_dependent_content.html5.

    Erstelle ein Modul-HTML.

    Inhalt:
    HTML-Code:
    <!-- use mod_html_dependent_content.html5 (nur zu deiner Info) -->
    Wähle dein erstelltes Template.

    Programmiere im Template. (ungetestet)
    PHP-Code:
    <?php

    // page-id, element-id
    $dependentContent = array
    (
      
    42 => 11// start
      
    23 => 22// contact
      
    13 => 33  // impressum
    );

    global 
    $objPage;

    if(
    array_key_exists($objPage->id$dependentContent))
    {
      \
    Controller::getContentElement($dependentContent[$objPage->id]);
    }

    ?>
    Anstatt CEs kannst du auch Artikel holen.

    Als Alternative kannst einen Inserttag in ein HTML-Modul schreiben, dann brauchst du kein Template zu erstellen.
    HTML-Code:
    <!-- imports PHP code (nur zu deiner Info) -->
    {{file::inc-dependent-content.php}}
    Du musst dann aber eine Datei erstellen. templates/inc-dependent-content.php. Dieser Weg hat den Vorteil, dass du Variablen übergeben kannst.
    HTML-Code:
    {{file::inc-dependent-content.php?dcarray=42 11,23 22,13 33}}
    Geändert von Andreas (11.05.2017 um 18:53 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard

    Hallo und vielen Dank,

    das sieht erst einmal etwas kompliziert aus. Es gibt also keinen CONTAO- Strukturen? Bei der Sprachenauswahl habe ich schon so etwas ähnliches gesehen ?


    {{if X=start.html}}
    {{article::1}}


    {{if X=kontakt.html}}
    {{article::6}}


    {{if X=impressum.html}}
    {{article::4}}

  4. #4
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Bisher hat so etwas wohl noch keiner gebraucht. Und wenn doch, dann manuell eingebaut. Wo kein Markt ist, da ist das verschwendete Programmierzeit.

    Gesendet von meinem L52 mit Tapatalk
    Geändert von Samson1964 (11.05.2017 um 18:57 Uhr)
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  5. #5
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ein Array und ein IF ist nicht kompliziert.

    Mit Inserttags kenne ich da nichts. Ist zumindestens nicht dokumentiert.

    Es gibt ne Anleitung, wie man eigene Inserttags aufsetzen kann, ist aber weitaus komplizierter als die paar Zeilen PHP.

    Es gibt noch ne Erweiterung [boxes], mit dieser kannst du Ähnliches umsetzen.
    https://contao.org/de/erweiterungsliste/view/boxes.html
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  6. #6
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard

    Habe jetzt CONTAO- Tags gefunden, welche in einem anderen Projekt Inhalte steuern:

    {{iflng::de}}{{insert_article::9}}{{iflng::en}}{{i nsert_article::178}}


    Ich bräuchte also darauf basierend solch ein Konstrukt

    {{seite::start}}{{insert_article::7}}{{seite::impr essum}}{{insert_article::8}}


    Die boxes- Erweiterung habe ich noch nicht getestet, da diese NICHT für CONTAO 3.5.27 freigegeben ist... .

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

    Support Contao

  8. #8
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard

    Es würde mir auch schon helfen, wenn ich weiß, WIE in CONTAO der GET- Parameter erfasst wird.

    Also.... welche PHP-Variable erhält man beim click auf kontakt.html ?

    $_GET['p']= 'kontakt'

  9. #9
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Mach es so, wie ich oben erklärt habe. Da gibt es keine GET-Parameter wenn du eine Seite aufrufst.

    Um nochmal auf deine ursprüngliche Frage zurück zu kommen.
    Zitat Zitat von mv-soft Beitrag anzeigen
    ich möchte ein MODUL erstellen, welches je nach ausgewählter Website in der Fußzeile unterschiedliche Inhaltselemente anzeigt:
    Das macht man eigentlich so, dass man auf der Seite, z.B. kontakt.html einen Artikel erstellt, welchen du dann im Footer ausgibst.

    "Layoutbereich und Suchbegriffe" > "Anzeigen in" > "Fußzeile".

    Damit erstellst du zwar kein Modul, aber du erreichst das Gleiche. Wenn du unbedingt ein Modul möchtest, dann mach es so, wie oben erklärt, das ist einfacher als eigene Inserttags dafür zu programmieren. Oder benutze [boxes], das funktioniert bestimmt noch. Ist bis Contao 3.4. Man könnte den Markus ja auch mal fragen, ob er das noch weiter pflegt.
    https://github.com/markusmilkereit/contao-boxes
    https://contao.org/de/erweiterungsliste/view/boxes.html
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  10. #10
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wie du an die Daten der aktuellen Seite rankommst ist ja oben mit drin.
    PHP-Code:
    global $objPage;
    echo 
    $objPage->id;
    echo 
    $objPage->alias
    Oder mit einem PageModel.

    GET-Parameter würde man in Contao auch sowieso anders holen.
    PHP-Code:
    echo \Input::get('p'); // falls es 'p' geben sollte. Gibt es in Contao aber nicht. 
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  11. #11
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard

    Hallo und vielen Dank, jetzt bin ich einen Schritt weiter.


    dieses Modul (eigener HTML-Code) steht in der Fußzeile:

    ********************************
    <div id='spruch'>{{file::test.php}}</div>
    ********************************


    In der Datei test.php steht folgendes

    ********************************
    <?php $intSeiteNummmer= $objPage->id;?>

    <?php if($intSeiteNummmer==3): ?>
    {{insert_content::30}}
    <?php endif; ?>
    ********************************


    Leider wird aber auf der Website in der Fußzeile NICHT der eigentliche Inhalt angezeigt, sondern nur der Insert- Tag:

    ********************************
    {{insert_content::30}}
    ********************************



    Was habe ich falsch gemacht?

  12. #12
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    796
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    HTML Merger2 - schon was älter aber ...

    Komfortable kann diese Aufgabe der merger2 erledigen.

    https://github.com/contao-community-alliance/merger2

    https://contao.org/de/erweiterungsli...000089.de.html

    Erklär Video von Tril dazu auf YT:

    https://www.youtube.com/watch?v=Rt7lxS-rsNA

    VG
    Oliver

  13. #13
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du brauchst hier im Forum keine Sternchen es steht ein Wrapper für HTML, PHP und Code im Allgemeinen zur Verfügung.

    Warum der Inserttag in einer mit {{file::*}} inkludierten Datei nicht aufgelöst wird weiß ich jetzt nicht. Aber das brauchst du ja auch nicht. In PHP-Dateien brauchst du keine Inserttags, da arbeitet man mit PHP. CEs holst du mit \Controller::getContentElement([ID]) .

    Dann hast du das "global $objPage" vergessen.

    Schau dir nochmal mein Beispiel hier bei #2 an. Da ist eigentlich alles drin, was du brauchst. Ich vermute, dass du den Code einfach nicht verstanden hast, oder nicht gelesen hast.

    Ich habe ein Array aufgebaut mit page-id als Key und element-id als Value. Siehe auch den Kommentar darüber. Also auf Seite 42 soll CE 11 ausgegeben werden.

    Dann schaue ich mit dem IF, ob die ID der aktuellen Seite in dem Array als Key vorhanden ist. Wenn ja, dann hole ich das Inhaltselement, welches diesem Key (42) zugeordnet ist (11).
    Geändert von Andreas (18.05.2017 um 12:56 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  14. #14
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    622

    Standard

    Nach langen Testzeiten habe ich nunmehr die Erweiterung Content-Boxes im Einsatz und damit ist alles wie gewünscht umgesetzt.

    Nochmals vielen Dank für die vielen Hinweise und Lösungsansätze.


    J. Heinrich
    mv-soft Ltd.

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
  •