pipeline bouché

Bonjour,

Je suis un peu coincé avec la doc sur les pipelines : http://programmer.spip.org/accueil_gadget
accueil_gadget et accueil_encours m'intéressent mais la documentation manque cruellement d'explications.
Il y a un exemple avec un bout de code pour les brèves.
1- On le place où ce bout de code ?( dans un fichier exec? un mes_fonctions? on écrase le core?)
2- j'ai un plugin qui me donne des états de tests laboratoires. Je veux voir ceux dont l'état est "en cours". Je peux placer n'importe quel objet dans la fonction?

Merci pour vos éclaircissements.

Cordialement

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

Bonjour,

Pourquoi ne pas avoir une page spécifique qui fasse un topo sur l'état de ces expériences ?
( La partie admin de spip supportant maintenant les squelettes, cela peut aider à faire un truc efficace sans trop se casser le tête ).

Sinon, pour faire appel à un pipeline, tu peux passer par l'écriture d'un plugin custom. Tes pipelines seront déclarés dans le fichier xml du plugin.

Concernant la dernière question, si tu attaques un affichage en php, via l'interface sql, tu peux attaquer n'importe quel objet, ceci dit, c'est assez laborieux...

Merci pour cet réponse.

A votre avis, où pourrais-je trouver un ou des exemples de ce pipeline? je veux dire quel plugin serait-il intéressant de décortiquer pour en apprendre un peu plus sur le sujet ?

Cordialement

Daniel

Vincent a écrit :

Bonjour,

Pourquoi ne pas avoir une page spécifique qui fasse un topo sur l'état de ces expériences ?
( La partie admin de spip supportant maintenant les squelettes, cela peut aider à faire un truc efficace sans trop se casser le tête ).

Sinon, pour faire appel à un pipeline, tu peux passer par l'écriture d'un plugin custom. Tes pipelines seront déclarés dans le fichier xml du plugin.

Concernant la dernière question, si tu attaques un affichage en php, via l'interface sql, tu peux attaquer n'importe quel objet, ceci dit, c'est assez laborieux...

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

Bon, je continue mes investigations et je voudrais simplement afficher "TOTO" en page d'accueil. Dans plugin.xml, je glisse:
<pipeline>
        <nom>labo_accueil_encours</nom>
        <inclure>labo_mes_fonctions.php</inclure>
    </pipeline>

Et dans labo_mes_fonctions:
function labo_accueil_encours($flux){ $flux ="TOTO"; return $flux;
}
Et bien, il ne se passe strictement rien sur la page d'accueil de la zone admin du site.
Qu'est-ce qui se passe Docteur?

Institut Curie a écrit :

Merci pour cette réponse.

A votre avis, où pourrais-je trouver un ou des exemples de ce pipeline? je veux dire quel plugin serait-il intéressant de décortiquer pour en apprendre un peu plus sur le sujet ?

Cordialement

Daniel

Vincent a écrit :

Bonjour,

Pourquoi ne pas avoir une page spécifique qui fasse un topo sur l'état de ces expériences ?
( La partie admin de spip supportant maintenant les squelettes, cela peut aider à faire un truc efficace sans trop se casser le tête ).

Sinon, pour faire appel à un pipeline, tu peux passer par l'écriture d'un plugin custom. Tes pipelines seront déclarés dans le fichier xml du plugin.

Concernant la dernière question, si tu attaques un affichage en php, via l'interface sql, tu peux attaquer n'importe quel objet, ceci dit, c'est assez laborieux...

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

Rebonjour,

