Cómo mostrar elementos etiquetados en el diseño de blog de categoría

8

Quiero crear un elemento de menú para una etiqueta que muestre los artículos como en el diseño de blog de categoría. He intentado con estos tipos de elementos de menú: "Lista compacta de elementos etiquetados", "Lista de todas las etiquetas" y "Elementos etiquetados" pero sin suerte.

De acuerdo con la documentación oficial de las etiquetas de contenido , parece posible.

Una vez que tenga etiquetas y algunos elementos etiquetados, puede mostrarlos en el front-end de varias maneras.

Por defecto Joomla! mostrará etiquetas incrustadas en cada elemento que ha sido etiquetado. Puede apagar esta pantalla cambiando los parámetros. Puede controlar el posicionamiento de esta pantalla con anulaciones de diseño y diseños alternativos y puede diseñarlo con su CSS.

Puede crear un enlace de menú que muestre una lista de etiquetas, con enlaces a los elementos etiquetados para cada etiqueta.

> Puede crear un enlace de menú que muestre una lista de elementos etiquetados para una etiqueta determinada y mostrarla como una lista o estilo de blog.

Puede usar uno de los módulos de etiquetas. Las etiquetas populares mostrarán una lista vinculada de las etiquetas que tienen los elementos más etiquetados. Etiquetas similares mostrarán una lista de elementos que tienen un conjunto de etiquetas similar al elemento que se muestra actualmente (tenga en cuenta que este módulo no se muestra en páginas que no muestran elementos de contenido).

Alfredo Osorio
fuente

Respuestas:

8

Dado que este problema parece que ya se ha preguntado varias veces y todavía no hay una buena respuesta para eso, me gustaría intentar proporcionar mi solución desde el lado de anulación de plantilla. Los pasos son bastante complejos, pero debería ser fácil.

Nota: Estoy usando Joomla 3.4.4 y plantilla protostar mientras creo este tutorial

Primero, copie estos archivos:

[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

a

[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

reemplace los nombres de archivo por algo que le guste, por ejemplo 'taggedblog', para que se convierta en:

[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 el archivo [root] /templates/your_template_name/html/com_tags/tag/taggedblog.xml en la parte superior del archivo y verá este código:

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

cambia eso a

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

En este punto, debería ver un nuevo tipo de elemento de menú llamado Blog etiquetado al crear un nuevo elemento de menú desde su administrador de menús. Ver esta imagen a continuación

Nuevo elemento de menú de blog etiquetado

Ahora, abra el archivo [root] /templates/your_template_name/html/com_tags/tag/taggedblog_items.php

en las líneas 62 elimine este código:

<ul class="category list-striped">

y está </ul>cerrando la etiqueta en las líneas 90

luego, aún en el mismo archivo, elimine estos códigos que comenzaron en las líneas 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; ?>en las líneas 70, y etiqueta de cierre </li>en las líneas 85

Luego, agregue <div class="span5">a las 64 líneas después del código <?php foreach ($items as $i => $item) : ?>y agregue el cierre </div>antes del<?php endforeach; ?>

Luego, alrededor de las líneas 77 antes del código <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>agregue 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;

    ?>

En este punto, el introtexto y la imagen de introducción deberían haberse mostrado en el sitio web.

Ahora, abra el archivo [raíz] /templates/your_template_name/html/com_tags/tag/taggedblog.php , alrededor de las líneas 51 verá este código <?php echo $this->loadTemplate('items'); ?>, cambie esa línea a:

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

Eso es todo.

Ahora intente crear un elemento de menú con el tipo de blog etiquetado desde su administrador de menús de joomla y vea el resultado.

Para facilitar las cosas, he subido los archivos de arriba aquí . ¡Que te diviertas!

webchun
fuente
2
No puedo creer que esta característica aún no se haya implementado.
Alfredo Osorio
0

En marzo de 2019, esto sigue siendo aparentemente un problema ... Un enfoque diferente podría ser utilizar la redirección de su servidor web (Apache / ngnix / IIS / etc.) para capturar los enlaces "estándar" y redirigirlos a sus propios enlaces. Las desventajas (tal como las veo) son: - acceso a los archivos de configuración relevantes para el servidor web (para Apache, esto se puede hacer en el directorio por directorio .htaccess, siempre que mod_rewrite esté habilitado) - tiene un número manejable de etiquetas para permitirle crear un elemento de menú de destino para cada una (si tiene 200 etiquetas, podría crear elementos de menú para cada una, pero ¿quién se molestaría?) Las reglas de reescritura de Apache que estoy usando para esto son:

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

Entonces, para cada etiqueta, tengo un artículo de destino en el formato al que quiero acceder mediante un elemento de menú con el nombre de la etiqueta y -artículos (por ejemplo, etiqueta1-artículos). Claro, es una solución, pero obtuve el resultado que quería dado que puedo cumplir con las dos "condiciones" (acceso de configuración de Apache y no muchas etiquetas) anteriores.

Mark Bradley
fuente