afficher le titre d'une rubrique seulement si elle contient un article répondant aux critères

Bonjour,

voilà mon script, une partie, de mon squelette de sommaire:

<BOUCLE_newsletter(RUBRIQUES) {id_rubrique=7}>
    <TD valign="top" align="left" WIDTH="50%">
  <BOUCLE_sous_rubriques1(RUBRIQUES){id_parent}{1/2}>
    <b>#TITRE</b>
    <ul>
    <BOUCLE_articles1(ARTICLES){id_rubrique}{titre_mot=65}>
      <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
    </BOUCLE_articles1>
    </ul>
  </BOUCLE_sous_rubriques1>
    </TD>
    <TD valign="top" align="left" WIDTH="50%">
  <BOUCLE_sous_rubriques2(RUBRIQUES){id_parent}{2/2}>
    <b>#TITRE</b>
    <ul>
    <BOUCLE_articles2(ARTICLES){id_rubrique}{id_rubrique}{titre_mot=65}>
      <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
    </BOUCLE_articles2>
    </ul>
  </BOUCLE_sous_rubriques2>
    </TD>
</BOUCLE_newsletter>

en fait le truc est le suivant, je cherche à ne faire s'afficher que les rubriques qui contiennent un article ayant pour mot clé le numéro de newsletter que j'aurai choisi.

et evidemment, certaines semaines de parution, certaines rubriques n'ont pas d'article.

merci d'avance

lijko wrote:

Bonjour,

voilà mon script, une partie, de mon squelette de sommaire:

<BOUCLE_newsletter(RUBRIQUES) {id_rubrique=7}>
        <TD valign="top" align="left" WIDTH="50%">
    <BOUCLE_sous_rubriques1(RUBRIQUES){id_parent}{1/2}>
        <b>#TITRE</b>
        <ul>
        <BOUCLE_articles1(ARTICLES){id_rubrique}{titre_mot=65}>
            <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
        </BOUCLE_articles1>
        </ul>
    </BOUCLE_sous_rubriques1>
        </TD>
        <TD valign="top" align="left" WIDTH="50%">
    <BOUCLE_sous_rubriques2(RUBRIQUES){id_parent}{2/2}>
        <b>#TITRE</b>
        <ul>
        <BOUCLE_articles2(ARTICLES){id_rubrique}{id_rubrique}{titre_mot=65}>
            <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
        </BOUCLE_articles2>
        </ul>
    </BOUCLE_sous_rubriques2>
        </TD> </BOUCLE_newsletter>

en fait le truc est le suivant, je cherche à ne faire s'afficher que les rubriques qui contiennent un article ayant pour mot clé le numéro de newsletter que j'aurai choisi.

et evidemment, certaines semaines de parution, certaines rubriques n'ont pas d'article.

merci d'avance

Essaie :
<BOUCLE_sous_rubriques1(RUBRIQUES){id_parent}{1/2}>
         <B_articles1>
  <b>#TITRE</b>
         <ul>
         <BOUCLE_articles1(ARTICLES){id_rubrique}{titre_mot=65}>
             <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
         </BOUCLE_articles1>
         </ul>
  </B_articles1>
     </BOUCLE_sous_rubriques1>

Et attention au tag soup.

--

Olivier G.
http://talath.no-ip.info/~carmine/blog/dotclear/index.php/

A mon avis, ta boucle de départ doit sélectionner
l'article et non la rubrique. Et il va falloir que
tu indiques un critère temporel de sélection :

Autrement dit tu veux:

- Récupérer l'article correspondant à un motclé
newsletter ET à un mot clé désignant une rubrique
ET publié depuis moins d'une semaine
- Afficher le titre de la rubrique dont il dépend

Si la boucle ne donne pas de résultat, alors rien
ne s'affichera. Si tu pars de la rubrique, son titre
s'affichera dès que tu auras un article publié.

En fait la solution d'olivier est plus simple

Ok, c cool ça fonctionne, je ne sais pas pourquoi;-) mais ça fonctionne

la solution d'Olivier est plus simple, c clair, et je crois que la solution d'Eddy ne fonctionnerait pas, elle m'afficherait k m les rubriques vides, non???

merci à vous deux en tout cas

Olivier GENDRIN wrote:

lijko wrote:

Bonjour,

voilà mon script, une partie, de mon squelette de sommaire:

