Seite 1 von 1

cms_teaser Kategorie anzeigen

Verfasst: So 26. Nov 2017, 12:27
von peanut
Hallo zusammen

Ich bräuchte eine kleine Hilfe im Bezug auf das standard Modul cms_teaser. Die Frage die ich mir gerade stelle ist wie kann man die Kategorie des Artikels / der Artikel automatisch mitanzeigen ? Also nachdem man die Artikel der entsprechenden Kategorie ausgesucht hat. Da man ja nur eine Kategorie auswählen kann sollte das ja theoretisch möglich sein ? Evtl. einfach {Categorie} ins HTML Template ? hmmm ...

Vielen Dank im voraus für einen kleinen Tipp.
Contenido 4.9

Re: cms_teaser Kategorie anzeigen

Verfasst: Mo 27. Nov 2017, 09:04
von Faar
Das geht meines Wissens mit diesem Modul nicht.
Aber ich würde mal das Sitemap-HTML-Modul mal genauer ansehen, das scheints nicht nur Kategorien anzeigen lassen kann, sondern auch Artikel.
Das wäre vielleicht ein Weg von der anderen Richtung her.

Re: cms_teaser Kategorie anzeigen

Verfasst: Mo 27. Nov 2017, 13:29
von rethus
Schau dir die Funktion "_fillTeaserTemplateEntry" in der Datei contenido/classes/content_types/class.content.type.teaser.php an und halte dort ausschau nach "$template->set". Dort findest du die Platzhalter die verfügbar sind.
Natürlich kannst du nun hier die Teaser-Funktion nach belieben aufbohren und z.B. um eine von dir gewünschte Funktion ersetzen, welche die aktuelle Kategorie ausliest, und diese dann als weiteren Patlzhalter dort in das Ausgabe-Modul ausgibt.

Bei mir in 4.9.4 (das ich gerade offen habe) ist es so ab Zeile 440:

Code: Alles auswählen

if(empty($title) && !empty($this->_settings['teaser_title'])) $title=$this->_settings['teaser_title'];  // <-- hinzugefügt
            $template->set('d', 'TITLE', $title);
            $template->set('d', 'TEXT', $text);

            $template->set('d', 'IDART', $idArt);
            $template->set('d', 'ART_URL', 'front_content.php?idart=' . $idArt);
            $template->set('d', 'PUBLISHED', $published);
            $template->set('d', 'PUBLISHED_MANUAL', $date);

            if ($date != '') {
                $template->set('d', 'PUBLISHED_COMBINED', $date);
            } else {
                $template->set('d', 'PUBLISHED_COMBINED', $published);
            }
            foreach (self::$_translations as $translationString) {
                $template->set('d', $translationString, mi18n($translationString));
            }

            if ($this->iteration == 0) {
                $template->set('d', 'ACTIVE', 'active');
            } else {
                $template->set('d', 'ACTIVE', '');
            }
Die Templates für den Teaser findest du unter /cms/templates/cms_teaser_xxx.html, wo du dann natürlich deinen neuen Platzhalter in entsprechendes Modul mit einpflegen solltest.

Ich hab z..B. den Teaser dort schon ein paar mal für eigene Zwecke erweitert (download-teaser, video-teaser, html-snippet usw.). Läuft solide.

Nachteil ist, das es eine Anpassung im Core-Code ist, und du nach einem Upgrade daran denken musst, diese Anpassungen manuell zu übernehmen bzw. zu migrieren.

Re: cms_teaser Kategorie anzeigen

Verfasst: Mo 27. Nov 2017, 21:27
von Oldperl
Servus,
rethus hat geschrieben: Mo 27. Nov 2017, 13:29Nachteil ist, das es eine Anpassung im Core-Code ist, und du nach einem Upgrade daran denken musst, diese Anpassungen manuell zu übernehmen bzw. zu migrieren.
Ja genau, Quick&Dirty mal schnell in den Core-Code eingebaut. Am Besten noch ohne irgendeine Dokumentation. Das freut den Kollegen der dann irgendwann mal die Seiten übernimmt, ein Update/Upgrade machen soll und danach dann auf die Suche geht um die vom Kunden bemängelten Fehler - "das war aber vorher anders" - zu beheben. :motz:
Kann gar nicht sagen wie viele Stunden ich inzwischen bei solchen Aktionen verschwendet habe. :roll:

Also, Frank (Faar) hat Recht, dass es mit dem Standard-Modul nicht geht. Von Änderungen am Core rate ich ab, außer es ist die eigene Seite.
Alternativ dazu würde ich ein Modul schreiben, in welchem die CMS-TEASER Klasse direkt Instantiiert wird. So kommt man dann auch an alle Klassen-Internas, einschließlich der Konfiguration, und kann diese entsprechend Auswerten und über die Kategorie-Klassen auch Infos zur Kategorie holen.
Leitet man eine eigene Klasse ab, so kann man auch Methoden, wie beispielsweise die mit der Template-Generierung, überschreiben und noch eigene zusätzliche Manipulationen einbauen.
Das ist, alles in allem, sicherlich aufwendiger, aber damit hat man dann eine Update-sichere Lösung.

Gruß aus Franken

Ortwin