Je vais essayer d'expliquer ce que j'ai compris du principe.
SPIP définit, en interne, les champs qui vont permettre la jonction entre deux
tables. Par exemple id_rubrique servera de clé de jonction entre la table
RUBRIQUES et ARTICLES.
Voici donc pour le principe.
Maintenant pour réaliser une boucle de jonction, il faut une table primaire
(celle sur laquelle on veut recupérer le plus d'info) et les tables jointes.
Dans le cas présent, la table primaire est DOCUMENTS (en majuscules
obligatoirement). Et les tables jointes sont documents_articles, articles et
types_documents (à écrire en minuscule obligatoirement).
Maintenant le rôle de chacune de ces 3 tables :
- documents_articles contient id_document et id_article ce qui permet de faire
le lien entre les tables article et documents. Sans cela, il n'y aurait pas de
jointure car il n'y pas dans documents de champs id_article et inversement dans
articles.
- articles contient toutes les informations concernant un article et il est là
pour vérifier que l'article est bien publié et pour donner l'adresse de la page
article liée au document.
- types_documents est là simplement pour que le filtre {extension IN
png,jpg,gif} puisse fonctionner.
J'espère avoir été assez clair dans mes explications.
Xavier BUROT
Selon Frank <frkdavid2@free.fr>:
Xavier BUROT a écrit :
> Bonjour,
>
> Je vois que ma petite boucle fait beaucoup parler.
>
> Pour ce qui de la syntaxe particulière de ma boucle, c'est sur ce fil que
je
> l'ai eu. Elle permet d'effectuer une jointure des données entre différentes
> tables. Cela permet d'avoir accès à des données de plusieurs tables en une
> seules boucles.
>
> Pour ce qui est de l'utilisation de la balise #EVAL, je ne sais plus
pourquoi je
> l'ai mise. Je sais que lors de la création du premier script (en version
1.9)
> j'avais été obligé de le mettre sinon cela plantait.
>
> Sinon pour rpapa voici mon code et que j'ai testé et qui fonctionne
celui-là :
>
> <B_vignette>
> <div>
> <BOUCLE_vignette(DOCUMENTS documents_articles articles
> types_documents){id_rubrique=3}{extension IN png,jpg,gif}{par
> hasard}{inverse}{0,1}>
> [<a
href="#URL_ARTICLE">(#vignette:LOGO_DOCUMENT||image_reduire{167,167})</a>]
> </BOUCLE_vignette>
> </div>
> </B_vignette>
>
> J'espère que cela fonctionnera chez vous. Tenez moi au courant.
>
> Xavier BUROT
> http://xebiaut.free.fr
>
>
> Xavier BUROT
> http://xebiaut.free.fr
>
>
> Selon Frank <frkdavid2@free.fr>:
>
>> Xavier BUROT a écrit :
>>> Bonsoir,
>>>
>>> J'ai realisé recemment un boucle qui recuperait les 10 dernières photos
>> publiées
>>> dans un secteur précis. Voici la boucle que cela donne :
>>>
>>> [(#REM) Affiche photos du site ]
>>> <B_photos>
>>> <div class="rubriques">
>>> <h2 class="menu-titre">Photos}</h2>
>>> <B_vignette>
>>> <div id="lesphotos" class="affiche-document">
>>> <BOUCLE_vignette(DOCUMENTS documents_articles articles
>>> types_documents){id_secteur=3}{extension IN png,jpg,gif}{par
>>> date}{inverse}{0,10}>
>>> [<div id="doc#COMPTEUR_BOUCLE"
>>>
>
class="[(#EVAL{[(#COMPTEUR_BOUCLE)]}|=={1}|?{voir,cacher})]">(#LOGO_DOCUMENT||image_reduire{167,167})</div>]
>>> </BOUCLE_vignette>
>>> </div>
>>> <br class="nettoyeur" />
>>> </B_vignette>
>>> #ANCRE_PAGINATION
>>> <ul>
>>> <BOUCLE_photos(ARTICLES){id_secteur=3}{par date}{inverse}{pagination 5}>
>>> <li>[(#DATE|affdate_court) – ]<a href="#URL_ARTICLE"
>>> class="spip_in">[(#TITRE|couper{80})]</a></li>
>>> </BOUCLE_photos>
>>> </ul>
>>> [<p class="pagination">(#PAGINATION)</p>]
>>> </div>
>>> </B_photos>
>>>
>>> Je pense que dans ton cas précis, la boucle pourrait donner cela pour la
>>> rubrique n°3 :
>>>
>>> <B_vignette>
>>> <div>
>>> <BOUCLE_vignette(DOCUMENTS documents_articles articles
>>> types_documents){id_rubrique=3}{extension IN png,jpg,gif}{par
>>> hasard}{inverse}{0,1}>
>>> <BOUCLE_art(ARTICLES){id_article}>
>>> [<a
>>>
href="#URL_ARTICLE">(#vignette:LOGO_DOCUMENT||image_reduire{167,167})</a>]
>>> </BOUCLE_art>
>>> </BOUCLE_vignette>
>>> </div>
>>> <br class="nettoyeur" />
>>> </B_vignette>
>>>
>>> Voilà j'espère que cela t'aidera. Tiens moi au courant.
>>>
>>> Cordialement,
>>>
>>> Xavier BUROT
>>> http://xebiaut.free.fr
>>>
>>>
>>> Selon rpapa <rpapa_news@apinc.org>:
>>>
>>>> salut
>>>>
>>>> j'ai des articles avec des photos, d'autres sans
>>>> je voudrais afficher dans chaque rubrique une petite miniature d'une des
>>>> photos au hasard prise dans un des articles de la rubrique et de ces
>>>> sous rubriques
>>>>
>>>> ça je sais faire
>>>>
>>>>
>>>> ce que je voudrais, c'est qu'en cliquant sur la miniature, on ouvre
>>>> l'article associé
>>>>
>>>> ça je sais pas faire, je ne sais pas récupérer l'id_article
>>>>
>>>>
>>>> A=
>>>>
>>>> _______________________________________________
>>>> liste spip
>>>> spip@rezo.net - désabonnement : spip-off@rezo.net
>>>> Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
>>>> Documentation de SPIP : http://www.spip.net/
>>>> irc://irc.freenode.net/spip
>>>> FAQ : http://www.spip-contrib.net/spikini/FaQ
>>>>
>> Bonjour,
>>
>> Je n'ai jamais rencontré cette syntaxe de boucle, peux-tu m'expliquer ce
>> principe stp : BOUCLE_xx(TYPE yyyy zzzz wwww)
>>
>> <BOUCLE_vignette(DOCUMENTS documents_articles articles types_documents)...
>>
>>
>>
>> Pourquoi faire un #EVAL sur le compteur ?
>> class="[(#EVAL{[(#COMPTEUR_BOUCLE)]}|=={1}|?{voir,cacher})]"
>>
>> merci pour ces éclairages.
>>
>> Frank
>>
>> _______________________________________________
>> liste spip
>> spip@rezo.net - désabonnement : spip-off@rezo.net
>> Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
>> Documentation de SPIP : http://www.spip.net/
>> irc://irc.freenode.net/spip
>> FAQ : http://www.spip-contrib.net/spikini/FaQ
>>
Merci pour cette information très interessante.
Peux-tu nous en expliquer un peu plus sur cette boucle.
Il s'agit d'une boucle de la table DOCUMENTS sur la-quelle tu établis
des jointures avec les tables documents_articles, articles et
types_documents. Mais sur quels champs fais-tu ces jointures et comment
récupères-tu les données de ces dernières tables ???.
merci beaucoup.
Frank
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