SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Navigation > Navigation transversale

Multirubricage ou comment faire apparaître un article dans plusieurs rubriques

lundi 2 mai 2005, par Equipement. Dernier ajout mercredi 6 décembre 2006


SPIP permet d’associer un article à une seule rubrique. Toutefois, il est possible de faire apparaître un article également dans une (ou plusieurs) autre rubrique en affectant un même mot-clé à l’article et à la rubrique cible et en ajoutant quelques boucles dans le squelette des rubriques.

Ceci permet d’afficher des articles classés par thématique dans une rubrique transversale. Par exemple, on peut regrouper artificiellement dans une rubrique « Dossiers », différents articles dispersés sur le site.


Pour simuler un multirubricage, il convient de procéder de la manière suivante :

a) créer un groupe de mots clés intitulé « _multirubricage ». Il est indispensable que les mots-clés de ce groupe puissent être associés aux articles et aux rubriques (cochez « articles » et cochez « rubriques »). Ne pas cocher « On ne peut sélectionner qu’un seul mot-clé à la fois dans ce groupe ». En effet, cela permettra de faire apparaître un article dans plusieurs autres rubriques.

b) dans ce groupe de mots, créer les mots-clés de votre choix (par exemple « Dossiers », etc.). Il est plus simple de choisir comme mot-clé le titre de la rubrique cible (par exemple on crée un mot-clé « Dossiers » et on crée une rubrique dont le titre est « Dossiers »).

c) affecter à la rubrique cible le mot-clé correspondant ( par exemple on affecte le mot-clé « Dossiers » à la rubrique dont le titre est « Dossiers »). ATTENTION : la rubrique cible doit contenir au moins un article qui lui est directement rattaché, sinon elle ne sera pas publiée.

d) affecter, aux articles que l’on souhaiterait voir également figurer sous la rubrique ciblée, le mot-clé correspondant (par exemple on affecte le un mot-clé « Dossiers » à plusieurs articles) .

e) Dans le squelette des rubriques, ajouter une boucle pour les articles issus d’autres rubriques par simulation de multirubricage :

<!-- boucle des articles issus d'autres rubriques par simulation de multirubricage -->
<BOUCLE_mot_multirubricage(MOTS){id_rubrique}{type=_multirubricage}>
<BOUCLE_article_multirubricage (ARTICLES){id_mot}{par date}{inverse}>
<div>
<a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a>
<p>[(#INTRODUCTION)]</p>
</div>
</BOUCLE_article_multirubricage>
</BOUCLE_mot_multirubricage>

Le fonctionnement est simple. On recherche tout d’abord le mot-clé du groupe « _multirubricage » qui a été affecté à la rubrique puis on recherche les articles qui ont ce même mot-clé. A noter que seul l’intitulé du groupe de mots-clés (« _multirubricage ») figure dans le squelette. Les mots-clés ne figurent pas, aussi il n’est pas nécessaire de modifier le squelette à chaque création de mot-clé. Si l’on souhaite utiliser plusieurs groupes de mots, il suffit de mettre {type=^[_multirubricage]} au lieu de {type=_multirubricage} et de faire commencer le titre des groupes de mots par "_multirubricage".

Portfolio

1ère copie d'écran 2ème copie d'écran

Répondre à cet article

  • Problème avec une rubrique vide

    31 août 2007 13:04, par ver_tips

    Bonjour,

    J’ai installé avec succès ce système.

    J’ai un article dans une rubrique1 et il possède comme mot-clé le titre de la rubrique 2.

    La rubrique 2 ne contient aucun article "en propre". Si je l’affiche je ne vois pas l’article 1.

    En revanche si j’ajoute dans la rubrique 2 un article 2, je vois dans la rubrique 2 aussi l’article 1 que l’article 2.

    Merci pour vos réponses

    Répondre à ce message

    • Problème avec une rubrique vide 6 septembre 2007 09:28, par equipement

      SPIP publie une rubrique uniquement si elle contient au moins un article publié ou au moins un site référencé publié. Si la rubrique 2 ne contient aucun article « en propre », SPIP ne la publie pas, aussi il est normal de ne pas voir l’article 1.

      Répondre à ce message

      • Problème avec une rubrique vide 9 avril 2008 15:19

        Pour certains cas spéciaux, on peut avoir besoin de la rubrique vide. Petite astuce pour la faire apparaitre : Joindre un fichier à la rubrique, sans pour autant le mettre dans ke texte explicatif.

        Ben

        Répondre à ce message

    Retour au début des forums

  • Où insérer ce code ?

    24 novembre 2007 11:07, par tgawi

    Bonjour,

    Où doit-on insérer ce code ? Dans quel fichier ? J’ai essayé "/dist/rubrique.html/" sans succès...

    merci

    Répondre à ce message

    Retour au début des forums

  • Multirubricage et agendas EVA

    9 avril 2007 17:51, par Stéphane

    Bonjour, Peut-on faire fonctionner le multirubricage dans deux agendas d’EVAweb ?

    Merci de votre aide.

    Répondre à ce message

    Retour au début des forums

  • Mon site est sous EVA web 2.3 avec SPIP 1.9.1.

    Lorsque j’insère la boucle dans le squelette "rubrique.html", j’obtiens une page d’erreur.

    Je débute dans spip. Est-ce le bon squelette que je modifie ? Où est mon erreur ?

    Répondre à ce message

    Retour au début des forums

  • Bonjour,

    J’utilise avec succes votre contribution. en revanche, elle semble etre incompatible avec une autre contrib qui permet d’afficher directement l’article si il n’y a qu’un seul article dans la rubrique (ici). En effet, si les 2 contrib sont en place, la simulation de multirubricage fait qu’il n’est considere qu’un seul article dans la rubrique, d’ou le conflit.

    Auriez vous une solution ?

    D’avance merci

    Répondre à ce message

    • Si on affecte un seul mot-clé du groupe "_multirubricage" à la rubrique, alors une piste pourrait consister à :

      a) affecter aux articles propres à la rubrique, le mot-clé correspondant (par exemple « Dossiers », etc.) afin qu’ils apparaissent dans la boucle relative au multirubricage.

      b) enlever la boucle des articles de la rubrique

      c) appliquer une contribution pour afficher directement l’article si il n’y en à qu’un seul à afficher.

      Cela pourrait donner par exemple le code suivant :

      <BOUCLE_mot_multirubricage(MOTS){id_rubrique}{type=_multirubricage}>

      <!-- rediriger directement sur l’article si il n’y en à qu’un seul à afficher -->
      <BOUCLE_nb_article (ARTICLES){id_mot}{par date}{inverse}>
      <?php $k="#URL_ARTICLE"; ?>
      </BOUCLE_nb_article>
      <?php if ('#TOTAL_BOUCLE'==1) header("location:$k");?>
      </B_nb_article>

      <!-- boucle des articles par simulation de multirubricage -->
      <BOUCLE_article_multirubricage (ARTICLES){id_mot}{par date}{inverse}>
      <div>
      <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a>
      <p>[(#INTRODUCTION)]</p>
      </div>
      </BOUCLE_article_multirubricage>

      </BOUCLE_mot_multirubricage>

      Répondre à ce message

    Retour au début des forums

  • > ordre d’apparition des articles Multirubriqués

    28 mai 2005 01:29, par Olivier

    bonjour,

    tout d’abord merci pour cette boucle tres utile :)

    Une petite question : En l’utilisant, je me suis rendu compte que dans la rubrique cible, les articles de cette rubrique et ceux appraisant par le biais du multirubricage sont separés

    je m’explique :
    mes articles de la rubrique cible sont affichés comme ceux-ci
    date - titre - sous-titre
    style
    01 mai 2005 - toto - sous-toto
    01 jan 2003 - tata - sous-tata

    quand je rajoute des articles issus du multirubricage ca me fait

    01 mai 2005 - toto - sous-toto
    01 jan 2003 - tata - sous-tata

    27 mai 2005 - titrearticlemultirubriqué1 - sous-titrearticlemultirubriqué
    15 mai 2004 - titrearticlemultirubriqué2 - sous-titrearticlemultirubriqué

    Ce que je souhaiterais, C que les articles de la rubrique cible et ceux issus du mutirubricage apparaissent dans un seul ordre chronologique
    ex/
    27 mai 2005 - titrearticlemultirubriqué1 - sous-titrearticlemultirubriqué
    01 mai 2005 - toto - sous-toto
    15 mai 2004 - titrearticlemultirubriqué2 - sous-titrearticlemultirubriqué
    01 jan 2003 - tata - sous-tata

    une aide serait la bienvenue, car je me creuse mais vois pas la solution

    merci d’avance Olivier

    Répondre à ce message

    • > ordre d’apparition des articles Multirubriqués 30 mai 2005 08:55, par equipement

      Une piste pourrait consister à :
      - affecter aux articles propres à la rubrique, le mot-clé correspondant (par exemple « Dossiers », etc.) afin qu’ils apparaissent dans la boucle relative au multirubricage.
      - enlever la boucle des articles de la rubrique (ou bien mettre la boucle de multirubricage avant la boucle des articles de la rubrique et enlever les doublons afin qu’ils n’apparaissent pas deux fois).

      Répondre à ce message

      • Bonjour

        la solution d’equipement est efficace et simple a utiliser.
        juste une petite question : je rentre actuellement mes 5000 anciens articles (qui etaient en dur sur des pages html...) et ce nombre va augmenter par la suite. la gestion proposée par mots cle est-elle adaptée sans problemes pour un grand nombre d’articles ? ca va pas mouliner ?

        pour la solution de MJ, ben en fait, j’aurais besoin d’explications si tu veux bien, j’ai fait une inclusion mais ca marche pas, pourrais-tu me donner des details ?

        merci Olivier

        Répondre à ce message

    • Bonjour, j’ai eu le même problème ou presque, je l’ai réglé en utilisant le "doublonnage dédoublonnage" qui n’est pas élégant, mais qui est efficace. ATTENTION toutefois, le code qui suit doit IMPERATIVEMENT être dans un fichier inclus, au milieu de la boucle Rubriques.

      <!-- mets les articles HORS de la rubrique dans d1 -->
      <BOUCLE_a(ARTICLES) {id_rubrique}  {doublons d1}></BOUCLE_a>
      <!-- mets les articles HORS "multi" dans d2 -->
      <BOUCLE_mot(MOTS) {id_rubrique}{type=_multi}>
              <BOUCLE_mul(ARTICLES) {tout}{titre_mot=#TITRE}{doublons d2}>
      </BOUCLE_mul>
      </BOUCLE_mot>

      <!-- astuce: inverse les doublons pour les mettre dans art -->
      <BOUCLE_mult(ARTICLES)  {doublons d1}{doublons d2}{doublons art}></BOUCLE_mult>

      <!-- tous les articles voulus sont dans art, y'a plus qu'a en faire ce qu'on veut -->
       <BOUCLE_art(ARTICLES) {doublons art}{par date}>
      #TITRE
       </BOUCLE_art>

      Répondre à ce message

      • merci bcp a vous 2 j’ai pas encore eu le temps d’essayer mais je le ferai bientot et posterai un message ensuite. Olivier - :)

        Répondre à ce message

        • Hum... En effet, je rencontre également le problème de doublons... Mais là ’avoue que je ne comprend rien à l’explication donnée pour éviter ça... Ce ne serait pas possible d’en avoir des plus détaillées ? Car j’aimerais comprendre comment ça marche...

          Répondre à ce message

          • > ordre d’apparition des articles Multirubriqués 28 avril 2006 09:31, par Equipement

            Exemple de boucles pour la solution qui consiste à :
            - affecter aux articles propres à la rubrique, le mot-clé correspondant (par exemple « Dossiers », etc.) afin qu’ils apparaissent dans la boucle relative au multirubricage.
            - enlever la boucle des articles de la rubrique (ou bien mettre la boucle de multirubricage avant la boucle des articles de la rubrique et enlever les doublons afin qu’ils n’apparaissent pas deux fois).

            <!-- boucle des articles par simulation de multirubricage -->
            <BOUCLE_mot_multirubricage(MOTS){id_rubrique}{type=_multirubricage}>
            <BOUCLE_article_multirubricage (ARTICLES){id_mot}{par date}{inverse}{doublons}>
            <div>
            <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a>
            <p>[(#INTRODUCTION)]</p>
            </div>
            </BOUCLE_article_multirubricage>
            </BOUCLE_mot_multirubricage>

            <!-- boucle des articles de la rubrique hors doublons c’est-à-dire hors ceux qui ont le mot clé ->
            <BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}{doublons}>
            <div>
            <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a>
            <p>[(#INTRODUCTION)]</p>
            </div>
            </BOUCLE_articles>

            Répondre à ce message

            • > ordre d’apparition des articles Multirubriqués 25 janvier 2007 23:58, par olivier1978

              Bonjour,

              Tout d’abord, merci pour cette contribution qui m’est vraiment d’un grand secours et dont l’explication est très claire et facile a mettre en oeuvre. J’ai juste une petite question : je souhaiterais ajouter apres le nom de mon article et sa date de publication, le nom de l’auteur. Or, je n’arrive pas a le faire sans avoir une erreur de double definition de la boucle BOUCLE_auteurs_articles. Voila ce que j’ai mis dans mon fichier rubrique.html :

              <!-- boucle des articles par simulation de multirubricage -->
              <BOUCLE_mot_multirubricage(MOTS){id_rubrique}{type=_multirubricage}>
              <BOUCLE_article_multirubricage (ARTICLES){id_mot}{par date}{inverse}{doublons}>
              <div>
              <li> <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a> [(#DATE|nom_jour)] [(#DATE|affdate)]</li>
              <!-- <p>[(#INTRODUCTION)]</p> -->
              </div>
              </BOUCLE_article_multirubricage>
              </BOUCLE_mot_multirubricage>

              <!-- boucle des articles de la rubrique hors doublons c’est-à-dire hors ceux qui ont le mot clé -->
              <BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}{doublons}>
              <div>
              <li> <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a> [(#DATE|nom_jour)] [(#DATE|affdate)]</li>
              <!-- <p>[(#INTRODUCTION)]</p> -->
              </div>
              </BOUCLE_articles>

              Or, si je fais la modif pour afficher les auteur, j’ai le message d’erreur :

              <!-- boucle des articles par simulation de multirubricage -->
              <BOUCLE_mot_multirubricage(MOTS){id_rubrique}{type=_multirubricage}>
              <BOUCLE_article_multirubricage (ARTICLES){id_mot}{par date}{inverse}{doublons}>
              <div>
              <li> <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a> [(#DATE|nom_jour)] [(#DATE|affdate)]  par
                       <BOUCLE_auteurs_articles(AUTEURS) {id_article} {", "}>
                       <a href="auteur.php3?id_auteur=#ID_AUTEUR">#NOM</a>
                       </BOUCLE_auteurs_articles></li>
              <!-- <p>[(#INTRODUCTION)]</p> -->
              </div>
              </BOUCLE_article_multirubricage>
              </BOUCLE_mot_multirubricage>

              <!-- boucle des articles de la rubrique hors doublons c’est-à-dire hors ceux qui ont le mot clé -->
              <BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}{doublons}>
              <div>
              <li> <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a> [(#DATE|nom_jour)] [(#DATE|affdate)]  par
                       <BOUCLE_auteurs_articles(AUTEURS) {id_article} {", "}>
                       <a href="auteur.php3?id_auteur=#ID_AUTEUR">#NOM</a>
                       </BOUCLE_auteurs_articles></li>
              <!-- <p>[(#INTRODUCTION)]</p> -->
              </div>
              </BOUCLE_articles>

              Avez vous une idee ? Merci d’avance

              mon blog ...

              Répondre à ce message

              • > ordre d’apparition des articles Multirubriqués 26 janvier 2007 08:48, par Equipement

                SPIP ne permet pas de créer dans une page deux boucles avec le même nom. Aussi, il suffit de nommer différemment la première boucle sur les auteurs (par exemple BOUCLE_auteurs_articles_multirubricage). Ci-dessous le code ainsi modifié.

                <!-- boucle des articles par simulation de multirubricage -->
                <BOUCLE_mot_multirubricage(MOTS){id_rubrique}{type=_multirubricage}>
                <BOUCLE_article_multirubricage (ARTICLES){id_mot}{par date}{inverse}{doublons}>
                <div>
                <li> <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a> [(#DATE|nom_jour)] [(#DATE|affdate)]  par
                        <BOUCLE_auteurs_articles_multirubricage(AUTEURS) {id_article} {", "}>
                        <a href="auteur.php3?id_auteur=#ID_AUTEUR">#NOM</a>
                        </BOUCLE_auteurs_articles_multirubricage></li>
                <!-- <p>[(#INTRODUCTION)]</p> -->
                </div>
                </BOUCLE_article_multirubricage>
                </BOUCLE_mot_multirubricage>

                <!-- boucle des articles de la rubrique hors doublons c’est-à-dire hors ceux qui ont le mot clé -->
                <BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}{doublons}>
                <div>
                <li> <a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a> [(#DATE|nom_jour)] [(#DATE|affdate)]  par
                        <BOUCLE_auteurs_articles(AUTEURS) {id_article} {", "}>
                        <a href="auteur.php3?id_auteur=#ID_AUTEUR">#NOM</a>
                        </BOUCLE_auteurs_articles></li>
                <!-- <p>[(#INTRODUCTION)]</p> -->
                </div>
                </BOUCLE_articles>

                Répondre à ce message

    Retour au début des forums

  • Multirubricage sur des niveaux différents

    23 janvier 2007 14:12, par valentin

    Bonjour,

    J’utilise avec succès cette contribution pour des rubriques qui se situent sur le même niveau de profondeur. Mais échec total pour des rubriques qui sont sur des niveaux différents.

    Une idée peut-être ?

    Répondre à ce message

    • Multirubricage sur des niveaux différents 23 janvier 2007 14:21, par Equipement

      La contribution fonctionne même avec des articles situés dans des rubriques qui sont sur des niveaux différents.

      Merci de décrire précisément un cas qui pose problème et de copier / coller les boucles utilisées.

      Répondre à ce message

      • Multirubricage sur des niveaux différents 23 janvier 2007 14:38, par valentin

        Ok ma faute ! J’ai attribué le mot clé à 2 rubriques au lieu de la rubrique cible et de l’article source... Et comme je n’affiche rien sur la rubrique dans ma boucle, c’est donc un affichage vide que j’obtenais. Tout est ok pour moi maintenant. Merci et heureux de constater la vitesse pour obtenir une réponse ici !

        Répondre à ce message

    Retour au début des forums

  • Bonjour,

    Dans mon site, j’ai deux rubriques dont le contenu se croise :
    - Hébergement>hôtel>mes articles
    - Annuaire>Restaurants, snacks, café>mes articles

    En fait, certains hôtels font aussi restaurant et j’aurais aimé que ces articles apparaissent aussi dans ma rubrique restaurant.

    Pour celà j’ai crée un groupe de mots-clés "multirubricage" (sur l’exemple que vous avez fourni) où j’y ai créé le mot-clé "restaurant" que j’ai assigné à tous les articles devant figurer dans la rubrique restaurant (mêmes à ceux se situant dans la rubrique "hôtels").

    Ensuite, j’au ajouté au fichier "rubrique.html" la boucle suivante :

    <!-- boucle des articles issus d'autres rubriques par simulation de
    multirubricage -->

    <BOUCLE_mot_multirubricage(MOTS){id_rubrique}{type=multirubricage}>

    <BOUCLE_article_multirubricage (ARTICLES){id_mot}{par date}{inverse}>

    <h3>
    [<a href="#URL_ARTICLE"
    [title="(#DESCRIPTIF|supprimer_tags|attribut_html)"]>(#TITRE|supprimer_numero)</a>]</h3>
    [<p class="intro">(#TEXTE|textebrut|couper{500}) <a href="#URL_ARTICLE"
    class="spip_in"
    title="[(#TITRE|supprimer_numero|supprimer_tags|attribut_html)]">lire la
    suite</a></p>]

    </BOUCLE_article_multirubricage>

    </BOUCLE_mot_multirubricage>

    Hélas, je n’obtiens rien. Est-ce que quelqu’un pense pouvoir m’aider ?

    Didi.

    Répondre à ce message

    Retour au début des forums

0 | 25



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net