Autor im Kategorieblog und Blogeintrag unterschiedlich steuern

  • Joomla Version
    5.3.2
    PHP Version
    PHP 8.1.x
    Hoster
    Domainfactory
    Link (URL) zur Seite mit dem Problem
    https://brecht-gym.de/aktuelles/neuigkeiten

    Hallo,

    ich habe einen Menüeintrag als Kategorieblog. In dieser Übersicht sollen für jeden Eintrag folgende Infos (in dieser Reihenfolge erscheinen):

    1. Einleitungsbild
    2. Titel
    3. Introtext
    4. Weiterlesen-Button

    Wird von dir ein einzelner Eintrag aufgerufen, soll das folgende erscheinen:

    1. Beitragsbild
    2. Titel
    3. Autor + Datum
    4. vollständiger Text

    Problem

    Ich schaffe es zwar, die Beitragsinfo (Autor + Datum) für die Übersicht und die einzelnen Beiträge unterschiedlich festzulegen. Aber ich würde es gern einfacher gestalten, damit ich nicht bei jedem Blogeintrag Optionen bearbeiten muss.

    Aktuelles Vorgehen

    In den globalen Optionen > Beiträge habe ich die Darstellung von Autor + Datum aktiviert.

    Im Menüeintrag habe ich unter Optionen die Darstellung von Autor + Datum unterdrückt. Das überschreibt natürlich die globalen Optionen, soweit habe ich die Joomla-Logik zu durchdringen vermocht.

    Derzeit müsste ich manuell in jedemBeitrag die Darstellung wieder aktivieren.

    Wunsch-Workflow

    Ich würde gern ohne jeden Beitrag konfigurieren zu müssen, meine gewünschte Darstellung hinterlegen. Soweit ich das verstehe, wird aber sowohl für die Blogdarstellung als auch die einzelnen Blogbeiträge dieselbe Template-Datei html/com_content/default.php benutzt.

    Frage/Anliegen

    Daher meine Frage: Was ist zu tun? Muss ich ein alternatives Layout anlegen, das ich jedem Beitrag zuordnen muss? Benötige ich eine selbst programmierte Unterscheidung in der Template-Datei? Gibt es eine andere Option. Freue mich über eure Rückmeldungen :)

  • Zur hilfreichsten Antwort springen
  • Wie ich im Quelltext der Website gesehen habe wird das Helix-Ultimate-Template verwendet. Da dieses Template ein zusätzliches Framework verwendet, wirst du mit einem normalen Template-Override oder Layout-Override nicht zum Ziel kommen. Siehe daher z.B. auch ab #9 dort :

    Problem mit Override

    Sollen auf der Website alle Einzelbeitagsausgaben( view=article) mit Autor + Datum ausgegeben werden oder nur die Einzelbeiträge von einzelnen Beitragskategorien wie z.B. von "aktuelles/neuigkeiten" ?

  • Suche mal nach Template Overrides. Das wird deine Lösung sein.

    Kann ich derzeit noch nicht erkennen. Scheinbar steuert die eine einzelne Template-Datei (html/com_content/default.php) beide Ausgaben. Wie kann ich dann zwei unterschiedliche Darstellungen erreichen?

  • Wie ich im Quelltext der Website gesehen habe wird das Helix-Ultimate-Template verwendet. Da dieses Template ein zusätzliches Framework verwendet, wirst du mit einem normalen Template-Override oder Layout-Override nicht zum Ziel kommen. Siehe daher z.B. auch ab #9 dort :

    Problem mit Override

    Die Logik von Helix kenne ich und wende sie an diversen Stellen auch erfolgreich an. Mein Problem ist eigentlich nur, dass eine Datei zwei (für mich) verschiedene Ausgaben zu steuern scheint.

    Sollen auf der Website alle Einzelbeitagsausgaben( view=article) mit Autor + Datum ausgegeben werden oder nur die Einzelbeiträge von einzelnen Beitragskategorien wie z.B. von "aktuelles/neuigkeiten" ?

    Nur Artikel einer bestimmten Kategorie.

    Wäre es toll, wenn mich jemand noch einen Schritt weiter schubsen könnte. Ich erarbeite mich gern eigene Lösungen, nur hier sehe ich leider keinen Ansatz.

  • In meinem Linkziel aus #3 steht in #23 am ende als alternative fast schon eine denkbare Lösung die man nur etwas abändern müßte:

    ... das Template einfach kopieren per

    System -> Site Templates -> Shaper_helixultimate Details und Dateien -> Button "Template kopieren"

    Dann kannst du in der Template-Kopie die info_block.php Datei erstellen z.B.:

    /templates/shaper_helixultimate_kopie/overrides/layouts/joomla/content/info_block.php

    mit Inhalt ähnlich diesem Muster:

    bei dem ich mal als Beispiel den Autor entsprechend nur für den view=article anzeigen lasse.

    Diese Datei ist dann ein Override für:

    /plugins/system/helixultimate/overrides/layouts/joomla/content/info_block.php

    siehe:

    github.com/JoomShaper/helix-ultimate/blob/v2.1.3/plugins/system/helixultimate/overrides/layouts/joomla/content/info_block.php


    Im entsprechenen vorhandenen Menüeintrag 'Neuigkeiten' mit Menüeintragstyp "Kategorieblog" dann als Template-Stil die gewüschte Template Kopie einstellen...

    • Hilfreichste Antwort

    Kannst natürlich alternativ z.B. auch die Beitragskategorie-ID siehe $catid ermitteln und enstprechend dieser ID und dem entsprechenden view siehe $input eine entsprechende Änderung erstellen in der:

    /templates/shaper_helixultimate/overrides/layouts/joomla/content/info_block.php

    Code
    use Joomla\CMS\Factory;
    $input = Factory::getApplication()->getInput()->get('view', '', 'CMD');
    $catid = Factory::getApplication()->getInput()->get('catid', '', 'INT');

    dann brauchst du keine Template-Kopie.

  • Danke, das hat mir geholfen und ich konnte mein Anliegen lösen.

    Scheinbar hatte ich einen Knoten im Kopf, jedenfalls werden die Artikel von einer anderen View gesteuert als der Kategorieblog, natürlich.

    Ich habe also

    PHP: com_content/article/default.php
    <?php if ($useDefList && ($info == 0 || $info == 2)) : ?>

    geändert in

    PHP
    <?php if ($this->item->category_title == "News" || ($useDefList && ($info == 0 || $info == 2))) : ?>

    und außerdem die /layouts/joomla/content/info_block.php ergänzt um entsprechende Kategorie-Abfragen:

    PHP
    <?php if ($displayData['params']->get('show_publish_date') || $catid==10) : ?>

    Tausend Dank :)