So zeigen Sie markierte Elemente im Blog-Layout der Kategorie an

8

Ich möchte ein Menüelement für ein Tag erstellen, das die Artikel wie im Blog-Layout der Kategorie anzeigt. Ich habe es mit folgenden Menüelementtypen versucht: "Kompakte Liste der markierten Elemente", "Liste aller Tags" und "Markierte Elemente", aber ohne Glück.

Laut der offiziellen Dokumentation von Content-Tags scheint dies möglich zu sein.

Sobald Sie Tags und einige markierte Elemente haben, können Sie diese auf verschiedene Arten im Frontend anzeigen.

Standardmäßig ist Joomla! zeigt Tags an, die in jedes Element eingebettet sind, das markiert wurde. Sie können diese Anzeige ausschalten, indem Sie die Parameter ändern. Sie können die Positionierung dieser Anzeige mit Layoutüberschreibungen und alternativen Layouts steuern und sie mit Ihrem CSS formatieren.

Sie können einen Menülink erstellen, der eine Liste von Tags mit Links zu den markierten Elementen für jedes Tag anzeigt.

> Sie können einen Menülink erstellen, der eine Liste mit markierten Elementen für ein bestimmtes Tag anzeigt und entweder als Liste oder als Blogstil angezeigt wird.

Sie können eines der Tag-Module verwenden. Beliebte Tags zeigen eine verknüpfte Liste der Tags mit den am häufigsten markierten Elementen an. Ähnliche Tags zeigen eine Liste von Elementen an, die ähnliche Tags wie das aktuell angezeigte Element haben (beachten Sie, dass dieses Modul nicht auf Seiten angezeigt wird, auf denen keine Inhaltselemente angezeigt werden).

Alfredo Osorio
quelle

Antworten:

8

Da dieses Problem anscheinend bereits mehrmals gestellt wurde und es immer noch keine gute Antwort darauf gibt, möchte ich versuchen, meine Lösung auf der Seite zum Überschreiben von Vorlagen bereitzustellen. Die Schritte sind recht komplex, sollten aber einfach sein.

Hinweis: Ich verwende Joomla 3.4.4 und Template Protostar, während ich dieses Tutorial erstelle

Kopieren Sie zunächst diese Dateien:

[root]/components/com_tags/views/tag/tmpl/default.php
[root]/components/com_tags/views/tag/tmpl/default.xml
[root]/components/com_tags/views/tag/tmpl/default_items.php

zu

[root]/templates/your_template_name/html/com_tags/tag/default.php
[root]/templates/your_template_name/html/com_tags/tag/default.xml
[root]/templates/your_template_name/html/com_tags/tag/default_items.php

Ersetzen Sie die Dateinamen durch etwas, das Ihnen gefällt, z. B. "taggedblog", damit Folgendes angezeigt wird:

[root]/templates/your_template_name/html/com_tags/tag/taggedblog.php
[root]/templates/your_template_name/html/com_tags/tag/taggedblog.xml
[root]/templates/your_template_name/html/com_tags/tag/taggedblog_items.php

Öffnen Sie die Datei [root] /templates/your_template_name/html/com_tags/tag/taggedblog.xml oben in der Datei. Dieser Code wird angezeigt :

<layout title="com_tags_tag_view_default_title" option="com_tags_tag_view_default_option">

ändere das auf

<layout title="Tagged Blog" option="taggedblog">

Zu diesem Zeitpunkt sollte beim Erstellen eines neuen Menüelements in Ihrem Menü-Manager ein neuer Menüelementtyp mit dem Namen "Tagged Blog" angezeigt werden. Siehe dieses Bild unten

Neuer markierter Blog-Menüpunkt

Öffnen Sie nun die Datei [root] /templates/your_template_name/html/com_tags/tag/taggedblog_items.php

In den Zeilen 62 löschen Sie diesen Code:

<ul class="category list-striped">

und es </ul>schließt das Tag in den Zeilen 90

Löschen Sie dann, immer noch in derselben Datei, diese Codes, die in den Zeilen 64 begonnen wurden:

<?php if ($item->core_state == 0) : ?>
                <li class="system-unpublished cat-list-row<?php echo $i % 2; ?>">
            <?php else: ?>
                <li class="cat-list-row<?php echo $i % 2; ?> clearfix" >

<?php endif; ?>in den Zeilen 70 und das schließende Tag </li>in den Zeilen 85

Fügen Sie als Nächstes <div class="span5">64 Zeilen nach dem Code hinzu <?php foreach ($items as $i => $item) : ?>und fügen Sie das Schließen </div>vor dem Code hinzu<?php endforeach; ?>

Als nächstes fügen die Zeilen 77 vor dem Code <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>diesen Code hinzu:

<?php
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select('introtext')->from('#__content')->where('id=' . (int)$item->content_item_id);
    $db->setQuery($query);
    //displaying the intro image
    $images  = json_decode($item->core_images);
    if(!empty($images->image_intro)) {
        echo '<img src="'.$images->image_intro.'">';
    }
    //displaying the intro text
    $introtext = $db->loadResult();
    echo $introtext;

    ?>

Zu diesem Zeitpunkt sollten Introtext und Intro-Bild auf der Website angezeigt worden sein.

Öffnen Sie nun die Datei [root] /templates/your_template_name/html/com_tags/tag/taggedblog.php . In den Zeilen 51 wird dieser Code angezeigt. Ändern Sie diese <?php echo $this->loadTemplate('items'); ?>Zeile in:

<div class="row"><?php echo $this->loadTemplate('items'); ?></div>

Das ist alles.

Versuchen Sie nun, ein Menüelement mit dem Typ "Tagged Blog" in Ihrem Joomla-Menü-Manager zu erstellen, und sehen Sie das Ergebnis.

Um die Sache zu vereinfachen, habe ich die oben genannten Dateien hier hochgeladen . Habe Spaß!

Webchun
quelle
2
Ich kann nicht glauben, dass diese Funktion noch nicht implementiert wurde.
Alfredo Osorio
2

Dies ist derzeit nicht möglich. Das nächstgelegene ist Tagged Items. In den Joomla-Foren gibt es einen Artikel darüber, wie man mehr liest. http://forum.joomla.org/viewtopic.php?f=708&t=838191

Dies ist derzeit auch eine Anfrage auf ideas.joomla.org unter http://ideas.joomla.org/forums/84261-joomla-idea-pool/category/12057-content?query=category%20blog%20tagged%20items . Sie können dafür stimmen, dass es aufgenommen wird.

Lucinda Cage
quelle
0

Im März 2019 scheint dies immer noch ein Problem zu sein. Ein anderer Ansatz könnte darin bestehen, die Umleitung Ihres Webservers (Apache / ngnix / IIS / etc) zu verwenden, um die "Standard" -Links abzufangen und sie auf Ihre eigenen Links umzuleiten. Die Nachteile (wie ich sie sehe) sind: - Zugriff auf die relevanten Konfigurationsdateien für den Webserver (für Apache kann dies im Verzeichnis .htaccess erfolgen, solange mod_rewrite aktiviert ist) - Sie haben eine überschaubare Anzahl von Tags ermöglichen, eine Zielmenüpunkt für jeden zu erstellen (wenn Sie 200 - Tags haben, Sie könnten Menüpunkte für jeden erstellen, aber wer würde die Mühe machen?) Die Apache Rewrite - Regeln ich bin für diese Verwendung sind:

RewriteBase /
ReWriteRule ^component/tags/tag/([^\.]+).html$ /$1-articles [L,R=301]

Daher habe ich für jedes Tag einen Zielartikel in dem Format, auf das ein Menüelement mit dem Tag-Namen und den Artikeln (z. B. tag1-Artikeln) zugreifen soll. Sicher, es ist eine Problemumgehung, aber ich habe das gewünschte Ergebnis erzielt, da ich die beiden oben genannten "Bedingungen" (Apache-Konfigurationszugriff und nicht viele Tags) erfüllen kann.

Mark Bradley
quelle