Ausgabe /com_tags/tag/default_items.php

  • Liebe J!-Spezialisten,

    Aktuell verwende ich J! 3.10.1 mit PHP 7.4.21

    Meine Ausgangssituation ist die folgende und hier bitte ich um Hilfe: auf der Homepage sollen Downloads von Text-Dateien angeboten werden. Über einen Menüpunkt gebe ich eine Liste aller Autoren aus und bei einem Klick auf die Namen öffnet sich die Übersichtsseite des Autors mit allen download-fähigen Texten, wobei alle Schlagworte, die bei dem Text hinterlegt, sind aufscheinen. Da viele Sammelpublikationen dabei sind, finden sich aber viel zu viele Infos, weswegen ich diese gerne eingrenzen würde, woran ich katastrophal scheitere.


    Ich hätte gerne, dass er mir nur den Tag Downloads (tag-id: 3) und dann - abhängig davon welche Textgattung es ist - Artikel und Vorträge (tag-id: 94), Monographie (tag-id: 4), oder Herausgeberschaft (tag-id: 104).

    Beispielhaft:

    Autor: Titel.

    Download, Artikel und Vorträge


    Das würde ich gerne als override lösen und habe gesehen, dass für die Ausgabe der Schlagworte die folgenden Zeilen aus tag/default_items.php dafür zuständig wären

    PHP
    <?php $tags->getItemTags('com_content.article', $item->id)?>
    <?php foreach ($tags->itemTags as $tag) : ?>
    <a href="<?php echo JRoute::_(TagsHelperRoute::getTagRoute($tag->tag_id . ':' . $tag->alias)); ?>" class="">
    <?php echo $tag->title;?>
    </a>  
      <?php endforeach; ?>


    Hat einer von Euch bitte eine Idee, wie ich es schaffe, nur die oberangeführten IDs mit entsprechendem Beistrich und als reinem Text auszugeben?


    Vielen Dank im Voraus für Eure Hilfe,

    Beste Grüße, Cassirer

  • Wenn ich Dich richtig verstanden habe, dann sollte das recht simpel sein. Innerhalb des foreach mit einer if-Abfrage die IDs oder die Namen prüfen und nur bei Gültigkeit ausgeben lassen.

    PHP
    <?php $tags->getItemTags('com_content.article', $item->id)?>
    <?php foreach ($tags->itemTags as $tag) : ?>
    <?php if($tag->id=4 OR $tag->id=94 OR $tag->id=104) : ?>
    <a href="<?php echo JRoute::_(TagsHelperRoute::getTagRoute($tag->tag_id . ':' . $tag->alias)); ?>" class="">
    <?php echo $tag->title;?>
    </a>
    <?php endif; ?>
    <?php endforeach; ?>

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Hallo Lukas,


    vielen herzlichen Dank für Deine rasche Hilfe! Ich habe Deinen Code übernommen, aber es hat sich gar nichts verändert und ich glaub ich weiß auch schon warum.


    Wenn ich in MySQL in die content reinsehe, habe ich dort keine Verknüpfung zwischen den Article-Ids und den Tag-Ids, diese befindet sich in der contentitem_tag_map. Noch dazu ist dann der Tag-Title im tags sheet.


    Hast Du bitte eine Idee, wie ich die Abfrage von oben nicht aus der com_content.article, sondern aus der contentitem-tag-map stellen UND den Titel aus der tags anzeigen kann?


    Vielen Dank und beste Grüße,

    Cassirer


    PS: ich bin leider eine völlige Null bei PHP