Come mostrare gli elementi taggati nel layout del blog di categoria


8

Voglio creare una voce di menu per un tag che mostri gli articoli come nel layout del blog di categoria. Ho provato con questi tipi di voci di menu: "Elenco compatto di elementi con tag", "Elenco di tutti i tag" e "Elementi con tag" ma senza fortuna.

Secondo la documentazione ufficiale dei tag di contenuto , sembra essere possibile.

Una volta che hai tag e alcuni elementi taggati, puoi visualizzarli nel front-end in diversi modi.

Di default Joomla! visualizzerà i tag incorporati in ogni elemento che è stato taggato. È possibile disattivare questo display modificando i parametri. Puoi controllare il posizionamento di questo display con sostituzioni di layout e layout alternativi e puoi modellarlo con il tuo CSS.

È possibile creare un collegamento di menu che visualizza un elenco di tag, con collegamenti agli elementi contrassegnati per ciascun tag.

> È possibile creare un collegamento a menu che visualizza un elenco di elementi con tag per un determinato tag e può essere visualizzato come elenco o stile blog.

È possibile utilizzare uno dei moduli tag. I tag popolari visualizzeranno un elenco collegato dei tag che hanno gli elementi con più tag. Tag simili visualizzeranno un elenco di elementi che hanno un set simile di tag per l'elemento attualmente visualizzato (si noti che questo modulo non viene visualizzato nelle pagine che non mostrano elementi di contenuto).

Risposte:


8

Poiché questo problema sembra essere stato già chiesto più volte e non esiste ancora una buona risposta, mi piacerebbe provare a fornire la mia soluzione dal lato di override del modello. I passaggi sono piuttosto complessi ma dovrebbe essere facile.

Nota: sto usando Joomla 3.4.4 e template protostar durante la creazione di questo tutorial

Innanzitutto, copia questo file:

[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

per

[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

sostituisci i nomi dei file con qualcosa che ti piace, ad esempio "taggedblog", così diventerà:

[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

Apri il file [root] /templates/your_template_name/html/com_tags/tag/taggedblog.xml nella parte superiore del file vedrai questo codice:

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

cambialo in

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

A questo punto, dovresti vedere un nuovo tipo di voce di menu chiamato Blog con tag quando crei una nuova voce di menu dal tuo gestore di menu. Vedi questa immagine sotto

Nuova voce di menu Blog con tag

Ora, apri il file [root] /templates/your_template_name/html/com_tags/tag/taggedblog_items.php

alle righe 62 elimina questo codice:

<ul class="category list-striped">

ed è il </ul>tag di chiusura alle righe 90

quindi, sempre sullo stesso file, elimina questi codici iniziati alle righe 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; ?>alle righe 70 e tag di chiusura </li>alle righe 85

Successivamente, aggiungi <div class="span5">64 righe dopo il codice <?php foreach ($items as $i => $item) : ?>e aggiungi chiusura </div>prima del<?php endforeach; ?>

Quindi, intorno alle righe 77 prima che il codice <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>aggiunga questo codice:

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

    ?>

A questo punto, l'immagine del testo introduttivo e introduttiva dovrebbe essere visualizzata sul sito Web.

Ora, apri il file [root] /templates/your_template_name/html/com_tags/tag/taggedblog.php , intorno alle righe 51 vedrai questo codice <?php echo $this->loadTemplate('items'); ?>, cambia quella riga in:

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

È tutto.

Ora prova a creare una voce di menu con il tipo di blog con tag dal gestore del menu joomla e guarda il risultato.

Per semplificare le cose, ho caricato i file sopra qui . Divertiti!


2
Non posso credere che questa funzione non sia ancora stata implementata.
Alfredo Osorio,


0

A marzo 2019, questo è ancora apparentemente un problema .... Un approccio diverso potrebbe essere quello di utilizzare il reindirizzamento del tuo server web (Apache / ngnix / IIS / etc) per catturare i collegamenti "standard" e reindirizzarli ai tuoi collegamenti. Gli svantaggi (come li vedo io) sono: - accesso ai file di configurazione rilevanti per il server web (per Apache, questo può essere fatto nel .htaccess per directory, purché mod_rewrite abilitato) - hai un numero gestibile di tag per consentire di creare una voce di menu di destinazione per ciascuno (se si dispone di 200 tag, è possibile creare voci di menu per ognuno, ma chi si preoccuperebbe?) Le regole di riscrittura di Apache che sto usando per questo sono:

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

Quindi, per ogni tag, ho un articolo di destinazione nel formato a cui voglio accedere da una voce di menu con il nome del tag e -articoli (ad esempio, tag1-articoli). Certo, è una soluzione alternativa, ma ho ottenuto il risultato che volevo dato che posso soddisfare le due "condizioni" (accesso alla configurazione di Apache e non molti tag) sopra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.