C'est justement pour éviter la (relative) complexité de la mise en place des pipelines que je proposais de tricher en employant une page dédiée.
( il faudra cependant utiliser un pipeline minimaliste pour créer un bouton pour y accéder, mais ce n'est aps nécessaire pour les tests ).

Ainsi pour un plugin "monplugin", en mettant un squelette dans :
/plugins/monplugin/prive/exec/mon_squelette.htm
On pourra l'afficher dans l'interface privée de spip avec pour uel :
www.monsite.dom/ecrire/?exec=mon_squelette

Ca permet de faire un hello world sans trop se casser la tête ^^

Ensuite, dans le plugin.xml, il sera possible d'appeller un pipeline pour ajouter un bouton dans les menus :
....

        <pipeline>
                <nom>ajouter_boutons</nom>
                <action>ajouterBoutons</action>
                <inclure>inc/monplugin_pipeline_ajouter_boutons.php</inclure>
        </pipeline>

Il faudra ensuite dans le sous répertoire du plugin "inc" créer un fichier "monplugin_pipeline_ajouter_boutons.php" contenant quelque chose sans ce goût :

<?php

function monplugin_ajouterBoutons($boutons_admin) {

        if($GLOBALS['connect_statut'] == "0minirezo") {
        // affiche le bouton dans "Edition"
                $boutons_admin['configuration']->sousmenu['monplugin'] =
                new Bouton(
                        $chemin_de_mon_image."icone.gif"
                        , _T('monplugin:mon_texte_a_traduire')
                        , "mon_squelette"
                );
        }
        return ($boutons_admin);
}

?>

Voila pour un exemple de base qui devrait permettre dans un premier temps de lister les expériences sur une page dédiée.

Sinon, pour reprendre ton exemple destiné a afficher quelque chose sur la page encours, cela donne ceci :

plugin.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin>
        <nom>Plugin monplugin</nom>
        <auteur>monplugin</auteur>
        <version>1.0</version>
        <version_base>1.98</version_base>
        <etat>test</etat>
        <icon>monplugin.png</icon>
        <description>Plugin de monplugin</description>
        <prefix>monplugin</prefix>
<!--
        <options>monplugin_mes_options.php</options>
        <fonctions>monplugin_mes_fonctions.php</fonctions>
        <install>base/monplugin_install.php</install>
        <lien>[Documentation->/ecrire/?exec=monplugin_aide]</lien>
-->

        <pipeline>
                <nom>accueil_encours</nom>
                <inclure>inc/monplugin_pipeline_affiche_encours.php</inclure>
                <action>affiche_encours</action>
        </pipeline>

        <chemin dir='' />
        <necessite id="SPIP" version="[1.9.2;]" />
</plugin>

et le fameux "inc/monplugin_pipeline_affiche_encours.php" :

<?php

function monplugin_affiche_encours($flux) {
        //$flux["data"].="<h1>bla!!!</h1>";
        $flux.="<b>bla!!!</b>";
        return $flux;

}
?>

Quelques petites choses a savoir ( en passant ):
Certains flux ne sont pas à modifier directement. Ainsi sur les pipelines de la famille "afficher_gauche, afficher_xxx" , il faudra modifier :
$flux["data"].

Point intéressant: tu peux repérer sur quelle page ta fonction est exécutée avec :
$flux["args"]["exec"].

Pour vérifier que spip appelle bien tout ce qu'il faut, une petite visite dans le fichier "tmp/charger_pipelines.php" peut parfois être instructive :slight_smile:

Voila voila !

Merci Vincent! et un grand bravo.

Maintenant j'ai bien mon cadre vert et un message à l'intérieur. Je viens d'essayer de mettre une requête, ça marche très bien. Sauf qu'il y a deux choses encore que je ne comprends pas:
Pourquoi ai-je le message "Les articles et brèves ci-dessous sont proposés à la publication...." et pourquoi je n'arrive pas à faire un cadre blanc dans la div verte. même avec $flux.=debut_cadre_relief()
celui-ci se place au_dessus.

Il y a encore beaucoup de mystères que je ne saurais résoudre seul, je crois.
Par contre je suis prêt à faire partager mon expérience de débutant sur un endroit quelconque (mes difficultés, mes débutes, etc... si cela peu servir aux autres)

Cordialement

Daniel

Vincent a écrit :

Rebonjour,

C'est justement pour éviter la (relative) complexité de la mise en place des pipelines que je proposais de tricher en employant une page dédiée.
( il faudra cependant utiliser un pipeline minimaliste pour créer un bouton pour y accéder, mais ce n'est aps nécessaire pour les tests ).

Ainsi pour un plugin "monplugin", en mettant un squelette dans :
/plugins/monplugin/prive/exec/mon_squelette.htm
On pourra l'afficher dans l'interface privée de spip avec pour uel :
www.monsite.dom/ecrire/?exec=mon_squelette

Ca permet de faire un hello world sans trop se casser la tête ^^

Ensuite, dans le plugin.xml, il sera possible d'appeller un pipeline pour ajouter un bouton dans les menus :
....

       <pipeline>
               <nom>ajouter_boutons</nom>
               <action>ajouterBoutons</action>
               <inclure>inc/monplugin_pipeline_ajouter_boutons.php</inclure>
       </pipeline>

Il faudra ensuite dans le sous répertoire du plugin "inc" créer un fichier "monplugin_pipeline_ajouter_boutons.php" contenant quelque chose sans ce goût :

<?php

function monplugin_ajouterBoutons($boutons_admin) {

       if($GLOBALS['connect_statut'] == "0minirezo") {
       // affiche le bouton dans "Edition"
               $boutons_admin['configuration']->sousmenu['monplugin'] =
               new Bouton(
                       $chemin_de_mon_image."icone.gif"
                       , _T('monplugin:mon_texte_a_traduire')
                       , "mon_squelette"
               );
       }
       return ($boutons_admin);
}

?>

Voila pour un exemple de base qui devrait permettre dans un premier temps de lister les expériences sur une page dédiée.

Sinon, pour reprendre ton exemple destiné a afficher quelque chose sur la page encours, cela donne ceci :

plugin.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin>
       <nom>Plugin monplugin</nom>
       <auteur>monplugin</auteur>
       <version>1.0</version>
       <version_base>1.98</version_base>
       <etat>test</etat>
       <icon>monplugin.png</icon>
       <description>Plugin de monplugin</description>
       <prefix>monplugin</prefix>
<!--
       <options>monplugin_mes_options.php</options>
       <fonctions>monplugin_mes_fonctions.php</fonctions>
       <install>base/monplugin_install.php</install>
       <lien>[Documentation->/ecrire/?exec=monplugin_aide]</lien>
-->

       <pipeline>
               <nom>accueil_encours</nom>
               <inclure>inc/monplugin_pipeline_affiche_encours.php</inclure>
               <action>affiche_encours</action>
       </pipeline>

       <chemin dir='' />
       <necessite id="SPIP" version="[1.9.2;]" />
</plugin>

et le fameux "inc/monplugin_pipeline_affiche_encours.php" :

<?php

function monplugin_affiche_encours($flux) {
       //$flux["data"].="<h1>bla!!!</h1>";
       $flux.="<b>bla!!!</b>";
       return $flux;

}
?>

Quelques petites choses a savoir ( en passant ):
Certains flux ne sont pas à modifier directement. Ainsi sur les pipelines de la famille "afficher_gauche, afficher_xxx" , il faudra modifier :
$flux["data"].

Point intéressant: tu peux repérer sur quelle page ta fonction est exécutée avec :
$flux["args"]["exec"].

Pour vérifier que spip appelle bien tout ce qu'il faut, une petite visite dans le fichier "tmp/charger_pipelines.php" peut parfois être instructive :slight_smile:

Voila voila !

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

En fait je débute aussi dans l'écriture de plugins, donc il y a encore pas mal de zones d'ombres sur mes connaissances de l'écureuil.
Ceci dit, j'ai les bases d'un premier plugin, c'est grâce à cela que j'ai pu te remonter ces quelques billes.
Vu comme mes premiers pas furent laborieux, je suis prêt aussi a donner un coup de patte si il y a moyen de redonner cette expérience à la communaité.
Globalement, les docs existantes ne sont pas mal fichues, le problème, c'est d'arriver à chopper une vue d'ensemble de toute la chose.
Je me demande si il ne serait pas bénéfique de faire un jeu de plugins bidons et simplistes qui servent de base à des tutos.
( genre :
- mon premier plugin permettant de créer un jeu de filtres.
- mon premier plugin avec ajout d'un type d'objets à spip.
- mon premier plugin avec une interface d'administration privée ...
- etc. )
A voir si on ne peut pas créer un document de travail sur spip contrib .

Pour en revenir a ton test, tu emploies actuellement le pipeline "accueil_encours".
Il est fait typiquement pour afficher "quelque chose" dans le cadre gris de la page "a suivre", sous le fameux message "Les articles et brèves ci-dessous..." et avant le lien vers le fil rss.
A mon avis, ce n'est pas le top pour traiter ton problème. C'est pourquoi je te suggérais de passer par une page dédiée ( au choix: dans /exec et en php ou dans /prive/exec et en html ).
Je gère de mon coté deux types d'objets: des entreprises et des contacts qui leur sont rattachés ( plugin annuaire ). Il me fallait donc quelques pages dédiées pour gérer l'affichage de entreprises, et pour toute la quincaillerie de formulaires qui gravite autour.

Cette méthode permet donc de créer des pages dédiées ( sur la partie centrale de spip). En ajoutant à cela une bricole sur le pipeline "affiche_gauche", il est possible de créer un menu complet pour naviguer dans les pages de ton plugin ...
Et la, tous les coups sont permis ^^

Tu peux ainsi avoir une page qui résume les expériences en cours, une qui affiche toutes les expériences ( tous les états ), voir même fabriquer un système de recherche par nom...

+1

Je me demande si il ne serait pas bénéfique de faire un jeu de plugins bidons et simplistes qui servent de base à des tutos.
( genre :

  • mon premier plugin permettant de créer un jeu de filtres.
  • mon premier plugin avec ajout d’un type d’objets à spip.
  • mon premier plugin avec une interface d’administration privée …
  • etc. )

Le 9 octobre 2009 01:03, Vincent <vincent@logaweb.fr> a écrit :

En fait je débute aussi dans l’écriture de plugins, donc il y a encore pas mal de zones d’ombres sur mes connaissances de l’écureuil.
Ceci dit, j’ai les bases d’un premier plugin, c’est grâce à cela que j’ai pu te remonter ces quelques billes.
Vu comme mes premiers pas furent laborieux, je suis prêt aussi a donner un coup de patte si il y a moyen de redonner cette expérience à la communaité.
Globalement, les docs existantes ne sont pas mal fichues, le problème, c’est d’arriver à chopper une vue d’ensemble de toute la chose.
Je me demande si il ne serait pas bénéfique de faire un jeu de plugins bidons et simplistes qui servent de base à des tutos.
( genre :

  • mon premier plugin permettant de créer un jeu de filtres.
  • mon premier plugin avec ajout d’un type d’objets à spip.
  • mon premier plugin avec une interface d’administration privée …
  • etc. )
    A voir si on ne peut pas créer un document de travail sur spip contrib .

Pour en revenir a ton test, tu emploies actuellement le pipeline « accueil_encours ».
Il est fait typiquement pour afficher « quelque chose » dans le cadre gris de la page « a suivre », sous le fameux message « Les articles et brèves ci-dessous… » et avant le lien vers le fil rss.
A mon avis, ce n’est pas le top pour traiter ton problème. C’est pourquoi je te suggérais de passer par une page dédiée ( au choix: dans /exec et en php ou dans /prive/exec et en html ).
Je gère de mon coté deux types d’objets: des entreprises et des contacts qui leur sont rattachés ( plugin annuaire ). Il me fallait donc quelques pages dédiées pour gérer l’affichage de entreprises, et pour toute la quincaillerie de formulaires qui gravite autour.

Cette méthode permet donc de créer des pages dédiées ( sur la partie centrale de spip). En ajoutant à cela une bricole sur le pipeline « affiche_gauche », il est possible de créer un menu complet pour naviguer dans les pages de ton plugin …
Et la, tous les coups sont permis ^^

Tu peux ainsi avoir une page qui résume les expériences en cours, une qui affiche toutes les expériences ( tous les états ), voir même fabriquer un système de recherche par nom…


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Oui? et bien tu débutes bien mieux que moi!
Pour la pager dédiée, j'imagine qu'il faudrait reprendre le core et le surcharger? par exemple refaire un accueil à placer dans exec du plugin??
Pour l'instant j'en suis là ( nos tests labos s'appellent tickets , c'est pas très original mais bon). Donc voila :
function tickets_affiche_encours($flux) {
       //essai
$flux.= afficher_objets('ticket', afficher_plus(generer_url_ecrire('retour_labo')) . _T('Nouveaux Tests Laboratoire'), array("FROM" => 'spip_labo', 'WHERE' => "etat='nouveau'", 'ORDER BY' => "date DESC"), true); //fin essai
       
            return $flux;

}
Donc j'ai bien un genre de résultat avec 4 lignes ( il y a bien 4 tests qui ont le statut demandé) mais c'est vide, j'imagine que l'objet ticket n'étant pas déclaré comme objet cela ne peux pas s'afficher. Ainsi ton retour d'expérience sur l'ajout d'un type d'objet m'intéresse également.
Est-ce que ton plugin est téléchargeable quelque part? Cela m'éviterait de te solliciter sans arrêt.

Cordialement

Daniel

Vincent a écrit :

En fait je débute aussi dans l'écriture de plugins, donc il y a encore pas mal de zones d'ombres sur mes connaissances de l'écureuil.
Ceci dit, j'ai les bases d'un premier plugin, c'est grâce à cela que j'ai pu te remonter ces quelques billes.
Vu comme mes premiers pas furent laborieux, je suis prêt aussi a donner un coup de patte si il y a moyen de redonner cette expérience à la communaité.
Globalement, les docs existantes ne sont pas mal fichues, le problème, c'est d'arriver à chopper une vue d'ensemble de toute la chose.
Je me demande si il ne serait pas bénéfique de faire un jeu de plugins bidons et simplistes qui servent de base à des tutos.
( genre :
- mon premier plugin permettant de créer un jeu de filtres.
- mon premier plugin avec ajout d'un type d'objets à spip.
- mon premier plugin avec une interface d'administration privée ...
- etc. )
A voir si on ne peut pas créer un document de travail sur spip contrib .

Pour en revenir a ton test, tu emploies actuellement le pipeline "accueil_encours".
Il est fait typiquement pour afficher "quelque chose" dans le cadre gris de la page "a suivre", sous le fameux message "Les articles et brèves ci-dessous..." et avant le lien vers le fil rss.
A mon avis, ce n'est pas le top pour traiter ton problème. C'est pourquoi je te suggérais de passer par une page dédiée ( au choix: dans /exec et en php ou dans /prive/exec et en html ).
Je gère de mon coté deux types d'objets: des entreprises et des contacts qui leur sont rattachés ( plugin annuaire ). Il me fallait donc quelques pages dédiées pour gérer l'affichage de entreprises, et pour toute la quincaillerie de formulaires qui gravite autour.

Cette méthode permet donc de créer des pages dédiées ( sur la partie centrale de spip). En ajoutant à cela une bricole sur le pipeline "affiche_gauche", il est possible de créer un menu complet pour naviguer dans les pages de ton plugin ...
Et la, tous les coups sont permis ^^

Tu peux ainsi avoir une page qui résume les expériences en cours, une qui affiche toutes les expériences ( tous les états ), voir même fabriquer un système de recherche par nom...

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

Hello !

Malheureusement, mon plugin n'est pas (encore ? ) téléchargeable : je l'écris pour une boite, et je n'ai pas encore les détails exacts du contenu de la base ...
J'ai donc des champs génériques de placés mais certains existent en base mais ne sont pas affichés sur l'interface.

En outre, je fais joujou avec quelques bêtises type Jquery qui sont plus la pour amuser la galerie et finissent par alourdir le code et délayer la sauce.
Si tu le souhaites, je peux donc en faire une archive et te l'expédier, mais tu risques de nager un peu je crains ...

Par contre, toujours dans mon idée de tuto pour plusgins simplistes et monotaches, voici ci dessous un exemple modifié de celui du précédent mail .
Si tu es toujours motivé, on peut voir pour écrire les fameux mini plugins au fur et à mesure que les problèmes et nouveaux besoins apparaissent.

structure dans "monplugin" (une version destinée à avoir un bouton + une page en squelette html/spip ):
./plugin.xml
./inc
./inc/monplugin_pipeline_ajouter_boutons.php
./prive
./prive/exec
./prive/exec/monplugin_accueil.html
./img
./img/icone.gif

Contenu du plugin.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin>
        <nom>Plugin monplugin</nom>
        <auteur>monplugin</auteur>
        <version>1.0</version>
        <version_base>1.98</version_base>
        <etat>test</etat>
        <icon>monplugin.png</icon>
        <description>Plugin de monplugin</description>
        <prefix>monplugin</prefix>
        <pipeline>
                <nom>ajouter_boutons</nom>
                <action>ajouterBoutons</action>
                <inclure>inc/monplugin_pipeline_ajouter_boutons.php</inclure>
        </pipeline>
        <chemin dir='' />
</plugin>

Contenu du fichier déclarant les boutons uniquement pour les admins ( j'ai mis "en dur les textes, chemins etc pour que ce soit plus parlant, c'est bien entendu à adapter ) :
<?php
function monplugin_ajouterBoutons($boutons_admin) {
        if($GLOBALS['connect_statut'] == "0minirezo") {
                $boutons_admin['configuration']->sousmenu['monplugin'] =
                new Bouton(
                        "/plugins/monplugin/img/icone.gif"
                        , "monplugin"
                        , "monplugin_accueil"
                );
        }
        return ($boutons_admin);
}
?>

Cette fonction déclare un bouton dans "configuration -> monplugin" .On peut éventuellement se placer sur "édition", ce serait plus logique je pense mais c'est qu'un exmple hein ^^ .

Enfin, dans "./prive/exec/monplugin_accueil.html" :
<B_secu>
<BOUCLE_secu(AUTEURS){id_auteur=#SESSION{id_auteur}{statut="0minirezo"}}>
    Vous etes bien un admin: bienvenue !
    [(#REM)Ici vient le vrai contenu a afficher: boucles et cie]

</BOUCLE_secu>
</B_secu>
Page bloquée pour des raisons de sécurité.
( droits insuffisants ou session invalide ) : Bouh ! Vilain pirate !
<//B_secu>

Voila ce que j'avais en tête ( dans les grandes lignes ).

Tu dois pouvoir afficher dans la page en question une boucle dans ce goût:

<BOUCLE_exp(SPIP_LABO){etat==nouveau}>
    #TITRE #DETAIL ( a customiser selon les champs de la table ).
</BOUCLE_exp>
   Il n'y a pas d'expériences en cours pour le moment.
</B_exp>

Cela pourrait convenir ?

Hello !

Oui, le coup des squelettes en partie privé, ca m'a aussi beaucoup plu lorsque je l'ai découvert sur: http://programmer.spip.org/-Exec- ^^ Ce site est une véritable mine d'or !
Sinon, c'est bien moche les heures sup le week end ... Quand un responsable ou un client s'est fourré une idée dans la tête, ce n'est pas toujours évident de le faire changer d'avis...
Ca doit être l'un des plus gros problèmes des informaticiens ça :smiley:

Pour tenter de résoudre ton problème (et peut être de sauver ce qui reste du we) , voici quelques pistes :

1 ) tu peux faire afficher un truc custom sur la partie centrale de spip en page d'accueil en bidouillant avec le pipeline "affiche_milieu" :
le classique xml :
        <pipeline>
                <nom>affiche_milieu</nom>
                <inclure>inc/monplugin_pipeline_affiche_milieu.php</inclure>
                <action>affiche_milieu</action>
        </pipeline>

et le php correspondant :

<?php
function monplugin_affiche_milieu($flux){
include_spip('inc/autoriser');
include_spip('inc/utils');
include_spip('inc/composer');
include_spip('inc/assembler');
if ($flux["args"]["exec"]=="accueil" )
{
        $flux["data"] .="<h1>BLAAAAAAA!</h1>";
        //recuperer_fond("prive/exec/menu");
}
return $flux;
}
?>

Le "if ($flux["args"]["exec"]=="accueil" )" est ici capital: sans lui, tu afficherais sur toutes les pages du site privé !

2) la fonction recuperer_fond("prive/exec/menu"); te permet de récupérer le résultat généré par un squelette donné.
Il est ainsi concevable de se faire un petit squelette custom quelque part, et de l'afficher sur l'accueil via l'appel au pipeline "affiche_milieu".

3) Tu t'embêtes avec "afficher_$objet", je prendrais une approche différente pour ma part : a la barabare via une grosse requête sql qui tache.
Ca donnerait un truc dans le goût :

<?php
$ressource = sql_select("*","spip_labo","etat='entrant'");
while($res = sql_fetch($ressource)){
    echo $res['code_labo']. "<br />";
}
?>

Plus d'infos la : http://doc.spip.org/@sql_fetch

De la, tu peux afficher toutes tes expériences en page d'accueil un peu comme tu veux. ( Je ne suis pas très porté sur les cadres spip car j'utilise essentiellement des pages custom pour mes traitements, donc je peux aps t'aiguiller sur les différents cadres de spip ). Sinon, pour le coup des pipelines, il faut bien penser à désactiver/réactiver le plugin à chaque modification du fichier plugin.xml: sinon, ce n'est pas pris en compte.

Enfin, pour le plugin, je vais le dépoussiérer lundi ( remettre d'équerre les champs qui ne vont pas etc ) et je fais une grosse archive avec le tout dedans.

Bon dimanche tout de même !

Vincent

Bonjour et un grand merci!!
Ainsi je pourrais déjà montrer à mes chefs que je ne suis pas pas un archi nullard !
Ça fonctionne très bien, mais j'ai quelques "trucs" encore qui me semblent curieux.
Par exemple apparait un Resource id #387 qui vient de je ne sais où, puis j'aimerai faire remonter l'affichage d'un cran pour passer au-dessus des rubriques.
Pour les listes avec la puce déroulante c'est encore une contrainte imposée, il faut absolument que j'arrive à faire un affichage de cette façon.
Enfin dernière petite question: Comment puis-je appeler mon pipeline dans une page maison?
J'ai vaguement essayé ça sans résultat:
include_spip("inc/labo_pipeline_affiche_milieu");
    $texte= labo_affiche_milieu($flux);
echo $texte;

Je te renouvelle encore une fois mes remerciements, grâce à toi j'avance à grands pas, tu es une aide très précieuse.

Cordialement

Daniel

Vincent a écrit :

Hello !

Oui, le coup des squelettes en partie privé, ca m'a aussi beaucoup plu lorsque je l'ai découvert sur: http://programmer.spip.org/-Exec- ^^ Ce site est une véritable mine d'or !
Sinon, c'est bien moche les heures sup le week end ... Quand un responsable ou un client s'est fourré une idée dans la tête, ce n'est pas toujours évident de le faire changer d'avis...
Ca doit être l'un des plus gros problèmes des informaticiens ça :smiley:

Pour tenter de résoudre ton problème (et peut être de sauver ce qui reste du we) , voici quelques pistes :

1 ) tu peux faire afficher un truc custom sur la partie centrale de spip en page d'accueil en bidouillant avec le pipeline "affiche_milieu" :
le classique xml :
       <pipeline>
               <nom>affiche_milieu</nom>
               <inclure>inc/monplugin_pipeline_affiche_milieu.php</inclure>
               <action>affiche_milieu</action>
       </pipeline>

et le php correspondant :

<?php
function monplugin_affiche_milieu($flux){
include_spip('inc/autoriser');
include_spip('inc/utils');
include_spip('inc/composer');
include_spip('inc/assembler');
if ($flux["args"]["exec"]=="accueil" )
{
       $flux["data"] .="<h1>BLAAAAAAA!</h1>";
       //recuperer_fond("prive/exec/menu");
}
return $flux;
}
?>

Le "if ($flux["args"]["exec"]=="accueil" )" est ici capital: sans lui, tu afficherais sur toutes les pages du site privé !

2) la fonction recuperer_fond("prive/exec/menu"); te permet de récupérer le résultat généré par un squelette donné.
Il est ainsi concevable de se faire un petit squelette custom quelque part, et de l'afficher sur l'accueil via l'appel au pipeline "affiche_milieu".

3) Tu t'embêtes avec "afficher_$objet", je prendrais une approche différente pour ma part : a la barabare via une grosse requête sql qui tache.
Ca donnerait un truc dans le goût :

