Como mostrar itens marcados no layout do blog da categoria


8

Quero criar um item de menu para uma tag que mostre os artigos como no layout do blog da categoria. Tentei com estes tipos de itens de menu: "Lista compacta de itens marcados", "Lista de todas as tags" e "Itens marcados", mas sem sorte.

De acordo com a documentação oficial das tags de conteúdo , parece possível.

Depois de ter tags e alguns itens marcados, você pode exibi-los no front-end de várias maneiras.

Por padrão, o Joomla! exibirá tags incorporadas em cada item que foi marcado. Você pode desativar esta exibição alterando os parâmetros. Você pode controlar o posicionamento dessa tela com substituições de layout e layouts alternativos e pode estilizá-la com seu css.

Você pode criar um link de menu que exibe uma lista de tags, com links para os itens marcados para cada tag.

> Você pode criar um link de menu que exiba uma lista de itens marcados para uma determinada tag e seja exibido como um estilo de lista ou blog.

Você pode usar um dos módulos de tags. Tags populares exibem uma lista vinculada das tags que têm os itens mais marcados. Tags semelhantes exibirá uma lista de itens que possuem um conjunto semelhante de tags para o item exibido no momento (observe que este módulo não é exibido nas páginas que não estão mostrando itens de conteúdo).

Respostas:


8

Como esse problema parece já ter sido solicitado várias vezes e ainda não há uma boa resposta para isso, gostaria de tentar fornecer minha solução do lado de substituição do modelo. As etapas são bastante complexas, mas devem ser fáceis.

Nota: Estou usando o Joomla 3.4.4 e o protostar de modelo ao criar este tutorial

Primeiro, copie estes arquivos:

[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

para

[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

substitua os nomes dos arquivos por algo que você gosta, por exemplo, 'taggedblog', para que ele se torne:

[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

Abra o arquivo [root] /templates/your_template_name/html/com_tags/tag/taggedblog.xml na parte superior do arquivo, você verá este código:

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

mude isso para

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

Nesse ponto, você deverá ver um novo tipo de item de menu chamado Blog marcado ao criar um novo item de menu a partir do seu gerenciador de menus. Veja esta imagem abaixo

Novo item de menu do blog marcado

Agora, abra o arquivo [root] /templates/your_template_name/html/com_tags/tag/taggedblog_items.php

nas linhas 62 exclua este código:

<ul class="category list-striped">

e está </ul>fechando a tag nas linhas 90

então, ainda no mesmo arquivo, exclua esses códigos iniciados nas linhas 64:

<?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; ?>nas linhas 70 e tag de fechamento </li>nas linhas 85

Em seguida, adicione <div class="span5">64 linhas após o código <?php foreach ($items as $i => $item) : ?>e feche </div>antes do<?php endforeach; ?>

Em seguida, as linhas de contorno 77 antes do código <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>adicionam este código:

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

    ?>

Neste ponto, o introtexto e a imagem de introdução deveriam ter sido exibidos no site.

Agora, abra o arquivo [root] /templates/your_template_name/html/com_tags/tag/taggedblog.php , nas linhas 51 você verá esse código <?php echo $this->loadTemplate('items'); ?>, altere a linha para:

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

Isso é tudo.

Agora tente criar um item de menu com o tipo Tagged Blog no seu gerenciador de menus do joomla e veja o resultado.

Para facilitar, carreguei esses arquivos acima aqui . Diverta-se!


2
Não acredito que esse recurso ainda não foi implementado.
Alfredo Osorio


0

Em março de 2019, isso ainda parece ser um problema .... Uma abordagem diferente pode ser usar o redirecionamento do servidor Web (Apache / ngnix / IIS / etc) para capturar os links "padrão" e redirecioná-los para seus próprios links. As desvantagens (como eu as vejo) são: - acesso aos arquivos de configuração relevantes para o servidor web (para Apache, isso pode ser feito no diretório .htaccess, desde que o mod_rewrite esteja ativado) - você tem um número gerenciável de tags para permitir que você crie um item de menu de destino para cada um (se você tiver 200 tags, poderá criar itens de menu para cada um, mas quem se importaria?) As regras de reescrita do Apache que estou usando para isso são:

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

Portanto, para cada tag, tenho um artigo de destino no formato que desejo acessar por um item de menu com o nome da tag e -artigos (por exemplo, tag1-articles). Claro, é uma solução alternativa, mas tenho o resultado que queria, pois posso atender às duas "condições" (acesso à configuração do Apache e poucas tags) acima.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.