it-swarm.com.de

Wie kann ich eine Liste verschachtelter Tags für ein bestimmtes übergeordnetes Element im Front-End als Links abfragen und anzeigen?

Wie kann die Datenbank am besten abgefragt werden, um eine Liste von Tags zu generieren, die einem bestimmten übergeordneten Element entsprechen und im Front-End als Link mit Tag-Titel und ID angezeigt werden?

Dies ist für eine benutzerdefinierte Joomla-MVC-Komponente, die zwei Joomla-Tag-Felder verwendet: "Kategorien" und "Sammlung".

Sobald ich die Liste der Tags habe, gebe ich die Tag-ID als Variable an die Seite mit der Eingabe zurück, um die Ergebnisse in der Komponentenlistenansicht einzuschränken.

3
user2097091

Um eine Liste mit Tags zu generieren, können Sie die Methode getTagTreeArray () aus der Klasse JHelperTags als Basis verwenden und diese für Ihre Anforderungen ändern. Sie können das resultierende Array nicht nur mit den IDs füllen. sondern auch mit den Tag-Namen. Anschließend können Sie im Frontend die Methode getTagRoute () der Klasse TagsHelperRoute verwenden, um den Tag-Link abzurufen.

Hoffe das hilft.

3
Dmitry Rekun
<?php
defined('_JEXEC') or die; // Joomla
$parent_tag_id=12345; // your tag id here
JLoader::register('TagsHelperRoute', JPATH_BASE . '/components/com_tags/helpers/route.php');
$tags_tree=JTable::getInstance('Tag', 'TagsTable')->getTree($parent_tag_id);
// Show children:
foreach($tags_tree as $tags_tree_id=>$tags_tree_item) {
    echo 'DEBUG: ';
    echo ' id:'    . $tags_tree_item->id;
    echo ' level:' . $tags_tree_item->level;
    echo ' path:'  . $tags_tree_item->path;
    $link=TagsHelperRoute::getTagRoute($tags_tree_item->id . ':' . $tags_tree_item->path);
    echo ' link: ' . JRoute::_( $link, true, 1);
    echo '<br>';
}

Außerdem, um alle übergeordneten Tags vom Stamm bis zur aktuellen Tiefenebene zu ordnen:

<?php
defined('_JEXEC') or die; // Joomla
$tag_id=12345; // your tag id here
$parent_tags=JTable::getInstance('Tag', 'TagsTable')->getPath($tag_id);
// Show parents and self:
foreach($parent_tags as $parent_tags_id=>$parent_tags_item) {
    echo 'DEBUG: ';
    echo ' id:'        . $parent_tags_item->id;
    echo ' level:'     . $parent_tags_item->level;
    echo ' path:'      . $parent_tags_item->path;
    echo ' published:' . $parent_tags_item-->published;
    echo '<br>';
}

Bitte beachten Sie: Möglicherweise müssen Sie die veröffentlichte Eigenschaft überprüfen, da Sie alle Tags erhalten, auch die in den Papierkorb verschobenen. 1 wird veröffentlicht, 0 wird ausgeblendet, -2 wird verworfen, 2 wird archiviert.

Siehe https://api.joomla.org/cms-3/classes/Joomla.CMS.Router.Route.html auch.

0
Marcel