<?php
$ressource = sql_select("*","spip_labo","etat='entrant'");
while($res = sql_fetch($ressource)){
   echo $res['code_labo']. "<br />";
}
?>

Plus d'infos la : http://doc.spip.org/@sql_fetch

De la, tu peux afficher toutes tes expériences en page d'accueil un peu comme tu veux. ( Je ne suis pas très porté sur les cadres spip car j'utilise essentiellement des pages custom pour mes traitements, donc je peux aps t'aiguiller sur les différents cadres de spip ). Sinon, pour le coup des pipelines, il faut bien penser à désactiver/réactiver le plugin à chaque modification du fichier plugin.xml: sinon, ce n'est pas pris en compte.

Enfin, pour le plugin, je vais le dépoussiérer lundi ( remettre d'équerre les champs qui ne vont pas etc ) et je fais une grosse archive avec le tout dedans.

Bon dimanche tout de même !

Vincent

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

Hello !

Pour le coup du "Resource id #387", je dois dire qu'a froid, cela ne me parle pas ... Si tu peux me copier coller ton bout de code, cela m'éclairera peut être ?
Sinon, pour le coup de remonter l'affichage, ce n'est pas gagné: vraisemblablement, le pipeline est exécuté après le code de spip ...
Donc la, il n'y a pas trop moyen de moyenner. A moins de bidouiller le core, mais la, je ne m'y risquerais pas !

Pour le coup des listes déroulantes, cela peut se justifier par le fait que cela prend moins de place ...
Sont gentils les gens mais quand on débarque dans un code que l'on ne connait pas, ce n'est pas aisé de s'y repérer.
La dessus, je pense que le mécanisme de déroulement est "motorisé" par Jquery. C'est pas bien méchant en soi m'enfin ça fait encore un bidule à maitriser.

En fourrageant dans le code et en se basant sur les classes CSS il doit y avoir moyen de retrouver la fonction spip qui fait ce type d'affichage.
( je pense avoir un candidat : function debut_cadre() dans "ecrire/inc/presentation.php" ligne 77 + fin_cadre() ).
A défaut, en copiant la structure ( objets html + classes ), il doit y avoir moyen de bénéficier des mêmes fonctionnalités.
Au pire du pire, un coup de javascript + css dans le pipeline "header_prive" et roulez jeunesse ... Mais dans ce cas, il faut avoir capté les bases de Jquery :frowning:

M'enfin, au final, c'est bien se prendre la tête pour pas grand chose ... Courage, ça avance :slight_smile:

Bon dimanche !

Vincent

Oui ça avance bien et cela grâce à toi! :wink:
Bon en effet, on pourrait utiliser un mini script js pour activer un effet de puces déroulantes mais pourquoi ré-inventer la roue?
J'ai essayer un debut_cadre_liste(), mais nada.
Voici où j'en suis et ce qui me provoque ce "Resource #387":
function labo_affiche_milieu($flux){
include_spip('inc/autoriser');
include_spip('inc/utils');
include_spip('inc/composer');
include_spip('inc/assembler');
if ($flux["args"]["exec"]=="accueil" )
{
echo debut_cadre_couleur_foncee("",true,"",_T('tests entrants'));
echo debut_cadre_relief("", false,"");
//echo debut_cadre_liste("",false,"")
       $flux["data"] .=$ressource = sql_select("*","spip_labo","etat='actif'");
while($res = sql_fetch($ressource)){
   echo "<a href='?exec=labo_edit&id_incident=".$res['id_test']."'>".$res['code']."</a>";
   echo " - ".$res['id_test'];
   echo " - ".$res['date']."<br />";
   }
   echo fin_cadre_relief(true);
echo fin_cadre_couleur(true);
}
             //recuperer_fond("prive/exec/menu");

return $flux;

Bien sur c'est juste du test, donc peut-être pas toujours propre.

Bon dimanche à toi aussi

Daniel

Hello !

Pour le coup du "Resource id #387", je dois dire qu'a froid, cela ne me parle pas ... Si tu peux me copier coller ton bout de code, cela m'éclairera peut être ?
Sinon, pour le coup de remonter l'affichage, ce n'est pas gagné: vraisemblablement, le pipeline est exécuté après le code de spip ...
Donc la, il n'y a pas trop moyen de moyenner. A moins de bidouiller le core, mais la, je ne m'y risquerais pas !

Pour le coup des listes déroulantes, cela peut se justifier par le fait que cela prend moins de place ...
Sont gentils les gens mais quand on débarque dans un code que l'on ne connait pas, ce n'est pas aisé de s'y repérer.
La dessus, je pense que le mécanisme de déroulement est "motorisé" par Jquery. C'est pas bien méchant en soi m'enfin ça fait encore un bidule à maitriser.

En fourrageant dans le code et en se basant sur les classes CSS il doit y avoir moyen de retrouver la fonction spip qui fait ce type d'affichage.
( je pense avoir un candidat : function debut_cadre() dans "ecrire/inc/presentation.php" ligne 77 + fin_cadre() ).
A défaut, en copiant la structure ( objets html + classes ), il doit y avoir moyen de bénéficier des mêmes fonctionnalités.
Au pire du pire, un coup de javascript + css dans le pipeline "header_prive" et roulez jeunesse ... Mais dans ce cas, il faut avoir capté les bases de Jquery :frowning:

M'enfin, au final, c'est bien se prendre la tête pour pas grand chose ... Courage, ça avance :slight_smile:

Bon dimanche !

Vincent

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

Institut Curie a écrit :

//echo debut_cadre_liste("",false,"")
      $flux["data"] .=$ressource = sql_select("*","spip_labo","etat='actif'");

c'est la le ressource : le résultat du sql_select.
je sais pas ce que tu veux insérer dans le flux, mais pas un sql_select
qui est un pseudo tableau de lignes de valeur, et non pas une chaine !
JL

while($res = sql_fetch($ressource)){
  echo "<a href='?exec=labo_edit&id_incident=".$res['id_test']."'>".$res['code']."</a>";

  echo " - ".$res['id_test'];
  echo " - ".$res['date']."<br />";
  }
  echo fin_cadre_relief(true);
echo fin_cadre_couleur(true);
}
           //recuperer_fond("prive/exec/menu");

return $flux;

Bien sur c'est juste du test, donc peut-être pas toujours propre.

Bon dimanche à toi aussi

Daniel

Hello !

Pour le coup du "Resource id #387", je dois dire qu'a froid, cela ne me parle pas ... Si tu peux me copier coller ton bout de code, cela m'éclairera peut être ?
Sinon, pour le coup de remonter l'affichage, ce n'est pas gagné: vraisemblablement, le pipeline est exécuté après le code de spip ...
Donc la, il n'y a pas trop moyen de moyenner. A moins de bidouiller le core, mais la, je ne m'y risquerais pas !

Pour le coup des listes déroulantes, cela peut se justifier par le fait que cela prend moins de place ...
Sont gentils les gens mais quand on débarque dans un code que l'on ne connait pas, ce n'est pas aisé de s'y repérer.
La dessus, je pense que le mécanisme de déroulement est "motorisé" par Jquery. C'est pas bien méchant en soi m'enfin ça fait encore un bidule à maitriser.

En fourrageant dans le code et en se basant sur les classes CSS il doit y avoir moyen de retrouver la fonction spip qui fait ce type d'affichage.
( je pense avoir un candidat : function debut_cadre() dans "ecrire/inc/presentation.php" ligne 77 + fin_cadre() ).
A défaut, en copiant la structure ( objets html + classes ), il doit y avoir moyen de bénéficier des mêmes fonctionnalités.
Au pire du pire, un coup de javascript + css dans le pipeline "header_prive" et roulez jeunesse ... Mais dans ce cas, il faut avoir capté les bases de Jquery :frowning:

M'enfin, au final, c'est bien se prendre la tête pour pas grand chose ... Courage, ça avance :slight_smile:

Bon dimanche !

Vincent

D'accord Jean Luc et merci de ton intervention.
Je ne peux donc pas mettre dans un pipeline déclaré une requête ( si je comprends bien) parce que j'insère un pseudo tableau. Comment faire donc une chaîne qui récupère de la table et les id(clé primaire) et les autres champs de table, sinon en passant par un autre fonction qui injecte dans la première mes résultats de requêtes, mais je ne vois pas bien comment faire ça. (niveau expert!!:wink: )

Cordialement

Daniel.

JLuc a écrit :

Institut Curie a écrit :

//echo debut_cadre_liste("",false,"")
      $flux["data"] .=$ressource = sql_select("*","spip_labo","etat='actif'");

c'est la le ressource : le résultat du sql_select.
je sais pas ce que tu veux insérer dans le flux, mais pas un sql_select
qui est un pseudo tableau de lignes de valeur, et non pas une chaine !
JL

while($res = sql_fetch($ressource)){
  echo "<a href='?exec=labo_edit&id_incident=".$res['id_test']."'>".$res['code']."</a>";

  echo " - ".$res['id_test'];
  echo " - ".$res['date']."<br />";
  }
  echo fin_cadre_relief(true);
echo fin_cadre_couleur(true);
}
           //recuperer_fond("prive/exec/menu");

return $flux;

Bien sur c'est juste du test, donc peut-être pas toujours propre.

Bon dimanche à toi aussi

Daniel

Hello !

Pour le coup du "Resource id #387", je dois dire qu'a froid, cela ne me parle pas ... Si tu peux me copier coller ton bout de code, cela m'éclairera peut être ?
Sinon, pour le coup de remonter l'affichage, ce n'est pas gagné: vraisemblablement, le pipeline est exécuté après le code de spip ...
Donc la, il n'y a pas trop moyen de moyenner. A moins de bidouiller le core, mais la, je ne m'y risquerais pas !

Pour le coup des listes déroulantes, cela peut se justifier par le fait que cela prend moins de place ...
Sont gentils les gens mais quand on débarque dans un code que l'on ne connait pas, ce n'est pas aisé de s'y repérer.
La dessus, je pense que le mécanisme de déroulement est "motorisé" par Jquery. C'est pas bien méchant en soi m'enfin ça fait encore un bidule à maitriser.

En fourrageant dans le code et en se basant sur les classes CSS il doit y avoir moyen de retrouver la fonction spip qui fait ce type d'affichage.
( je pense avoir un candidat : function debut_cadre() dans "ecrire/inc/presentation.php" ligne 77 + fin_cadre() ).
A défaut, en copiant la structure ( objets html + classes ), il doit y avoir moyen de bénéficier des mêmes fonctionnalités.
Au pire du pire, un coup de javascript + css dans le pipeline "header_prive" et roulez jeunesse ... Mais dans ce cas, il faut avoir capté les bases de Jquery :frowning:

M'enfin, au final, c'est bien se prendre la tête pour pas grand chose ... Courage, ça avance :slight_smile:

Bon dimanche !

Vincent

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

Institut Curie a écrit :

D'accord Jean Luc et merci de ton intervention.
Je ne peux donc pas mettre dans un pipeline déclaré une requête ( si je comprends bien) parce que j'insère un pseudo tableau. Comment faire donc une chaîne qui récupère de la table et les id(clé primaire) et les autres champs de table, sinon en passant par un autre fonction qui injecte dans la première mes résultats de requêtes, mais je ne vois pas bien comment faire ça. (niveau expert!!:wink: )

C'est une base de l'usage de mysql :
il te faut faire une boucle php de (my)sql_fetch qui récupère chaque ligne,
construise la chaine correspondant à cette ligne,
l'ajoute au flux et passe à la suivante.
Si tu ignores tout de php et mysql, tu peux aussi faire cela en spip
dans la partie publique en tout cas c'est simple en spip.

bonne chance,
JLuc

Cordialement

Daniel.

JLuc a écrit :

Institut Curie a écrit :

//echo debut_cadre_liste("",false,"")
      $flux["data"] .=$ressource = sql_select("*","spip_labo","etat='actif'");

c'est la le ressource : le résultat du sql_select.
je sais pas ce que tu veux insérer dans le flux, mais pas un sql_select
qui est un pseudo tableau de lignes de valeur, et non pas une chaine !
JL

