cy_altern | 11 Sep 17:16
Picon
Gravatar

petite question concernant la surcharge des fonctions exec

Pour faire un plugin j'ai besoin de modifier quelques fichiers responsables de 
l'affichage de l'espace privé (/exec/article.php par ex). 

Suivant cette doc : 
http://www.spip-contrib.net/SPIP-1-9-Que-fait-SPIP-pour-servir , je fais une 
copie de article.php dans le répertoire /exec de mon plugin dans lequel je 
modifie la fonction exec_article() et tout fonctionne comme prévu :la fonction 
modifiée remplace la fonction native de spip. 

Le problème de cette solution c'est qu'à chaque changement de la version 
originale d'article.php (correction de bogue, changement de version...) 
je serais obligé de refaire une nouvelle version de mon fichier article.php 
*même si c'est une autre fonction* que exec_article() qui est mise à jour...

La même doc précisant que le moteur de spip "regarde si la fonction exec_truc 
est déjà définie" avant d'aller chercher un éventuel fichier .exec/truc.php, 
j'ai donc essayé de mettre uniquement la fonction exec_article() modifiée dans 
un fichier chargé chaque hit de l'espace privé mais dans ce cas j'ai une erreur
du type "call to undefined function xxx()" où xxx est une des fonctions native
de spip appellée par la fonction exec_article() (en général debut_droite())
et cela même si je fait un include_spip() de tous les fichiers inclus en tête 
du fichier article.php original. 

La question est donc : qu'est ce que j'oublie pour que ça 
fonctionnne???

Committo,Ergo:sum | 11 Sep 17:29
Favicon

Re: petite question concernant la surcharge des fonctions exec


Le 11 sept. 06 à 17:16, cy_altern a écrit :


> j'ai donc essayé de mettre uniquement la fonction exec_article() > modifiée dans > un fichier chargé chaque hit de l'espace privé mais dans ce cas > j'ai une erreur > du type "call to undefined function xxx()" où xxx est une des > fonctions native > de spip appellée par la fonction exec_article() (en général > debut_droite()) > et cela même si je fait un include_spip() de tous les fichiers > inclus en tête > du fichier article.php original. > > La question est donc : qu'est ce que j'oublie pour que ça > fonctionnne???
Tu as "oublié" de charger le "article.php" original, dans lequel figurent les fonctions qui te manquent. Ce fichier ne peut etre inclus par "include_spip", car celui-ci va repartir de find_in_path, trouver d'abord celui qu'il vient déjà de charger, et donc croire qu'il n'a rien à faire. De manière générale, ce qui marche pour surcharcher une fonction exec_X_dist dans un script exec/X.php, c'est de créer donc un fichier homonyme dans son spip_path, et qui commence par: include('exec/X.php'); function exec_X(....) Committo,Ergo:Sum
cy_altern | 11 Sep 19:34
Picon
Gravatar

Re: petite question concernant la surcharge des fonctions exec


Committo,Ergo:sum <esj <at> rezo.net> writes: > Tu as "oublié" de charger le "article.php" original, dans lequel > figurent les fonctions qui te manquent. > Ce fichier ne peut etre inclus par "include_spip", car celui-ci va > repartir de find_in_path, trouver d'abord celui qu'il vient déjà de > charger, et donc croire qu'il n'a rien à faire. > > De manière générale, ce qui marche pour surcharcher une fonction > exec_X_dist dans un script exec/X.php, c'est de créer donc un fichier > homonyme dans son spip_path, et qui commence par: > > include('exec/X.php'); > function exec_X(....) > > Committo,Ergo:Sum >
Merci pour le tuyau : ça marche impec ! j'en ai profité pour rajouter ce complément d'info sur la doc de spip-contrib en question : http://www.spip-contrib.net/SPIP-1-9-Que-fait-SPIP-pour-servir#forum387499

Gmane