Yop,
avant de faire un truc compliqué a base de php, je me demande si il est possible de faire une boucle en spip qui liste les x derniers documents publiés dans n'importe quel article d'une rubrique.
ex :
j'ai une rubrique fiche_film
dedans, par ordre chronologique inverse (le plus récent en premier), j'ai 5 films, on va dire et totalement au hasard :
Titanic - 15/03/007
Hulk - 13/03/007
Meurtre dans un jardin anglais - 11/03/007
Coup de foudre a nothing hill - 9/03/007
Red Rock West - 7/03/007
Je rajoute des photos de tournage a ces films au fur et a mesure que j'en trouve
la derniere photo ajoutée est dans coup de foudre truc (cdf411.jpg)
l'avant derniere dans hulk (hulk123.jpg)
et l'avant avant derniere dans RedRockWest (rrw004.jpg)
comment faire une boucle qui ressorte dans cet ordre
- cdf411.jpg
- hulk123.jpg
- rrw004.jpg
Je ne peux pas faire de boucle DOCUMENTS directement sur la rubrique car ca me ressortirait les docs de la rubrique (et elle n'en a pas)
donc, je peux faire une boucle ARTICLES sur la RUBRIQUE pour deja ressortir tous les articles de la rubrique mais apres...
comment ressortir les documents ajoutés en dernier ?
Enfin voila, si qq1 a une idée... 
Chag
PS l'exemple est totalement fictif.
--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien
"it doesn't work" means nothing. So, say nothing
Tu devrais pouvoir faire ça avec une jointure dans la boucle :
<BOUCLE_derniers_docs(DOCUMENTS documents_articles articles) {id_rubrique} {!par date} {0,3}>
#FICHIER
</BOUCLE_derniers_docs>
Mais il se peut que cette possibilité des jointures change dans les futures versions, voir Discuter chez rezo.net.
BMR
chag a écrit :
Yop,
avant de faire un truc compliqué a base de php, je me demande si il est possible de faire une boucle en spip qui liste les x derniers documents publiés dans n'importe quel article d'une rubrique.
ex :
j'ai une rubrique fiche_film
dedans, par ordre chronologique inverse (le plus récent en premier), j'ai 5 films, on va dire et totalement au hasard :
Titanic - 15/03/007
Hulk - 13/03/007
Meurtre dans un jardin anglais - 11/03/007
Coup de foudre a nothing hill - 9/03/007
Red Rock West - 7/03/007
Je rajoute des photos de tournage a ces films au fur et a mesure que j'en trouve
la derniere photo ajoutée est dans coup de foudre truc (cdf411.jpg)
l'avant derniere dans hulk (hulk123.jpg)
et l'avant avant derniere dans RedRockWest (rrw004.jpg)
comment faire une boucle qui ressorte dans cet ordre
- cdf411.jpg
- hulk123.jpg
- rrw004.jpg
Je ne peux pas faire de boucle DOCUMENTS directement sur la rubrique car ca me ressortirait les docs de la rubrique (et elle n'en a pas)
donc, je peux faire une boucle ARTICLES sur la RUBRIQUE pour deja ressortir tous les articles de la rubrique mais apres...
comment ressortir les documents ajoutés en dernier ?
Enfin voila, si qq1 a une idée... 
Chag
PS l'exemple est totalement fictif.
alors moi je dis BRAVO,
Spip est une vraie tuerie atomique (comme dirait mon petit cousin) et tous les jours je découvre de nouvelles fonctionnalités extraordinaires (n'ayons pas peur des mots !!)
Merci !
Chag
BMR a écrit :
Tu devrais pouvoir faire ça avec une jointure dans la boucle :
<BOUCLE_derniers_docs(DOCUMENTS documents_articles articles) {id_rubrique} {!par date} {0,3}>
#FICHIER
</BOUCLE_derniers_docs>
Mais il se peut que cette possibilité des jointures change dans les futures versions, voir Discuter chez rezo.net.
BMR
--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien
"it doesn't work" means nothing. So, say nothing
on dirait qu'avec la jointure, je ne peux plus utiliser le
{extension IN png,jpg,gif}
la requete générée est
documents.id_document, SUM(FIELD(extension,'png','jpg','gif')) AS cpt1 FROM spip_documents_articles AS `L1`, spip_articles AS `L2`, spip_documents AS `documents` WHERE (L2.id_rubrique = '3') AND (documents.mode = 'document') 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 documents.date DESC LIMIT 0,2
et l'erreur : Unknown column 'extension' in 'field list'
Je pense que l'erreur vient de la :
SUM(FIELD(extension,'png','jpg','gif'))
on devrait avoir a la place
SUM(FIELD(documents.extension,'png','jpg','gif'))
Non ?
je poste sur spid-dev ?
BMR a écrit :
Tu devrais pouvoir faire ça avec une jointure dans la boucle :
<BOUCLE_derniers_docs(DOCUMENTS documents_articles articles) {id_rubrique} {!par date} {0,3}>
#FICHIER
</BOUCLE_derniers_docs>
Mais il se peut que cette possibilité des jointures change dans les futures versions, voir Discuter chez rezo.net.
BMR
chag a écrit :
--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien
"it doesn't work" means nothing. So, say nothing
Oui en effet on dirait un bug de la jointure. D'ailleurs je ne comprends pas le pourquoi du SUM.
Peut-être pourrais-tu utiliser une expression régulière à la place du IN : {extension==(png|jpg|gif)} ?
BMR
chag a écrit :
on dirait qu'avec la jointure, je ne peux plus utiliser le
{extension IN png,jpg,gif}
la requete générée est
documents.id_document, SUM(FIELD(extension,'png','jpg','gif')) AS cpt1 FROM spip_documents_articles AS `L1`, spip_articles AS `L2`, spip_documents AS `documents` WHERE (L2.id_rubrique = '3') AND (documents.mode = 'document') 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 documents.date DESC LIMIT 0,2
et l'erreur : Unknown column 'extension' in 'field list'
Je pense que l'erreur vient de la :
SUM(FIELD(extension,'png','jpg','gif'))
on devrait avoir a la place
SUM(FIELD(documents.extension,'png','jpg','gif'))
Non ?
je poste sur spid-dev ?
BMR a écrit :
Tu devrais pouvoir faire ça avec une jointure dans la boucle :
<BOUCLE_derniers_docs(DOCUMENTS documents_articles articles) {id_rubrique} {!par date} {0,3}>
#FICHIER
</BOUCLE_derniers_docs>
Mais il se peut que cette possibilité des jointures change dans les futures versions, voir Discuter chez rezo.net.
BMR
chag a écrit :
pas mieux. j'ai :
documents.id_document FROM spip_documents_articles AS `L1`, spip_articles AS `L2`, spip_documents AS `documents` WHERE (L2.id_rubrique = '1') AND (documents.mode = 'document') AND (extension REGEXP '(png|jpg|gif)') 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 ORDER BY documents.date DESC LIMIT 0,2
a priori, ca a l'air bon au niveau de la syntaxe. Il ne connait juste pas la colonne "extension"
Chag
BMR a écrit :
Oui en effet on dirait un bug de la jointure. D'ailleurs je ne comprends pas le pourquoi du SUM.
Peut-être pourrais-tu utiliser une expression régulière à la place du IN : {extension==(png|jpg|gif)} ?
BMR
--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien
"it doesn't work" means nothing. So, say nothing
le champ extension n'existe pas dans la table spip_documents. Il est dans
spip_type_documents (table jointe à la première).
Donc il faudrait pour bien faire (mais là cela dépasse mes competences) faire
une double jointures dans la boucle.
Cordialement,
Xavier BUROT
Selon chag <chagam@gmail.com>:
pas mieux. j'ai :
documents.id_document FROM spip_documents_articles AS `L1`,
spip_articles AS `L2`, spip_documents AS `documents` WHERE
(L2.id_rubrique = '1') AND (documents.mode = 'document') AND (extension
REGEXP '(png|jpg|gif)') 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
ORDER BY documents.date DESC LIMIT 0,2
a priori, ca a l'air bon au niveau de la syntaxe. Il ne connait juste
pas la colonne "extension"
Chag
BMR a écrit :
> Oui en effet on dirait un bug de la jointure. D'ailleurs je ne comprends
> pas le pourquoi du SUM.
>
> Peut-être pourrais-tu utiliser une expression régulière à la place du IN
> : {extension==(png|jpg|gif)} ?
>
> BMR
>
--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien
"it doesn't work" means nothing. So, say nothing
_______________________________________________
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
excellent...
avec ca :
<BOUCLE_list_photos(DOCUMENTS documents_articles articles types_documents){id_rubrique}{mode=document}{extension==(png|jpg|gif)}{!par date}{0,2}>
<div class="rubrique_photos"><a href="spip.php?page=show_photo&doc=#ID_DOCUMENT">#LOGO_DOCUMENT</a></div>
</BOUCLE_list_photos>
ca a l'air de marcher. Je vais faire qq tests !!
Merci a tous !
Xavier BUROT a écrit :
le champ extension n'existe pas dans la table spip_documents. Il est dans
spip_type_documents (table jointe à la première).
Donc il faudrait pour bien faire (mais là cela dépasse mes competences) faire
une double jointures dans la boucle.
Cordialement,
Xavier BUROT
http://xebiaut.free.fr
Selon chag <chagam@gmail.com>:
pas mieux. j'ai :
documents.id_document FROM spip_documents_articles AS `L1`,
spip_articles AS `L2`, spip_documents AS `documents` WHERE
(L2.id_rubrique = '1') AND (documents.mode = 'document') AND (extension
REGEXP '(png|jpg|gif)') 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
ORDER BY documents.date DESC LIMIT 0,2
a priori, ca a l'air bon au niveau de la syntaxe. Il ne connait juste
pas la colonne "extension"
Chag
BMR a écrit :
Oui en effet on dirait un bug de la jointure. D'ailleurs je ne comprends
pas le pourquoi du SUM.
Peut-être pourrais-tu utiliser une expression régulière à la place du IN
: {extension==(png|jpg|gif)} ?
BMR
--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien
"it doesn't work" means nothing. So, say nothing
_______________________________________________
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
--
"Ca ne marche pas" ne veut rien dire. Alors ne dites rien
"it doesn't work" means nothing. So, say nothing
Xavier BUROT a écrit :
le champ extension n'existe pas dans la table spip_documents. Il est dans
spip_type_documents (table jointe à la première).
Donc il faudrait pour bien faire (mais là cela dépasse mes competences) faire
une double jointures dans la boucle.
Cordialement,
Xavier BUROT
http://xebiaut.free.fr
Ben c'est vrai... J'aurais dû m'en souvenir car j'ai rajouté une extension dans cette table pour un site.
BMR