while($res = sql_fetch($ressource)){
  echo "<a href='?exec=labo_edit&id_incident=".$res['id_test']."'>".$res['code']."</a>";

  echo " - ".$res['id_test'];
  echo " - ".$res['date']."<br />";
  }
  echo fin_cadre_relief(true);
echo fin_cadre_couleur(true);
}
           //recuperer_fond("prive/exec/menu");

return $flux;

Bien sur c'est juste du test, donc peut-être pas toujours propre.

Bon dimanche à toi aussi

Daniel

Hello !

Pour le coup du "Resource id #387", je dois dire qu'a froid, cela ne me parle pas ... Si tu peux me copier coller ton bout de code, cela m'éclairera peut être ?
Sinon, pour le coup de remonter l'affichage, ce n'est pas gagné: vraisemblablement, le pipeline est exécuté après le code de spip ...
Donc la, il n'y a pas trop moyen de moyenner. A moins de bidouiller le core, mais la, je ne m'y risquerais pas !

Pour le coup des listes déroulantes, cela peut se justifier par le fait que cela prend moins de place ...
Sont gentils les gens mais quand on débarque dans un code que l'on ne connait pas, ce n'est pas aisé de s'y repérer.
La dessus, je pense que le mécanisme de déroulement est "motorisé" par Jquery. C'est pas bien méchant en soi m'enfin ça fait encore un bidule à maitriser.

