BoOz a écrit :
Stephane wrote:
Il faut aussi que l'article soit publié.
ben oui, sinon les documents ne sont pas accessibles de toutes facons (selon la logique Spip)
Ben je crois bien que si justement, d'ou la contrainte.
sinon à l'ancienne :
<BOUCLE_art(ARTICLES) {id_rubrique=85}>
<BOUCLE_doc(DOCUMENTS){id_article}{mode=document}{extension IN png,jpg,gif}{doublons x}></BOUCLE_doc>
</BOUCLE_art>
<BOUCLE_une(DOCUMENTS spip_documents_articles spip_articles) {!doublons x} {par hasard}{0,10}>
je crois que le but etait de mettre 10 images au hasard piochées dans les articles d'une rubrique donnée.
Donc les articles sans document, de toutes facons, on ne les veut pas.
Ben oui, donc il ne faut pas les prendre dans la boucle !!!
Or la <BOUCLE_art(ARTICLES) {id_rubrique=85}> on les prend.
Le mieux c'est bien la boucle jointure je crois, compte tenu de tout ca.
Je ne sais pas en revanche s'il vaut mieux entre ca qui marche
<BOUCLE_docpodcast(ARTICLES documents_articles documents types_documents
mots_articles) {id_rubrique = 85} {statut=publie} {par hasard}{0,10}>
ou
<BOUCLE_une(DOCUMENTS spip_documents_articles spip_articles)
{id_rubrique=85}{statut = publie}
{mode=document}{extension IN png,jpg,gif}{par hasard}{0,10}>
est ce que le id_rubrique et le statut marchent dans le second cas ? si oui ca doit etre le mieux
Je viens d'essayer les deux boucles avec jointure en vain.
Voir ci-dessous les messages d'erreur.
J'ai fini par adopter cette boucle imbriquée.
<BOUCLE_81(ARTICLES){id_rubrique=81}{par hasard}>
<BOUCLE_une(DOCUMENTS) {id_article} {mode=document}{extension IN png,jpg,gif}{par hasard}{doublons {doc}}>
</BOUCLE_une>
</BOUCLE_81>
<BOUCLE_doc(DOCUMENTS){!doublons {doc}}{par hasard}{0,20}>
<BOUCLE_url(ARTICLES){id_document}>
<a href="#URL_ARTICLE"></BOUCLE_url>[(#FICHIER|copie_locale|image_reduire{0,60}|inserer_attribut{title,[(#TITRE|couper{70}|texte_backend)]})]</a>
</BOUCLE_doc>
<BOUCLE_une>(documents)*Erreur MySQL*
documents.id_document, SUM(FIELD(extension,'png','jpg','gif')) AS cpt1, RAND() AS alea, L1.id_article, documents.fichier, documents.titre FROM spip_documents_articles AS `L1`, spip_articles AS `L2`, spip_documents AS `documents` WHERE (L2.id_rubrique = '85') AND (L2.statut = 'publie') AND (documents.mode = 'document') AND ((documents.id_document NOT IN (1))) AND (documents.taille > 0 OR documents.distant="oui") AND L1.id_article=L2.id_article AND documents.id_document=L1.id_document GROUP BY documents.id_document HAVING (cpt1 <> 0) ORDER BY alea LIMIT 0,10
*Unknown column 'extension' in 'field list'*
</BOUCLE_une>
<BOUCLE_doc>(articles)
*Erreur MySQL*
RAND() AS alea, J0.fichier, articles.titre, articles.id_article, articles.lang FROM spip_documents AS `J0`, spip_articles AS `articles` WHERE (articles.id_rubrique = '85') AND (articles.statut = 'publie') AND (articles.id_document = J0.id_document) ORDER BY alea LIMIT 0,10
*Unknown column 'articles.id_document' in 'where clause'*
</BOUCLE_doc>