Comment afficher les éléments balisés dans la mise en page de blog de catégorie

8

Je veux créer un élément de menu pour une balise qui montre les articles comme dans la mise en page de blog de catégorie. J'ai essayé avec ces types d'éléments de menu: "Liste compacte des éléments étiquetés", "Liste de toutes les étiquettes" et "Articles étiquetés", mais sans succès.

Selon la documentation officielle des balises de contenu , cela semble possible.

Une fois que vous avez des étiquettes et des éléments étiquetés, vous pouvez les afficher de plusieurs façons dans le frontal.

Par défaut Joomla! affichera les balises intégrées dans chaque élément qui a été balisé. Vous pouvez désactiver cet affichage en modifiant les paramètres. Vous pouvez contrôler le positionnement de cet affichage avec des remplacements de disposition et des dispositions alternatives et vous pouvez le styliser avec votre CSS.

Vous pouvez créer un lien de menu qui affiche une liste de balises, avec des liens vers les éléments balisés pour chaque balise.

> Vous pouvez créer un lien de menu qui affiche une liste d'éléments balisés pour une balise donnée et s'affiche sous forme de liste ou de style de blog.

Vous pouvez utiliser l'un des modules de balises. Les balises populaires afficheront une liste liée des balises ayant les éléments les plus marqués. Des balises similaires afficheront une liste d'éléments qui ont un ensemble de balises similaire à l'élément actuellement affiché (notez que ce module ne s'affiche pas sur les pages qui ne présentent pas d'éléments de contenu).

Alfredo Osorio
la source

Réponses:

8

Étant donné que ce problème semble avoir déjà été posé plusieurs fois et qu'il n'y a toujours pas de bonne réponse à cela, je voudrais essayer de fournir ma solution du côté de la substitution de modèle. Les étapes sont assez complexes mais cela devrait être facile.

Remarque: j'utilise Joomla 3.4.4 et le modèle protostar lors de la création de ce didacticiel

Copiez d'abord ces fichiers:

[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

à

[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

remplacez les noms de fichiers par quelque chose que vous aimez, par exemple 'taggedblog', pour qu'il devienne:

[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

Ouvrez le fichier [root] /templates/your_template_name/html/com_tags/tag/taggedblog.xml en haut du fichier, vous verrez ce code:

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

changer cela en

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

À ce stade, vous devriez voir un nouveau type d'élément de menu appelé Blog balisé lors de la création d'un nouvel élément de menu à partir de votre gestionnaire de menus. Voir cette image ci-dessous

Nouvel élément de menu de blog balisé

Maintenant, ouvrez le fichier [root] /templates/your_template_name/html/com_tags/tag/taggedblog_items.php

aux lignes 62, supprimez ce code:

<ul class="category list-striped">

et c'est la </ul>balise de fermeture aux lignes 90

puis, toujours sur le même fichier, supprimez ces codes commencés aux lignes 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; ?>aux lignes 70 et balise de fermeture </li>aux lignes 85

Ensuite, ajoutez <div class="span5">à 64 lignes après le code <?php foreach ($items as $i => $item) : ?>et ajoutez la fermeture </div>avant le<?php endforeach; ?>

Ensuite, autour des lignes 77 avant le code, <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?>ajoutez ce code:

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

    ?>

À ce stade, l'introtexte et l'image d'introduction auraient dû être affichés sur le site Web.

Maintenant, ouvrez le fichier [root] /templates/your_template_name/html/com_tags/tag/taggedblog.php , autour des lignes 51 vous verrez ce code <?php echo $this->loadTemplate('items'); ?>, changez cette ligne en:

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

C'est tout.

Maintenant, essayez de créer un élément de menu avec le type de blog balisé à partir de votre gestionnaire de menus joomla et voyez le résultat.

Pour faciliter les choses, j'ai téléchargé ces fichiers ci-dessus ici . S'amuser!

webchun
la source
2
Je ne peux pas croire que cette fonctionnalité n'ait pas encore été implémentée.
Alfredo Osorio
2

Ce n'est actuellement pas possible. Le plus proche que vous pouvez obtenir est les éléments étiquetés. Il y a un article dans les forums Joomla sur la façon d'ajouter la suite. http://forum.joomla.org/viewtopic.php?f=708&t=838191

Il s'agit également actuellement d'une demande sur ideas.joomla.org à http://ideas.joomla.org/forums/84261-joomla-idea-pool/category/12057-content?query=category%20blog%20tagged%20items . Vous pouvez aller voter pour qu'il soit inclus.

Lucinda Cage
la source
0

En mars 2019, cela semble toujours être un problème .... Une approche différente pourrait être d'utiliser la redirection de votre serveur Web (Apache / ngnix / IIS / etc) pour attraper les liens "standard" et les rediriger vers vos propres liens. Les inconvénients (tels que je les vois) sont: - l'accès aux fichiers de configuration pertinents pour le serveur Web (pour Apache, cela peut être fait dans le répertoire .htaccess, tant que mod_rewrite est activé) - vous avez un nombre gérable de des balises pour vous permettre de créer un élément de menu de destination pour chacune (si vous avez 200 balises, vous pouvez créer des éléments de menu pour chacune, mais qui s'en préoccuperait?) Les règles de réécriture Apache que j'utilise pour cela sont les suivantes:

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

Ainsi, pour chaque balise, j'ai un article de destination dans le format auquel je veux accéder par un élément de menu avec le nom et les articles de la balise (par exemple, tag1-articles). Bien sûr, c'est une solution de contournement, mais j'ai obtenu le résultat que je voulais étant donné que je peux remplir les deux "conditions" (accès à la configuration Apache et pas beaucoup de balises) ci-dessus.

Mark Bradley
la source