En fourrageant dans le code et en se basant sur les classes CSS il doit y avoir moyen de retrouver la fonction spip qui fait ce type d'affichage.
( je pense avoir un candidat : function debut_cadre() dans "ecrire/inc/presentation.php" ligne 77 + fin_cadre() ).
A défaut, en copiant la structure ( objets html + classes ), il doit y avoir moyen de bénéficier des mêmes fonctionnalités.
Au pire du pire, un coup de javascript + css dans le pipeline "header_prive" et roulez jeunesse ... Mais dans ce cas, il faut avoir capté les bases de Jquery :frowning:

M'enfin, au final, c'est bien se prendre la tête pour pas grand chose ... Courage, ça avance :slight_smile:

Bon dimanche !

Vincent

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Bonjour,

Voilà j'aimerais faire un petit bilan de ce thread.
Si j'ai bien compris , il faut déclarer son pipeline dans le xml du plugin puis le créer dans un fichier du répertoire /inc/ du plugin et celui-ci doit porter le nom du pipe.
Ensuite on ne peut pas faire de requêtes SQL dans un pipe , vu que l'on crée une serialisation qui n'est pas acceptable dans un $flux de pipeline.
Donc je me demande maintenant à quoi ça sert étant donné que le but est de faire apparaitre de manière dynamique des objets nouvellement construits sans toucher au Core de SPIP??!!
Ou bien je n'ai pas encore saisi toutes les nuances et de cela, je vous prie de m'en excuser.

