Ne pas afficher les mots clés qui ne sont rattachés à aucun élément

Dans mot-dist.html, un menu liste les autres mots-clés du même groupe. Ce que je désire c’est ne faire apparaitre que les mots-clés attribué à au moins un article.

Dans le squelette mot par défaut, le menu de navigation affiche tous les mots-clés du même groupe. Cela peut poser deux problèmes. Le premier, une énumération trop longue, qu’on peut résoudre par un critère limitant le nombre d’occurences affichées. Le deuxième est l’affichage de mots-clés auquels aucun article (ou rubrique, site, etc.) n’est lié. Celà arrive lorsque l’on saisit toute une liste de mots-clés au début de la construction d’un site. Donc voici le principe qui permet de n’afficher que les mots-clés ayant au moins un article lié.

la boucle expliquée :

Menu de navigation mots-clés : les autres mots-clés du meme groupe : rajout : exclusion des mots non attribues

Le squelette débute une boucle pour placer du « code HTML optionnel avant » :

<B_mots_freres>
<h2 class="structure"><:mots_clefs_meme_groupe:></h2>

<div class="menu">
<div class="divers">
<div class="menu-titre">

Le squelette affiche le nom du groupe de mots-clés comme titre du menu dans le « code HTML optionnel avant » :

        <BOUCLE_groupe(GROUPES_MOTS) {id_groupe} {doublons}>
         #TITRE
	</BOUCLE_groupe>
</div>

<ul class="menu-liste">

Le squelette débute une boucle (MOTS) : la liste triée des mots du groupe :

		
			<BOUCLE_mots_freres(MOTS) {type} {doublons} {par titre}>

Rajout_1 : je sélectionne les articles auquels des mots du groupe [{type} ci-dessus] sont attribués, mais je n’affiche rien :

   		       <BOUCLE_existe(ARTICLES) {id_mot}>
		       </BOUCLE_existe>

Retour à l’affichage des données par défaut pour la boucle (MOTS) ici en « code HTML optionnel après » de ma boucle (ARTICLES), donc pour les mots ayant au moins un article attribué :

<li class="menu-item">

	<a href="#URL_MOT" title="[(#DESCRIPTIF|textebrut|entites_html)]">
               #DESCRIPTIF
        </a></li>

Rajout_2 : je termine ma boucle (ARTICLES) d’après le « code HTML optionnel » :

				
</B_existe>

Le squelette clos enfin la boucle « (MOTS) dans ce groupe » :

			</BOUCLE_mots_freres>

La totale qui peut remplacer la boucle « Menu de navigation mots-cles » de mot-dist.html :

<!-- Menu de navigation mots-cles : les autres mots cles du meme groupe (avec rajout d'exclusion des mots non attribues -->

<B_mots_freres>
<h2 class="structure"><:mots_clefs_meme_groupe:></h2>

<div class="menu">
<div class="divers">
<div class="menu-titre">
	<BOUCLE_groupe(GROUPES_MOTS) {id_groupe} {doublons}>[(#TITRE|supprimer_numero)]
	</BOUCLE_groupe>
	</div>

	<ul class="menu-liste">
				
			<BOUCLE_mots_freres(MOTS) {type} {doublons} {par titre}>
			<BOUCLE_existe(ARTICLES) {id_mot}>
			</BOUCLE_existe>
	<li class="menu-item">

				<a href="#URL_MOT" title="[(#DESCRIPTIF|textebrut|entites_html)]">#DESCRIPTIF</a></li>
</B_existe>
			</BOUCLE_mots_freres>

		
			
	</ul>
</div>
</div>

Maintenant que le principe est connu on peut le décliner

Voici un cas avec des rubriques :

Vous avez des succursales dont vous voulez une présentation par départements (provinces, cantons, comtés, régions, districts...). Chaque succursale bénéficie d’un rubrique mais un département peut avoir plusieurs succursales et un autre aucune. Votre structure est bougeante, donc vous avez saisi un groupe de mots-clés recensant tous vos territoires potentiels. Seulement vous ne voulez pas afficher la liste des territoires vides, ça fait mauvais genre si ce n’est « pauvre ». La boucle expliquée ; n’hésitez pas à la nettoyer pour l’utiliser. Celà évitera l’affichage de caractères inutiles dans votre page.

<dt>
                      <B_departements>#PUCE groupes par d&eacute;partements
                      <BOUCLE_departements(RUBRIQUES) {racine} {id_groupe=1}>

		<dd><B_liste_departements><br>
		<BOUCLE_liste_departements(MOTS) {id_groupe=1} {par titre} {unique}>
<!--rajout debut-->
<BOUCLE_existe_departements(RUBRIQUES) {id_mot}>
</BOUCLE_existe_departements>
<!--suite boucle normale-->	                                    	
                                    	
                                    	[<br>(#TITRE)<br>]
<!--suite et fin rajout-->
</B_existe_departements>		

<!--retour boucle normale-->

		        <B_groupes_departements>

			<BOUCLE_groupes_departements(RUBRIQUES) {id_mot}>
		        
                                <a href=#URL_RUBRIQUE>
				<div class ="chapo">#TITRE</div>
				[<div class="texte">(#DESCRIPTIF)</div>]
                               	</a>
			</BOUCLE_groupes_departements>
                       
 </BOUCLE_liste_departements>

                        </BOUCLE_departements>
<dt>

Un autre cas légèrement modifié, toujours avec des rubriques :

Vous avez une radio. Vous avez divisé arbitrairement votre semaine en 7 jours pour en faire autant de groupes de mots-clés. Chacun est divisé de 1/2 h en 1/2 h (8 h 30, 9 h 00, 9 h 30... 23 h 30 etc. [1]). Malheureusement, une émission qui démarre à 18 h 00 ne se remplace pas systématiquement par une autre à 18 h 30 et certaines émissions peuvent se partager le même créneau à des semaines différentes. Voici une adaptation — à habiller— de la boucle précédente ; ici pour le dimanche (id_groupe=7) qui termine cette semaine (mais elle peut terminer le mercredi ou le mardi à votre choix) :

<B_dimanche>
#PUCE dimanche
<BOUCLE_dimanche(RUBRIQUES) {racine} {id_groupe=7}>

<BOUCLE_liste_dimanche(MOTS) {id_groupe=7} {par titre} {unique}>

<BOUCLE_groupes_dimanche(RUBRIQUES) {id_mot}>
<a href=#URL_RUBRIQUE><div>#TITRE</div></a>
</BOUCLE_groupes_dimanche>

</BOUCLE_liste_dimanche><br></B_liste_dimanche>

</BOUCLE_dimanche>

Notes

[1Il faut penser aussi aux pauvres couche-tard.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom