ti-enxame.com

Como consultar e exibir uma lista de tags aninhadas para um determinado pai no front-end como links?

Qual é a melhor maneira de consultar o banco de dados para gerar uma lista de tags que correspondem a um pai em particular e exibir no front-end como um link com o título e o ID da tag?

Isto é para um componente personalizado do joomla mvc que usa dois campos de tag do joomla: "categorias" e "coleção".

Depois de ter a lista de tags, passarei o ID da tag como uma variável de volta à página com jinput para limitar os resultados na exibição da lista de componentes.

3
user2097091

Para gerar uma lista de tags, você pode usar o método getTagTreeArray () da classe JHelperTags como base e modificá-lo de acordo com as suas necessidades. Você pode preencher a matriz resultante, não apenas com os IDs, mas também com os nomes das tags. Em seguida, no front-end, você pode usar o método getTagRoute () da classe TagsHelperRoute para obter o link da tag.

Espero que isto ajude.

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

Additonally, para obter todas as raízes de formulário ordenadas da tag pai para o nível de profundidade atual:

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

Observe: você pode precisar verificar a propriedade publicada, pois obterá todas as tags , mesmo as que estão na lixeira. 1 é publicado, 0 está oculto, -2 está na lixeira, 2 está arquivado.

Veja https://api.joomla.org/cms-3/classes/Joomla.CMS.Router.Route.html também.

0
Marcel