mots et auteurs

Bonjour

J'ai un petit probleme avec une boucle, probablement un truc de syntaxe qui me manque mais j'ai beau creuser la doc je ne trouve pas

mon probleme est le suivant : associer chaque rubrique à un auteur, de manière à afficher des infos sur cet auteur

pour ce faire, j'ai des mots clés de type redacteurRubrique, et j'en mets un un par rubrique dont la valeur est l'id de l'auteur (3, 4)...

donc, dans ma rubrique je récupère le mot clé, et je recherche l'auteur qui correspond, ce qui devrait ressembler à :

<BOUCLE_id_redacteur(MOTS) {id_rubrique} {type=redacteurRubrique}>
  <BOUCLE_redacteur(AUTEURS) {id_auteur=#TITRE}>
    #NOM
  </BOUCLE_redacteur>
</BOUCLE_id_redacteur>

la valeur de #TITRE est bonne, je le vérifie en l'affichant
malheuresement la boucle ci dessus produit la requète :

SELECT auteurs.* FROM spip_auteurs AS auteurs,spip_auteurs_articles AS lien,spip_articles AS articles WHERE auteurs.id_auteur='#TITRE' AND lien.id_auteur=auteurs.id_auteur AND lien.id_article=articles.id_article AND articles.statut='publie' AND NOT(auteurs.statut='5poubelle') GROUP BY auteurs.id_auteur

auteurs.id_auteur='#TITRE' : il semble bien que dans la requete la valeur ne soit pas interprétée

une idée ?

Julien

********* Attention ceci est du spip 1.8 nouveau compilo :slight_smile: **********

Alors en fait :

<BOUCLE_id_redacteur(MOTS) {id_rubrique} {type=redacteurRubrique}>
> <BOUCLE_redacteur(AUTEURS) {id_auteur=#TITRE}>
> #NOM
> </BOUCLE_redacteur>
> </BOUCLE_id_redacteur>

La il spip pense que le titre est celui de l'auteur car on est dans une boucle auteur, et donc il ne trouve pas.

Il faut préciser qu'on parle du titre de la boucle du dessus : #labouclequonveut:TITRE

<BOUCLE_id_redacteur(MOTS) {id_rubrique} {type=redacteurRubrique}>
<BOUCLE_redacteur(AUTEURS) {id_auteur=#_id_redacteur:TITRE}>
      #NOM
   </BOUCLE_redacteur>
</BOUCLE_id_redacteur>

Enfin je crois que c'est quelque chose comme ca.

Si ca fonctionne tu serais sympa de re-rédiger ce bout la de la doc sur le wiki, avec un autre exemple que celui de ficher des auteurs :slight_smile:

http://www.spip-contrib.net/spikini/index.php?wiki=NouveauCompilo

Julien Kirch a écrit :

Bonjour

J'ai un petit probleme avec une boucle, probablement un truc de syntaxe qui me manque mais j'ai beau creuser la doc je ne trouve pas

mon probleme est le suivant : associer chaque rubrique à un auteur, de manière à afficher des infos sur cet auteur

pour ce faire, j'ai des mots clés de type redacteurRubrique, et j'en mets un un par rubrique dont la valeur est l'id de l'auteur (3, 4)...

donc, dans ma rubrique je récupère le mot clé, et je recherche l'auteur qui correspond, ce qui devrait ressembler à :

<BOUCLE_id_redacteur(MOTS) {id_rubrique} {type=redacteurRubrique}>
  <BOUCLE_redacteur(AUTEURS) {id_auteur=#TITRE}>
    #NOM
  </BOUCLE_redacteur>
</BOUCLE_id_redacteur>

la valeur de #TITRE est bonne, je le vérifie en l'affichant
malheuresement la boucle ci dessus produit la requète :

SELECT auteurs.* FROM spip_auteurs AS auteurs,spip_auteurs_articles AS lien,spip_articles AS articles WHERE auteurs.id_auteur='#TITRE' AND lien.id_auteur=auteurs.id_auteur AND lien.id_article=articles.id_article AND articles.statut='publie' AND NOT(auteurs.statut='5poubelle') GROUP BY auteurs.id_auteur

auteurs.id_auteur='#TITRE' : il semble bien que dans la requete la valeur ne soit pas interprétée

une idée ?

Julien

BoOz wrote:

********* Attention ceci est du spip 1.8 nouveau compilo :slight_smile: **********

<pas de bol>
et en 1.7.2 ?
</pas de bol>

Julien

Julien Kirch wrote:

et en 1.7.2 ?

Bonsoir,
On ne peut pas utiliser {id_auteur=#TITRE} avec Spip 1.7.x
Il faudrait, je pense, utiliser de PHP.
(Il vaut mieux, un peu de courage et passer à Spip 1.8 béta.)

Une boucle que j'avais avec 1.7.2 :

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
<?php $pointer=#TITRE; ?>
<BOUCLE_pointedto(MOTS){type=PointedTo}>
<?php $pointedto=#TITRE; ?>
<BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<?php
  if ($pointedto==$pointer){
  echo '<li><a href=#URL_ARTICLE>[(#TITRE|supprimer_numero)]</a></li>';
  } ?>
</BOUCLE_seealso>
</BOUCLE_pointedto>
</BOUCLE_pointers>

- - - - -

devient, avec 1.8.2 béta :

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
    <BOUCLE_pointedto(MOTS){type=PointedTo}{titre=#TITRE}>
         <BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
         </BOUCLE_seealso>
    </BOUCLE_pointedto>
</BOUCLE_pointers>

Paolo

Julien Kirch a écrit :

BoOz wrote:

********* Attention ceci est du spip 1.8 nouveau compilo :slight_smile: **********

<pas de bol>
et en 1.7.2 ?
</pas de bol>

Ben si ton auteur ecrit le premier article de la rubrique tu peux chopper l'auteur de l'article le plus vieux.

Paolo a écrit :

Une boucle que j'avais avec 1.7.2 :

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
<?php $pointer=#TITRE; ?>
<BOUCLE_pointedto(MOTS){type=PointedTo}>
<?php $pointedto=#TITRE; ?>
<BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<?php
  if ($pointedto==$pointer){
  echo '<li><a href=#URL_ARTICLE>[(#TITRE|supprimer_numero)]</a></li>';
  } ?>
</BOUCLE_seealso>
</BOUCLE_pointedto>
</BOUCLE_pointers>

Hou ca : <?php $pointer=#TITRE; ?> c'est interdit :slight_smile:

Pour assurer la sécurité : <?php $pointer=[(#TITRE|texte_script)]; ?>

devient, avec 1.8.2 béta :

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
    <BOUCLE_pointedto(MOTS){type=PointedTo}{titre=#TITRE}>
         <BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
         </BOUCLE_seealso>
    </BOUCLE_pointedto>
</BOUCLE_pointers>

Et alors #TITRE c'est le titre de quel résultat de quelle boucle ?

BoOz wrote:

Hou ca : <?php $pointer=#TITRE; ?> c'est interdit :slight_smile:
Pour assurer la sécurité : <?php $pointer=[(#TITRE|texte_script)]; ?>

Encore une fois, Vincent, tu parles de choses qui me dépassent :slight_smile:
Heureusement, j'ai passé à 1.8 et ne fais plus des choses interdites...

devient, avec 1.8.2 béta :

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
    <BOUCLE_pointedto(MOTS){type=PointedTo}{titre=#TITRE}>
         <BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
         </BOUCLE_seealso>
    </BOUCLE_pointedto>
</BOUCLE_pointers>

Et alors #TITRE c'est le titre de quel résultat de quelle boucle ?

On cherche s'il y a des mots du groupe Pointers attachés à l'article,
La 2eme boucle cherche le mot avec le même TITRE (de mot) dans le groupe
PointedTo.
La 3eme boucle cherche les articles associés à ce mot clé et affiche l'URL
et le TITRE (de l'article).
Une paire de mots-clés qui permettent de mettre des liens pour associer des
articles, donc (mais en sens unique).

Paolo

Paolo a écrit :

BoOz wrote:

Hou ca : <?php $pointer=#TITRE; ?> c'est interdit :slight_smile:
Pour assurer la sécurité : <?php $pointer=[(#TITRE|texte_script)]; ?>

Encore une fois, Vincent, tu parles de choses qui me dépassent :slight_smile:
Heureusement, j'ai passé à 1.8 et ne fais plus des choses interdites...

devient, avec 1.8.2 béta :

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
   <BOUCLE_pointedto(MOTS){type=PointedTo}{titre=#TITRE}>
        <BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
        </BOUCLE_seealso>
   </BOUCLE_pointedto>
</BOUCLE_pointers>

Et alors #TITRE c'est le titre de quel résultat de quelle boucle ?

On cherche s'il y a des mots du groupe Pointers attachés à l'article,
La 2eme boucle cherche le mot avec le même TITRE (de mot) dans le groupe PointedTo.
La 3eme boucle cherche les articles associés à ce mot clé et affiche l'URL et le TITRE (de l'article).
Une paire de mots-clés qui permettent de mettre des liens pour associer des articles, donc (mais en sens unique).

Les mots clés des groupes Pointers et PointedTo ont les mêmes titres ?

Cela ne suffit pas ?

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>

<BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
</BOUCLE_seealso>

</BOUCLE_pointers>

Paolo a écrit :

BoOz wrote:

Hou ca : <?php $pointer=#TITRE; ?> c'est interdit :slight_smile:
Pour assurer la sécurité : <?php $pointer=[(#TITRE|texte_script)]; ?>

Encore une fois, Vincent, tu parles de choses qui me dépassent :slight_smile:
Heureusement, j'ai passé à 1.8 et ne fais plus des choses interdites...

devient, avec 1.8.2 béta :

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
   <BOUCLE_pointedto(MOTS){type=PointedTo}{titre=#TITRE}>
        <BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
        </BOUCLE_seealso>
   </BOUCLE_pointedto>
</BOUCLE_pointers>

Et alors #TITRE c'est le titre de quel résultat de quelle boucle ?

On cherche s'il y a des mots du groupe Pointers attachés à l'article,
La 2eme boucle cherche le mot avec le même TITRE (de mot) dans le groupe PointedTo.
La 3eme boucle cherche les articles associés à ce mot clé et affiche l'URL et le TITRE (de l'article).
Une paire de mots-clés qui permettent de mettre des liens pour associer des articles, donc (mais en sens unique).

Les mots clés des groupes Pointers et PointedTo ont les mêmes titres ?

Cela ne suffit pas dans ce cas ?

<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>

<BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
</BOUCLE_seealso>

</BOUCLE_pointers>

BoOz wrote:

Les mots clés des groupes Pointers et PointedTo ont les mêmes titres ?
Cela ne suffit pas dans ce cas ?
<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
<BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
</BOUCLE_seealso>
</BOUCLE_pointers>

Salut !
Non. Avec cela (en utilisant le même squelette) je pourrais faire seulement
des liens réciproques.
http://www.taize.fr/fr_article477.html il y a des Pointers qui pointent
("Voir aussi:") vers

Contact - Taizé par exemple, qui possède un
PointedTo. Mais cet article n'a pas de lien "Voir aussi", car il n'a pas de
mot "Pointers", seulement un (ou plusieurs) "PontedTo".

C'est la seule façon que j'ai trouvé pour faire cela. En vois-tu de
meilleure?

Paolo

Paolo a écrit :

BoOz wrote:

Les mots clés des groupes Pointers et PointedTo ont les mêmes titres ?
Cela ne suffit pas dans ce cas ?
<BOUCLE_pointers(MOTS){type=Pointers}{id_article}>
<BOUCLE_seealso(ARTICLES){id_mot}{id_secteur}{par titre}>
<li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></li>
</BOUCLE_seealso>
</BOUCLE_pointers>

Salut !
Non. Avec cela (en utilisant le même squelette) je pourrais faire seulement des liens réciproques.
http://www.taize.fr/fr_article477.html il y a des Pointers qui pointent ("Voir aussi:") vers

Contact - Taizé par exemple, qui possède un PointedTo. Mais cet article n'a pas de lien "Voir aussi", car il n'a pas de mot "Pointers", seulement un (ou plusieurs) "PontedTo".

C'est la seule façon que j'ai trouvé pour faire cela. En vois-tu de meilleure?

Non pas immédiatement, c'est une technique très astucieuse :slight_smile:

D'ailleurs j'invite tous les amateurs de boucles SPIP à étudier ce principe, ainsi qu'à admirer le multilinguisme à l'oeuvre sur ton site :wink:

BoOz wrote:

le multilinguisme à l'oeuvre sur ton site

Si vraiment quelqu'un s'y intéresse, il y a un petit article - dont François
corrige le français - qui en explique le principe (extrêmement simple) dans
l'espace privé de spip-mag.

Paolo

BoOz wrote:

********* Attention ceci est du spip 1.8 nouveau compilo :slight_smile: **********

Alors en fait :

<BOUCLE_id_redacteur(MOTS) {id_rubrique} {type=redacteurRubrique}>
> <BOUCLE_redacteur(AUTEURS) {id_auteur=#TITRE}>
> #NOM
> </BOUCLE_redacteur>
> </BOUCLE_id_redacteur>

La il spip pense que le titre est celui de l'auteur car on est dans une boucle auteur, et donc il ne trouve pas.

Il faut préciser qu'on parle du titre de la boucle du dessus : #labouclequonveut:TITRE

<BOUCLE_id_redacteur(MOTS) {id_rubrique} {type=redacteurRubrique}>
<BOUCLE_redacteur(AUTEURS) {id_auteur=#_id_redacteur:TITRE}>
      #NOM
   </BOUCLE_redacteur>
</BOUCLE_id_redacteur>

Enfin je crois que c'est quelque chose comme ca.

Si ca fonctionne tu serais sympa de re-rédiger ce bout la de la doc sur le wiki, avec un autre exemple que celui de ficher des auteurs :slight_smile:

http://www.spip-contrib.net/spikini/index.php?wiki=NouveauCompilo

Heu... J'en était resté à ce que {id_auteur=#TITRE} prennait comme valeur le #TITRE qui traînait dans l'environnement de boucle et que cette formulation fonctionnait parfaitement bien... Même si la proposition de booz est elle aussi valable.

--

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