<BOUCLE_newsletter(RUBRIQUES) {id_rubrique=7}>
        <TD valign="top" align="left" WIDTH="50%">
    <BOUCLE_sous_rubriques1(RUBRIQUES){id_parent}{1/2}>
        <b>#TITRE</b>
        <ul>
        <BOUCLE_articles1(ARTICLES){id_rubrique}{titre_mot=65}>
            <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
        </BOUCLE_articles1>
        </ul>
    </BOUCLE_sous_rubriques1>
        </TD>
        <TD valign="top" align="left" WIDTH="50%">
    <BOUCLE_sous_rubriques2(RUBRIQUES){id_parent}{2/2}>
        <b>#TITRE</b>
        <ul>
        <BOUCLE_articles2(ARTICLES){id_rubrique}{id_rubrique}{titre_mot=65}>
            <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
        </BOUCLE_articles2>
        </ul>
    </BOUCLE_sous_rubriques2>
        </TD> </BOUCLE_newsletter>

en fait le truc est le suivant, je cherche à ne faire s'afficher que les rubriques qui contiennent un article ayant pour mot clé le numéro de newsletter que j'aurai choisi.

et evidemment, certaines semaines de parution, certaines rubriques n'ont pas d'article.

merci d'avance

Essaie :
<BOUCLE_sous_rubriques1(RUBRIQUES){id_parent}{1/2}>
        <B_articles1>
    <b>#TITRE</b>
        <ul>
        <BOUCLE_articles1(ARTICLES){id_rubrique}{titre_mot=65}>
            <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
        </BOUCLE_articles1>
        </ul>
    </B_articles1>
    </BOUCLE_sous_rubriques1>

Et attention au tag soup.

Bonjour

Est -il possible d'exclure plusieurs rubriques du genre :

{id_rubrique!= 36&38...}

Merci d'avance pour votre aide
Philippe

Oui il possible d'exclure plusieurs rubriques, mais ta syntaxe est fausse,
voici la bonne :

{id_rubrique!==^(36|38)$}

La prochaine fois, fait un nouveau poste car là tu as posté au milieu d'un
sujet qui n'a rien avoir avec ton post.
De plus, si tu avais cherché un peu, tu verrais que la réponse a été donnée
des dizaine de fois. N'oublie pas aussi que google est ton ami.
Faite un effort les gars...

@+
Paul Sanches
paul@1formatik.com

"Philippe" <philippebessiere@free.fr> a écrit dans le message de news:
00af01c49a46$f40b8380$193de652@ensemblevide...

Bonjour

Est -il possible d'exclure plusieurs rubriques du genre :

{id_rubrique!= 36&38...}

Merci d'avance pour votre aide
Philippe

lijko wrote:

Ok, c cool ça fonctionne, je ne sais pas pourquoi;-) mais ça fonctionne

Ma solution (pour rappel :
<BOUCLE_sous_rubriques1(RUBRIQUES){id_parent}{1/2}>
         <B_articles1>
     <b>#TITRE</b>
         <ul>
         <BOUCLE_articles1(ARTICLES){id_rubrique}{titre_mot=65}>
             <li type="square"><a href="#URL_ARTICLE">#TITRE</a></li>
         </BOUCLE_articles1>
         </ul>
     </B_articles1>
     </BOUCLE_sous_rubriques1>
)
fonctionne car quand tu est entre <B_articles1> et <BOUCLE_articles1>, les critères d'environnement sont toujours ceux de <BOUCLE_sous_rubriques1>, donc #TITRE est celui de la rubrique.

Mais le fait de le mettre entr B et BOUCLE fait que son affichage est conditionné à la présence d'au moins un résultat pour les critères de la boucle article1. Donc s'il n'y a pas de résultat, le titre de la rubrique ne s'affiche pas non plus.

Cf. La syntaxe des boucles - SPIP, Syntaxe complète.

--

Olivier G.
http://talath.no-ip.info/~carmine/blog/dotclear/index.php/

Bonsoir,

ce n'est pas une question que je pose mais sa réponse. Elle est plutôt
destinée aux débutants (comme moi) sous SPIP. Afin qu'ils évitent de faire
une erreur. Si cela peut être utile ne serait-ce qu'une seule fois...

Mes squelettes perso s'affichaient correctement dans IE. Sans quelques
messages sur ce forum, je n'aurai pas eu l'idée d'aller vérifier avec
d'autres navigateurs. Sous Mozilla le bandeau ne s'affichait pas et sous
Netscape seul le bandeau s'affichait!

Après quelques temps (longs...) de recherche, j'ai découvert mon erreur: des
espaces mal placées ou absentes. J'explique. Afin de commenter mon site,
j'abuse des commentaires et j'utilise en chaque début de page les balises
d'ouverture ou de fermeture seules sur une ligne. Les erreurs venaient soit
de l'ajout d'une espace avant la balise d'ouverture, soit de l'absence de la
même espace après la balise d'ouverture et de fermeture juste avant le
retour chariot. Attention, ce n'est guère perceptible si on ne visualise pas
les caractères invisibles. Ce qui suivait était alors considéré comme des
commentaires et donc non interprétés ni par spip ni par le navigateur (seul
le php était correctement pris en compte mais inutilement).

roland.bouat@lorand.org