Ergebnis 1 bis 11 von 11

Thema: Nachrichtenliste und letzte Nachricht auf einer Seite anzeigen?

  1. #1
    Contao-Nutzer
    Registriert seit
    15.02.2014.
    Beiträge
    196

    Standard Nachrichtenliste und letzte Nachricht auf einer Seite anzeigen?

    Hallo!
    Trotz Suche habe ich leider noch nicht die Lösung für meine Darstellung gefunden und bitte Euch daher um Unterstützung.
    Ich habe ein 2-spaltiges Design (1/3 linke Spalte und 2/3 Hauptspalte) und habe im linken Bereich die vorhandenen Nachrichten (Nachrichtenliste) und im rechten Bereich die einzelnen Inhalte (Nachritenleser) dargestellt.
    Ich möchte es so lösen, dass die letzte Nachricht sofort im rechten Bereich angezeigt wird, sobald dies Seite -Aktuelles- aus dem Menü angewählt wird und nicht erst dann, wenn ich eine Nachricht anwähle.
    Derzeit wird der rechte/Hauptspalte-Bereich 'leer' angezeigt und erst befüllt, wenn ich eine Nachricht anklicke.
    Hier noch zwei Bilder zum Verständnis:
    1) Die Seite beim Aufruf des Menüpunktes -Aktuelles- : Anwahl der Seite -Akuelles-.JPG
    2) Die Seite beim AUfruf der Nachricht -Projekte 3. Quartal 2017- : Anwahl der Nachricht -Projekte 3. Quartal 2017-.JPG

    Ich hoffe meine Beschreibung ist verständlich und bin gespannt auf Eure Lösungsvorschläge.
    Vielen Dank schon mal im voraus.
    Schöne Grüße
    Bernhard

  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

    Hat mich etwas Mühe gekostet, aber das Einfachste was ich finden konnte ist das hier. Füge diesen Code oben in dein Template der Newsliste ein.
    PHP-Code:
    <?php
    global $objPage;

    $readerPageAlias $objPage->alias;
    $actualPageAlias str_replace($GLOBALS['TL_CONFIG']['urlSuffix'], ''array_pop(explode('/', \Environment::get('indexFreeRequest'))));

    if(
    $actualPageAlias == $readerPageAlias)
    {
      \
    Controller::redirect($this->link);
    }
    ?>
    Die Weiterleitung erfolgt mit einem 303 https://de.wikipedia.org/wiki/HTTP-Statuscode
    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-Nutzer
    Registriert seit
    09.10.2017.
    Beiträge
    44

    Standard

    Es gibt auch noch eine andere - einfache - Lösung. Man kann sich ein separates Modul für diese eine Seite erstellen, das den jeweils letzten Nachrichten-Eintrag mit news_full anzeigt.

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

    Wenn du mit Modul ein Listenmodul meinst, das geht nicht. Das bringt z.B. das Comment-Formular nicht mit. Diese Idee hatte ich nämlich auch als erstes.

    Außerdem hättest du damit zwei unterschiedliche URLs mit dem selben Content.
    Geändert von Andreas (17.10.2017 um 18:20 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

  5. #5
    Contao-Nutzer
    Registriert seit
    09.10.2017.
    Beiträge
    44

    Standard

    Bist Du Dir sicher? Ich geh davon aus, dass ich die News list einfach per Template so abändern kann, dass alle Informationen ausgegeben werden die ich brauche. Ich muss das probieren

    Man kann immer mit link rel canonical arbeiten.
    Geändert von Glumanda (17.10.2017 um 18:34 Uhr)

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

    Ja, bin mir sicher. Das war das erste, was mir aufgefallen war. Sind ja auch zwei verschiedene Module. Da kann man sich da auch nicht drauf verlassen, dass beide die gleichen Templatevariablen ausgeben. Im Prinzip ist hier von Anfang an versäumt worden, bei den Templates eine Unterscheidung zu machen. news_list_* fürs Listenmodul und news_reader_* fürs Readermodul. Edit: D.h., dass für beide Module die gleichen Templates angezeigt werden, was eigentlich keinen Sinn macht.

    Das Formular wird im Wrapper-Modul des Readers reingebracht. mod_newsreader.
    Geändert von Andreas (17.10.2017 um 18:42 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

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

    Wenn man dann schon dabei ist, kann man auch gleich noch zwei weitere schöne Feature reinbringen.
    PHP-Code:
    if(\Environment::get('indexFreeRequest') == $this->link)
    {
      
    $this->class .= ' active';
    }

    if(
    $this->featured)
    {
      
    $this->class .= ' featured';

    HTML-Code:
    <style>
      .layout_simple.active {
        background-color: tomato;
      }
      .layout_simple.featured {
        transform: rotate(-3deg);
        margin: 1rem 0;
      }
    </style>
    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

  8. #8
    Contao-Nutzer
    Registriert seit
    15.02.2014.
    Beiträge
    196

    Standard

    WOW Es funktioniert!
    Hab zwar zuerst nicht kapiert warum ich die Änderungen im 'Newslist-Modul' machen muss, da ich ja das 'Newsreader-Modul' anzeigen möchte ... aber was soll's: es funktioniert.
    Vielen Dank Andreas!

  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

    Gerne. Schön, dass es funktioniert. Ich kommentiere nochmal ein wenig. Wäre schön, wenn du es wenigstens etwas verstehen könntest.
    PHP-Code:
    <?php
    // Um auf die Felder der aktuellen Seite zugreifen zu können.
    global $objPage;

    // Der Alias der aktuellen Seite.
    // Dieser Alias ist übrigens immer der gleiche, egal ob eine News aufgerufen wird oder nicht.
    // Auch wenn in der URL etwas anderes steht. Dieser Alias ist der Alias der Seite mit der Newslist.
    // z.B.
    // newslist-page.html         = newslist-page
    // newslist-page/my-news.html = newslist-page
    $readerPageAlias $objPage->alias;

    // Den nächsten Alias gibt es nicht in der Seitenstruktur oder der DB.
    // Er wird ermittelt aus der aktuellen URL.
    // z.B.
    // newslist-page.html         = newslist-page
    // newslist-page/my-news.html = my-news
    $actualPageAlias str_replace($GLOBALS['TL_CONFIG']['urlSuffix'], ''array_pop(explode('/', \Environment::get('indexFreeRequest'))));

    // Jetzt kann der Alias der Seite, welcher immer gleich ist, mit dem aus der URL ermittelten Alias verglichen werden.
    // Sind diese beiden identisch, heißt das, es wurde noch keine News aufgerufen.
    // In dem Fall wird auf die URL weitergeleitet, welche die News anzeigt.
    // Das ist die gleiche URL, welche auch für den more-link benutzt wird.
    if($actualPageAlias == $readerPageAlias)
    {
      \
    Controller::redirect($this->link);
    }

    // ps Das Newslist-Template wird intern in einem Loop für jede News in der Liste aufgerufen.
    // Die Weiterleitung erfolgt aber bereits beim ersten Durchgang des Loops, sodass automatisch
    // auf die erste News weitergeleitet wird und die Loops für die anderen News erst gar nicht mehr
    // ausgeführt werden.
    ?>
    Ich empfehle dir auch noch die Feature einzubauen, besonders das mit dem "active". Damit kannst du, wie bei einer Navigation, die aktuell angeklickte und angezeigte News in der Liste hervorheben. Z.B. mit opacity:.5; oder was auch immer du möchtest.

    Wäre schön, wenn du einen Link zum Ergebnis zeigen könntest.

    ps Du kannst am besten den Code inkl. Kommentare in deinem Template benutzen. Es ist immer gut, seine Templateänderungen zu dokumentieren.
    Geändert von Andreas (25.10.2017 um 16:44 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

  10. #10
    Contao-Nutzer
    Registriert seit
    15.02.2014.
    Beiträge
    196

    Standard

    Hallo Andreas!
    Sorry - war jetzt einige Tage in einem anderen Projekt beschäftigt ...
    Danke für Deine Erläuterungen. Jetzt versteh ich es schon besser
    Bin leider kein gelernter 'Programmierer' sondern hab mir die Dinge über die Jahre quasi 'autodidakt' beigebracht und lerne immer wieder dazu.
    Deshalb finde ich es toll, dass Du Dir die Zeit nimmst und es auch erklärst!
    Ich möchte natürlich auch noch den 'Design-Block' ausprobieren.
    Der PHP-Code kommt ja wahrscheinlich einfach im Anschluß an den ersten Teil angehängt oder?
    Wo muss ich den HTML-Teil definieren bzw. reinschreiben?

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

    Zitat Zitat von bteppan Beitrag anzeigen
    Wo muss ich den HTML-Teil definieren bzw. reinschreiben?
    Verstehe nicht ganz, was du meinst, aber den Code von oben kannst du einfach ganz oben in ein Listentemplate einfügen.

    Den Block mit den Feature setzt du auch in diesen PHP-Wrapper ans Ende, der brauch ja gar nicht erst verarbeitet zu werden, wenn eine Weiterleitung erfolgt.
    PHP-Code:
    <?php
    // Block für die Weiterleitung

    // Block für die Feature
    ?>

    Code von original oder angepasstem Template kommt hier.
    Edit: Achso, meinst du mit HTML-Teil das CSS (<style>)? Das CSS hat damit nichts zu tun. CSS schreibst du ganz normal in deine CSS-Dateien. Zuerst mit den Browser Devtools (F12) ausprobieren und wenn du ein schönes CSS gefunden hast, in deine CSS-Dateien schreiben.
    Geändert von Andreas (25.10.2017 um 16:41 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

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
  •