Contao-Camp 2024
Ergebnis 1 bis 24 von 24

Thema: Seitenlayout ändern wenn Seite 2 der Nachrichtenliste angezeigt wird

  1. #1
    Contao-Nutzer
    Registriert seit
    05.10.2010.
    Ort
    Bedburg-Hau
    Beiträge
    67

    Standard Seitenlayout ändern wenn Seite 2 der Nachrichtenliste angezeigt wird

    Hallo,

    auf der Startseite meiner Website gibt es zwei Nachrichtenlisten. Die erste hat nur 1 Element und zeigt die neuste Nachricht an. Die andere zeigt die restlichen Nachrichten an. Diese besitzt auch eine Pagination. Nun möchte ich, dass wenn Seite 2, oder folgende, der Nachrichtenliste angezeigt wird, die erste Nachrichtenliste nicht mehr angezeigt wird. Logisch und sinnvollsten wäre für mich ein eigenes Seitenlayout für Seite 2 bis xx. Leider habe ich keine Idee wo ich da ansetzen muss und wie ich dies umsetzen kann.
    LG wik

  2. #2
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Könnte man da nicht einfach mit JS die Anzeige per CSS auf :invisible setzen?

    Bei Klick auf den Pagination-Link zusätzlich noch die Eigenschaft ändern lassen. Ist jetzt nur so eine erste Idee...

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

    Standard

    Zitat Zitat von wik Beitrag anzeigen
    Logisch und sinnvollsten wäre für mich ein eigenes Seitenlayout für Seite 2 bis xx. Leider habe ich keine Idee wo ich da ansetzen muss und wie ich dies umsetzen kann.
    Warum ein eigenes Seitenlayout? Du hast die Module ja wahrscheinlich per Inhaltselement eingebunden und nicht über das Seitenlayout, oder?

    Unter der Annahme, dass du Inhaltselemente verwendest, könntest du folgendes machen:

    1. Erzeuge ein neues Template im /templates Verzeichnis mit dem Namen ce_html_recent_news.html5.
    2. Füge folgenden Inhalt ein:
      PHP-Code:
      <?php

      $page 
      = \Input::get('page_nXX');
      if (!
      $page || $page <= 1)
      {
          echo \
      Controller::getFrontendModule(YY);
      }
    3. Ersetze XX mit der ID des Nachrichtenlisten Moduls, dass die Pagination macht.
    4. Ersetze YY mit der ID des Nachrichtenlisten Moduls, dass nur die neueste News anzeigt.
    5. Editiere das bestehende Inhaltselement der Nachrichtenliste, dass nur die neueste News anzeigt, und stelle den Typ auf HTML.
    6. Füge im Feld HTML-Code einen beliebigen HTML Kommentar ein, bspw.
      HTML-Code:
      <!-- recent news -->
    7. Wähle unter Template-Einstellungen » Individuelles Template das vorhin erstellte Template aus.
    8. Speichern und fertig.
    Geändert von Spooky (02.10.2019 um 12:54 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    05.10.2010.
    Ort
    Bedburg-Hau
    Beiträge
    67

    Daumen hoch

    Vielen Dank Spooky, es klappt wunderbar. Es ist auch eine super einfach zu verstehende Anleitung.

    An ein eigenes Seitenlayout habe ich übrigens gedacht, weil es auch noch andere Inhaltselemente bzw. Module gibt die (nicht) angezeigt werden sollen. Dies hatte ich in meiner Frage verschwiegen. Aber dies lässt sich ja nach dem gleichen Prinzip, wie Du es aufgezeigt hast, lösen.
    LG wik

  5. #5
    Contao-Fan
    Registriert seit
    16.05.2014.
    Beiträge
    295

    Standard

    Wenn sich sehr viel ändert könntest du auch statt der pagination einen Link setzen "Weitere Nachrichten", "mehr...", o.ä.
    Auf der folgenden Seite kann dann alles so eingebunden werden wie du es brauchst.
    Wenn sich nur durch blättern in der Paginationen jedesmal die Seite komplett ändert könnte das sonst auch verwirrend sein.

  6. #6
    Contao-Nutzer
    Registriert seit
    05.10.2010.
    Ort
    Bedburg-Hau
    Beiträge
    67

    Standard

    Diese Möglichkeit hatte ich auch schon in Betracht gezogen, wenn es keine andere Lösung gegeben hätte. So wie von Spooky beschrieben passt es schon sehr gut. Das "Grundgerüst" der Seite bleibt schon erhalten, es sollen halt nur noch 3 nebeneinander liegende Elemente nicht angezeigt werden. Gesehen habe ich dies übrigens bei chessbase.de.
    LG wik

  7. #7
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Alternativ wäre eine Änderung des Layout via https://docs.contao.org/books/api/extensions/hooks/getPageLayout.html sicherllich auch möglich gewesen. Also falls man etwas mehr Umstellen möchte

  8. #8
    Contao-Fan Avatar von Marchie
    Registriert seit
    12.01.2012.
    Ort
    Schwaikheim
    Beiträge
    303

    Standard

    Darf ich dieses Thema nochmals aufrollen. Ich habe ein ganz ähnliches Anliegen, aber da ich nicht grade der PHP-Crack bin, kann ich es mit der Anleitung oben nicht lösen.

    Also ich habe ebenfalls eine Nachrichtenliste auf der Startseite eine Website. Da steht dann natürlich zuerst die erste Headline und eine Einleitungstext. Darunter kommt dann die Nachrichtenliste mit Paginierung. Nun hätte es Kunde natürlich gerne so, dass ab Seite 2 Headline und Einleitungstext nicht mehr angezeigt wird. Wie kann man das lösen, wenn es "normale" Artikel sind die quasi ab Seite 2 ausgeblendet werden?

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

    Standard

    Was fehlt dir in der Anleitung?

  10. #10
    Contao-Fan Avatar von Marchie
    Registriert seit
    12.01.2012.
    Ort
    Schwaikheim
    Beiträge
    303

    Standard

    mir fehlt der Transfer wie ich das auf einen Artikel anwenden kann. Es ist ja kein Modul ....

    echo \Controller::getFrontendModule(YY);

    geht doch sicher nicht bei einem Artikel sondern eben nur bei einem Modul, oder steht mir einer auf der Leitung?

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

    Standard

    Headline und Einleitungstext müsstest du dann in einen separaten Artikel verfrachten, der Prinzipiell dann nirgends ausgegeben wird.

    Für Artikel kannst du
    PHP-Code:
    echo \Controller::getArticle(); 
    verwenden. Du kannst aber auch mit
    PHP-Code:
    echo \Controller::getContentElement();
    echo \
    Controller::getContentElement(); 
    direkt Inhaltselemente ausgeben.
    Geändert von Spooky (19.04.2017 um 21:47 Uhr) Grund: fixed typo

  12. #12
    Contao-Fan Avatar von Marchie
    Registriert seit
    12.01.2012.
    Ort
    Schwaikheim
    Beiträge
    303

    Frage

    Hallo Spooky,

    du beschreibst das so toll und geduldig und jetzt habe ich das endlich auch versucht nachzubauen, aber leider klappt es nicht. Das wird auf der Seite angeziegt:

    PHP-Code:
    Fatal error: Class 'Conroller' not found in /html/contao/templates/ce_recent_text_home.html5 on line 6 
    Ich habe das gemacht:

    1. neues Template im /templates Verzeichnis mit dem Namen ce_recent_text_home.html5 angelegt mit
    2. diesem PHP-Code:
    PHP-Code:
     <?php

    $page 
    = \Input::get('page_n11');
    if (!
    $page || $page <= 1)
    {
        echo \
    Controller::getArticle(16);
    }
    3. Die ID des Nachrichtenlisten Moduls, das die Pagination macht ist 11.
    4. Die ID des Artikels, welcher nur auf der ersten Seite angezeigt werden soll ist 16.
    5. Das Inhaltselement in Artikel ID16 ist ein Textelement. In diesem wechsle ich die Ansicht auf HTML und schreibe diese Zeile Kommentar ganz oben rein:
    HTML-Code:
    <!-- recent text home -->
    6. Unter Template-Einstellungen » Individuelles Template habe ich das vorhin erstellte Template ausgewählt.

    Was ist dabei falsch? Ach und jetzt bekomme ich einen Fehler 500 :-(

    Kannst du mir auf die Sprünge helfen??

  13. #13
    AG Pressearbeit
    Community-Moderator
    Buchautor 'Contao für Webdesigner'
    Avatar von planepix
    Registriert seit
    05.06.2009.
    Ort
    Stuttgart
    Beiträge
    6.464
    Partner-ID
    107
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ahoi,
    könnte es sein das das nicht Conroller heisst sondern Controller?
    Gehts dann?
    ---------------------------------
    Beste Grüße planepix
    Contao für Webdesigner (Website), Twitter: @contaowebdesign
    weitzeldesign
    Contao-Sprechstunde
    Contao Schulungen: https://www.weitzeldesign.com/cms-co...chulungen.html
    Contao Jahrbuch: www.contao-jahrbuch.de
    Contao Agenturtag: www.contao-agenturtag.de
    Contao Stammtisch Stuttgart: www.contao-stammtisch-stuttgart.de
    Contao 4 Erfahrungen als Gitbook: https://app.gitbook.com/@planepix/s/...-mit-contao-4/
    Contao 4 & Manager Hosterhinweise: https://github.com/contao/contao-manager/wiki

    Schon wieder ein Update?
    Glücklich sind die, die den Wert erkennen – und wertschätzen.
    „Muss man machen wie beim Zahnarzt. Der bestraft einen auch mit hohen Rechnungen wenn man die Pflege vernachlässigt.”

  14. #14
    Contao-Fan Avatar von Marchie
    Registriert seit
    12.01.2012.
    Ort
    Schwaikheim
    Beiträge
    303

    Standard

    Stimmt in der Fehlermeldung wird conroller ausgegeben. Das hatte ich oben von Spooky kopiert ;-)

    Aber das kann es nicht sein, denn im Template steht jetzt schon exakt das richtige drin. Siehe oben.

    Nach dieser Änderung kommt auch nicht mehr die Fehlermeldung aber dafür ein Fehler 500.

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

    Standard

    In welchen Artikel hast du dieses Template nun hinzugefügt?

  16. #16
    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

    Das ist doch irgendwie klar. Wenn du getArticle(16) innerhalb von Artikel 16 aufrufst, dann müsste sich der Artikel ja immer wieder selbst aufrufen.
    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

  17. #17
    Contao-Fan Avatar von Marchie
    Registriert seit
    12.01.2012.
    Ort
    Schwaikheim
    Beiträge
    303

    Standard

    Puhh, ich habe inzwischen schon alles möglich ausprobiert. Irgendwie steht mir grade tierisch einer auf der Leitung.

    Habe es mit getArticle und getConentElement gemacht. Und ja ist klar, wenn es im gleichen Artikel steht sucht er ja ständig nach sich selbst. Daher Fehler 500. Mach ich es separat als HTML-Element rein steht die Einleitung auf der ersten Seite zweimal, auf den Folgeseiten einmal. Also Controller funktioniert. Aber das Ding das durchgehend gezeigt wird muss ja ausgeblendet sein. Da hab ich wohl einen Knoten im Hirn. Wer mal schauen will:

    http://contao.p385890.webspaceconfig.de

    es geht um die Nachrichten auf der Startseite und den Einleitungstext ... hier screenshots aus dem BE (jetzt gelöst mit getContentElement)
    artikel.PNG
    html_snippet.PNG

  18. #18
    Contao-Nutzer Avatar von miniA4kuser
    Registriert seit
    14.11.2013.
    Beiträge
    130

    Standard

    Soweit ich den Vorschlag verstanden habe, darf der Artikel dann ja nicht auf der selben Seite sein, sondern sollte auf einer "versteckten" Seite sein. Und mittles deinem PHP-Snippet in deinem Template holst du dir eben diesen "versteckten" Artikel und gibst in über dein Template aus.
    Tippfehler unterliegen nicht dem Copyright und können frei weitergegeben werden.

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

    Standard

    @Marchie: siehe diesen Post von mir: damit das funktioniert muss der Artikel, den du in diesem Template inkludieren willst, natürlich irgendwo anders abgelegt sein.

  20. #20
    Contao-Fan Avatar von Marchie
    Registriert seit
    12.01.2012.
    Ort
    Schwaikheim
    Beiträge
    303

    Standard

    oh wow, ja ihr habt beide Recht. So geht es!!! Und hätte ich mal die Anleitung von Spooky sauber und in Ruhe gelesen, dann wär's ganz einfach und schnell gegangen. Aber so isses wenn man ständig an vielen Jobs gleichzeitig arbeitet. Am Ende braucht man für alles länger.

    Vielen Dank für eure Geduld :-)

  21. #21
    Contao-Fan Avatar von dackelchen
    Registriert seit
    24.05.2011.
    Ort
    Kiel
    Beiträge
    672
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Warum ein eigenes Seitenlayout? Du hast die Module ja wahrscheinlich per Inhaltselement eingebunden und nicht über das Seitenlayout, oder?

    Unter der Annahme, dass du Inhaltselemente verwendest, könntest du folgendes machen:

    1. Erzeuge ein neues Template im /templates Verzeichnis mit dem Namen ce_recent_news.html5.
    2. Füge folgenden Inhalt ein:
      PHP-Code:
      <?php

      $page 
      = \Input::get('page_nXX');
      if (!
      $page || $page <= 1)
      {
          echo \
      Controller::getFrontendModule(YY);
      }
    3. Ersetze XX mit der ID des Nachrichtenlisten Moduls, dass die Pagination macht.
    4. Ersetze YY mit der ID des Nachrichtenlisten Moduls, dass nur die neueste News anzeigt.
    5. Editiere das bestehende Inhaltselement der Nachrichtenliste, dass nur die neueste News anzeigt, und stelle den Typ auf HTML.
    6. Füge im Feld HTML-Code einen beliebigen HTML Kommentar ein, bspw.
      HTML-Code:
      <!-- recent news -->
    7. Wähle unter Template-Einstellungen » Individuelles Template das vorhin erstellte Template aus.
    8. Speichern und fertig.
    Moin, ich hole den Thread noch einmal hoch, weil ich bei Punkt 7 kein Template auswählen kann, und zwar in Contao 4.8.3.

    Mein Ziel ist das von Marcie, ich habe mehrere Newsarchive, die jeweils einen Einleitungstext bekommen sollen, der aber nur auf der ersten Seite der Buchnavigation erscheinen soll.

    Ich habe ein Template angelegt: ce_news:intro.html5
    Code:
      <?php
    $page = \Input::get('page_n206');
    if (!$page || $page <= 1)
    {
    echo \Controller::getContentElement(6419)
    }
    Dabei ist 206 das Modul in der die Paginierung stattfindet

    6419 nist das Contentelement, das nur auf der ersten Seite der Paginierung eingebunden werden soll (mein Introtext). Dieses liegt auf in einem Artikel auf meiner versteckten Seite „Textbausteine“.

    Das CE habe ich als Modul (HTML) auf der Newsseite eingebunden.

    Das Modul mit dem Inserttag liegt jetzt auf der Newssseite.

    Wenn ich jetzt das Inhaltselement (auf der Newsseeite) von Typ Modul zum Typ HTML ändere, kann ich kein Template auswählen. Das Auswahlfenster bleibt leer. (Bei Spooky ist das Punkt 7)

    Ausschließen kann ich, dass der Templatepfad falsch ist, denn andere individuelle Teplates auf der Seite funktionieren.
    Grüße Edgar
    Dackelalarm

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

    Standard

    Das Template muss nun ce_html_recent_news.html5 heißen. Habe das angepasst.

  23. #23
    Contao-Fan Avatar von dackelchen
    Registriert seit
    24.05.2011.
    Ort
    Kiel
    Beiträge
    672
    User beschenken
    Wunschliste

    Standard

    Dankeschön Spooky, funktionirt super. Muss ich dann jetzt bei eigenen Templates den Txp des CE immer im Templatenamen haben, damit es gefunden wird?
    Grüße Edgar
    Dackelalarm

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

    Standard

    Ab Contao 4, ja

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
  •