Cordialement

Daniel
JLuc a écrit :

Institut Curie a écrit :

D'accord Jean Luc et merci de ton intervention.
Je ne peux donc pas mettre dans un pipeline déclaré une requête ( si je comprends bien) parce que j'insère un pseudo tableau. Comment faire donc une chaîne qui récupère de la table et les id(clé primaire) et les autres champs de table, sinon en passant par un autre fonction qui injecte dans la première mes résultats de requêtes, mais je ne vois pas bien comment faire ça. (niveau expert!!:wink: )

C'est une base de l'usage de mysql :
il te faut faire une boucle php de (my)sql_fetch qui récupère chaque ligne,
construise la chaine correspondant à cette ligne,
l'ajoute au flux et passe à la suivante.
Si tu ignores tout de php et mysql, tu peux aussi faire cela en spip
dans la partie publique en tout cas c'est simple en spip.

bonne chance,
JLuc

Cordialement

Daniel.

JLuc a écrit :

Institut Curie a écrit :

//echo debut_cadre_liste("",false,"")
      $flux["data"] .=$ressource = sql_select("*","spip_labo","etat='actif'");

c'est la le ressource : le résultat du sql_select.
je sais pas ce que tu veux insérer dans le flux, mais pas un sql_select
qui est un pseudo tableau de lignes de valeur, et non pas une chaine !
JL

while($res = sql_fetch($ressource)){
  echo "<a href='?exec=labo_edit&id_incident=".$res['id_test']."'>".$res['code']."</a>";

  echo " - ".$res['id_test'];
  echo " - ".$res['date']."<br />";
  }
  echo fin_cadre_relief(true);
echo fin_cadre_couleur(true);
}
           //recuperer_fond("prive/exec/menu");

return $flux;

Bien sur c'est juste du test, donc peut-être pas toujours propre.

Bon dimanche à toi aussi

Daniel

Hello !

Pour le coup du "Resource id #387", je dois dire qu'a froid, cela ne me parle pas ... Si tu peux me copier coller ton bout de code, cela m'éclairera peut être ?
Sinon, pour le coup de remonter l'affichage, ce n'est pas gagné: vraisemblablement, le pipeline est exécuté après le code de spip ...
Donc la, il n'y a pas trop moyen de moyenner. A moins de bidouiller le core, mais la, je ne m'y risquerais pas !

Pour le coup des listes déroulantes, cela peut se justifier par le fait que cela prend moins de place ...
Sont gentils les gens mais quand on débarque dans un code que l'on ne connait pas, ce n'est pas aisé de s'y repérer.
La dessus, je pense que le mécanisme de déroulement est "motorisé" par Jquery. C'est pas bien méchant en soi m'enfin ça fait encore un bidule à maitriser.

En fourrageant dans le code et en se basant sur les classes CSS il doit y avoir moyen de retrouver la fonction spip qui fait ce type d'affichage.
( je pense avoir un candidat : function debut_cadre() dans "ecrire/inc/presentation.php" ligne 77 + fin_cadre() ).
A défaut, en copiant la structure ( objets html + classes ), il doit y avoir moyen de bénéficier des mêmes fonctionnalités.
Au pire du pire, un coup de javascript + css dans le pipeline "header_prive" et roulez jeunesse ... Mais dans ce cas, il faut avoir capté les bases de Jquery :frowning:

M'enfin, au final, c'est bien se prendre la tête pour pas grand chose ... Courage, ça avance :slight_smile:

Bon dimanche !

Vincent

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

--
Daniel Creton Responsable informatique
Institut Curie 26, rue d'Ulm, 75005 Paris

Institut Curie a écrit :

Voilà j'aimerais faire un petit bilan de ce thread.

Pour utiliser les pipes il faut utilser du php.

Si j'ai bien compris , il faut déclarer son pipeline dans le xml du plugin puis le créer dans un fichier du répertoire /inc/ du plugin et celui-ci doit porter le nom du pipe.
Ensuite on ne peut pas faire de requêtes SQL dans un pipe , vu que l'on crée une serialisation qui n'est pas acceptable dans un $flux de pipeline.

Non c'est pas ça.

As tu déjà fait une boucle php qui interroge une base de donnée mysql
et affiche les résultats ?
c'est la même chose sauf qu'au lieu d'afficher les résultats à l'écran direct
tu les ajoute au flux (qui sera affiché, mais plus tard, après les pipes).

JLuc

Hello !

Un bon +1 sur ce que disais J Luc : tu prépares tes billes dans une chaine de caractères (par exemple ) que tu ajoutes au flux ensuite.
Oublies les "echo": ils n'ont pas leur place dans un pipeline ( c'est le moteur se spip qui récupèrera les billes dans le flux et les affichera "quelque part" dans la page ).

function labo_affiche_milieu($flux){
include_spip('inc/autoriser');
include_spip('inc/utils');
include_spip('inc/composer');
include_spip('inc/assembler');
// on construit tout l'affichage dans la variable "machaine"
if ($flux["args"]["exec"]=="accueil" )
{
$machaine = debut_cadre_couleur_foncee("",true,"",_T('tests entrants'));
$machaine.= debut_cadre_relief("", false,"");

$ressource = sql_select("*","spip_labo","etat='actif'");
while($res = sql_fetch($ressource)){
$machaine.="<a href='?exec=labo_edit&id_incident=".$res['id_test']."'>".$res['code']."</a>";

$machaine.= " - ".$res['id_test'];
  $machaine .= " - ".$res['date']."<br />";
  }

  $machaine .= fin_cadre_relief(true);
$machaine .= fin_cadre_couleur(true);
}

// j'ajoute ma sortie au flux pour affichage par spip.
$flux["data"] .= $machaine ;

return $flux;
}

Voila ce que ca pourrait donner :slight_smile: