-
Artikelliste als Menü
Moin!
Wie's scheint, hab ich jetzt mein CMS für meine private Site gefunden. Nur mit dem Anpassen ist es für einen Einsteiger nicht immer ganz einfach.
Mir geht es um ein angepasstes Menü. Ich habe viele Artikel zu wenigen Themen. Und ich möchte zwei Menüs auf der Seite haben: Hauptthemen und Artikellliste. Der Modultyp "Artikelliste" wäre perfekt, wenn der generierte Link nicht eine Marke wäre, sondern den Artikel drekt öffnen würde. mod_article_list.tpl und ModuleArticleList.php hab ich mir schon angesehen. Ich glaube, dass das $articles[ ] Array aus dem Modul schon die richtigen Infos liefert, aber wie passe ich das Template an, um den gleichen Link zu erhalten, wie bei den Teasern unter dem "Weiterlesen..."?
Kann mir jemand sagen, was ich wo wie anpassen muss?
Schoma vielen Dank für eure Tips.
VG, Klaus-Peter
-
Hallo kpk,
willkommen im TYPOlight Forum.
Schau dir die Insert-Tags an https://contao.org/typolight-insert-tags.html damit kannst du dir im mod_article_list.php den Link zusammenbasteln. {{article::*}}
Aber das wird dir ja nix nützen, denn ein Artikel ist ja immer auf einer Seite, du musst also immer die Seite mit öffnen. Deswegen sind ja auch die Anker, welche dann die einzelnen Artikel, welche sich auf einer Seite befinden, anspringen, vorhanden.
Leider gibt es wohl kein Modul, womit man die Artikel aller Seiten in einem Menü auflisten kann. Ich bastel da grad an so einer Liste, welche ich mit dem Modul "Auflistung" zusammenbaue, habe aber Probleme mit der Separation verschiedensprachiger Artikel.
Andreas
-
Hallo Andreas,
Danke für die schnelle Antwort.
Die Insert-Tags hatte ich zwar schon gefunden, aber wohl nicht ausreichend studiert. Ich werde das mal angehen.
Es ist tatsächlich so, dass bei mir jeder Bereich eine eigene Seite mit vielen Artikeln ist und sein eigenes Artikel-Menü bekommen soll. Es macht also nichts, dass mit einem Link auf einen Artikel die dazugehörige Seite geöffnet wird (immer davon ausgehend, dass ich dich richtig verstanden habe).
Die Alternative wäre, jeden Artikel in eine eigene Seite einzubauen.
Sieh dir meine Seite kostian.net an, dann weist du, was ich meine.
VG,
Klaus-Peter
-
Oh man, jetzt versteh ich fast gar nix mehr. Ich wusste ja gar nicht, dass das überhaupt geht, mehrere Artikel auf einer Seite und dann trotzdem pro Artikel eine Seite anzeigen. Das steht selbst im offiziellen Handbuch nicht drin. Die Raute im href ist nur ein Platzhalter, die eigentliche Aktion passiert mit Javascript. Wird da Content mit Ajax nachgeladen? Sieht fast so aus. Dann funktioniert das auf keinen Fall, was ich da vorgeschlagen hatte, denn ich meine (ohne das jetzt ausprobiert zu haben) ein Link auf einen Artikel öffnet die Seite auf welcher der Artikel sich befindet. Dann würdest du ja aber alle anderen 20 Artikel der Seite auch sehen.
Andreas
-
Och nö, ich hab mich falsch ausgefrückt.
Guck dir auf meiner Site www.kostian.net die Papierflieger an. Sowas will ich haben: Man hat auf der Seite einen einleitenden Text (Hauptartikel) und Teaser zu allen Artikeln. Statt auf "Weiterlesen" zu klicken, kann man auch aus dem Zusatzmenü direkt den entsprechenden Artikel öffnen. Nix kompliziertes, nur mit Typolight umsetzen kann ich noch nicht.
VG,
Klaus-Peter
-
Versteh ich jetzt nicht, du hast es auf dieser Seite doch umgesetzt!?
-
-
Tatsächlich ist das alles "zu Fuß" erstellt.
Der Content jedes Bereichs steht in einer einzigen XML-Datei. Daraus werden auch die Menü-Einträge und die Teaser generiert. Teilweise steht auch CSS im Code mit drinn. Aus heutiger Sicht ist das Grausam. Ich hab mir Joomla angesehen, mit Contenido getestet, sogar Typo3 hatte ich auf'm Rechner. Typolight ist das erste CMS, dass für mich passt. Für einen Relaunch meiner Site bietet sich der Wechsel an.
VG,
Klaus-Peter
-
Hallo Klaus-Peter,
ich hab mir das mit den Inserttags nochmal angesehen. Tatsächlich scheint es so zu sein, dass wenn du mit {{article::*}} einen Link auf einen Artikel generierst, dieser Artikel innerhalb einer neuen Seite geöffnet wird. Und zwar alleine, das heißt, wenn auf dieser Seite 20 Artikel wären, würde nur dieser eine angezeigt werden. Das kompl. Layout bleibt dabei erhalten. Der Name der Seite wird aus der Artikelbezeichnung generiert. Du müsstest dein Ziel also mit dem modifizieren von z.B. mod_article_list.tpl und dem Inserttag {{article::*}} umsetzen können.
Andreas
-
So, das war ja gar nicht so schwer ;-)
Wer's auch haben will, geht wie folgt vor:
- Datei: system/modules/frontend/template/mod_article_list.tpl
- Ändern der Zeile
Code:
<li><a href="<?php echo $this->request; ?>#<?php echo $article['id']; ?>" title="<?php echo $article['title']; ?>"><?php echo $article['link']; ?></a></li>
in
Code:
<li>{{article::<?php echo $article['id']; ?>}}</li>
Dann noch ein Modul vom Typ "Artikelliste" erstellen und an gewünschter Stelle im Seitenlayout einfügen.
Jetzt kann es vorkommen, dass man zwar die Artikelliste in dieser Form will, aber in der Hauptspallte keine Teaser auftauchen sollen (von den Artikeln ganz zu schweigen). Kein Problem. Das Geniale an Typolight ist, dass miit CSS fast alles geht:
Man fügt der Seite eine eigene CSS-Datei hinzu (das ist bei mir sowieso der Fall). Diese benötig dann noch die Zeilen
Code:
.mod_article > h1{display:none;}
.teaser {display: none;}
In dem Artikel muss das Anzeigen des Tesaers aktiviert sein, da sonst der Artikel angezeigt wird.
Das muss natürlich u.U. von Fall zu Fall angepasst werden. Im Quelltext ist der Titel und der Teaser zwar noch vorhanden, aber der Browser stellt ihn halt nicht dar.
VG,
Klaus-Peter
-
Du kannst auch dem Modul eine Klasse mitgeben und diese in dem Template abfragen - wenn Klasse = XXX dann dies, sonst das. Dann wird der nicht benötigte Code erst gar nicht generiert.
Andreas
-
Das wäre natürlich perfekt.
Kannst du das bitte mal etwas genauer erklären?
Die Teaser stehen außerhalb des Moduls, welches die Artikelliste erzeugt.
Jeder Teaser ist geklammert mit der Klasse "mod_article", aber ich finde keinen entsprechenden Modultyp im Backend.
Sonst habe ich kein Modul, dem ich eine CSS-Klasse mitgeben kann.
VG,
Klaus-Peter
-
Ich kann nicht 100%ig nachvollziehen, was du da machen möchtest, aber du kannst sowohl dem Modul Artikelliste, als auch dem Artikel eine Klasse mitgeben. Dann musst du herausfinden, welches Template für die Ausgabe zuständig ist, die du unterdrücken möchtest. Evtl. mod_article_teaser.tpl. Die Abfrage in dem Template kannst du so machen:
PHP-Code:
<?php if (strpos($this->class,'meine_klasse') !== false): ?>
Andreas
-
Nachdem ich erst krakelen wollte "das geht doch gar nicht!", hab ich's dann doch noch kapiert.
Im Template mod_article_teaser.tpl die Abfrage nach einer CSS-Klasse eingebaut, und schon klappts.
Leider musste ich auch noch ca 70 Artikel anfassen, um die CSS-Klasse einzufügen ;-(
Vielen Dank für die Unterstützung!
VG,
Klaus-Peter