web-dev-qa-db-fra.com

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

Je souhaite créer un élément de menu pour une balise affichant les articles sous la forme de blog catégorie. J'ai essayé avec ces types d'éléments de menu: "Liste compacte d'éléments étiquetés", "Liste de toutes les étiquettes" et "Éléments étiquetés" mais sans succès.

Selon le documentation officielle des balises de conten , cela semble possible.

Une fois que vous avez des étiquettes et des éléments étiquetés, vous pouvez les afficher au début de plusieurs manières.

Par défaut, Joomla! affichera les étiquettes incorporées dans chaque article étiqueté. Vous pouvez désactiver cet affichage en modifiant les paramètres. Vous pouvez contrôler le positionnement de cet affichage avec des remplacements de mise en page et des mises en page alternatives et vous pouvez le styler avec vos CSS.

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

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

Vous pouvez utiliser l'un des modules de balises. Les balises populaires affichent une liste chaînée des balises contenant les éléments les plus étiquetés. Les balises similaires affichent une liste d'éléments ayant 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 les éléments de contenu).

8
Alfredo Osorio

Comme ce problème semble avoir déjà été posé à plusieurs reprises et qu'il n'y a toujours pas de bonne réponse à cette question, j'aimerais essayer de fournir ma solution du côté du remplacement de modèle. Les étapes sont assez complexes mais cela devrait être facile.

Remarque: J'utilise Joomla 3.4.4 et le template protostar lors de la création de ce tutoriel

Tout d’abord, copiez 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', il deviendra alors:

[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/votre_nom_de_produit/html/com_tags/tag/taggedblog.xml en haut du fichier, vous verrez le code suivant:

<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 marqué lors de la création d'un nouvel élément de menu à partir de votre gestionnaire de menus. Voir cette image ci-dessous

New Tagged Blog Menu Item

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 </ul> balise fermante aux lignes 90

puis, toujours dans le même fichier, supprimez les codes commençant 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 la 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, les lignes autour du code 77 avant le code <?php if ($this->params->get('tag_list_show_item_description', 1)) : ?> ajoutent 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 de la ligne 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 Blog marqué avec votre gestionnaire de menus joomla et consultez le résultat.

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

8
webchun

Ce n'est pas possible actuellement. Le plus proche que vous pouvez obtenir est les éléments marqués. Un article dans les forums Joomla explique comment ajouter davantage d'informations. http://forum.joomla.org/viewtopic.php?f=708&t=838191

C’est également actuellement une demande sur ideas.joomla.org à l’adresse http://ideas.joomla.org/forums/84261-joomla-idea-pool/category/12057-content?query=category%20blog%20tagged % 20items . Vous pouvez aller voter pour l'inclure.

2
Lucinda Cage

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 capturer les liens "standard" et les rediriger vers vos propres liens. Les inconvénients (tels que je les vois) sont les suivants: - 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 balises pour vous permettre de créer un élément de menu de destination pour chacune d'elles (si vous avez 200 balises, vous pouvez créer des éléments de menu pour chacune d'elles, mais qui s'en inquiéterait?) Les règles de réécriture d'Apache que j'utilise pour ce sont:

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

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

0
Mark Bradley