it-swarm.it

Come interrogare e visualizzare un elenco di tag nidificati per un determinato genitore sul front-end come collegamenti?

Qual è il modo migliore di interrogare il db per generare un elenco di tag corrispondenti a un determinato genitore e visualizzarlo sul front-end come collegamento con titolo tag e ID?

Questo è per un componente joomla mvc personalizzato che utilizza due campi tag joomla: "categorie" e "raccolta".

Una volta che ho l'elenco dei tag, passerò quindi l'ID tag come variabile alla pagina con jinput per limitare i risultati nella vista elenco componenti.

3
user2097091

Per generare un elenco di tag che puoi prendere metodo getTagTreeArray () dalla classe JHelperTags come base e modificarlo secondo le tue necessità - puoi popolare l'array risultante non solo con gli ID, ma anche con i nomi dei tag. Quindi sul frontend puoi usare getTagRoute () metodo della classe TagsHelperRoute per ottenere il link al tag.

Spero che sia di aiuto.

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>';
}

Inoltre, per ottenere tutti i tag principali ordinati dalla radice al livello di profondità corrente:

<?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>';
}

Nota: potrebbe essere necessario controllare la proprietà pubblicata, poiché otterrai tutti i tag , anche quelli eliminati. 1 è pubblicato, 0 è nascosto, -2 è cestinato, 2 è archiviato.

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

0
Marcel