Bonjour,
ca a très bien marché, merci !
Mon script de test (nom : testDef.html, placé à la racine du site) contenait :
<BOUCLE_definition(DEFINITIONS){id_definition}>
[(#LOGO_DEFINITION|image_responsive{200})]
</BOUCLE_definition>
Après avoir vidé le cache, j’ai invoqué mon site en passant ?page=testDef&id_definition=2
Puis il faut aller dans le sous répertoire « tmp/cache/skel » et là plusieurs fichiers (pour moi il y en avait 3) html/php apparaissent. 2 sont liés à l’espace privé et ne m’intéressaient pas, le 3ieme contenait un commentaire dans lequel testDef apparaissait. C’était le bon.
Dans le code généré, il y avait un ensemble de choses qui ne m’intéressaient pas (notamment la boucle faisait appel à la BDD, ce dont je n’avais pas besoin puisque j’étais dans le contexte du plug-in qui avait déjà réalisé cette opération). J’ai extrait les quelques lignes qui m’intéressaient (notament une contenait en effet l’appel à quete_logo). Il faut juste faire attention au fait que les variables contenues dans ces lignes font appel à la pile de SPIP (par exemple pour retrouver id_definition). Or j’avais accès directement à id_definition dans mon script.
J’ai rapidement abouti au code ci-après (ce que j’ai piqué dans le cache est la ligne $logo= … , le reste étant le code d’origine à peu de choses près).
Merci !
/**
* Fonction de remplacement par défaut pour les termes trouvés dans les textes
*
* @param string $mot
* Le mot trouvé
* @param string $definition
* La définition correspondante
* @return string
* Code HTML de remplacement de la définition
*/
function dictionnaires_remplacer_defaut_dist($mot, $definition) {
$class="";
if ((!isset($definition['url']) OR !$url = $definition['url']) && (!isset($definition['url_externe']) OR !$url = $definition['url_externe'])) {
$url = generer_url_entite($definition['id_definition'],'definition');
}else{
if(strpos($url,'http') == 0)
$class="spip_out";
}
$class = (strlen($class) > 0) ? " class='$class' " : "";
$theDef = _T('definition:titre_definition').': '
. couper(trim(attribut_html(supprimer_tags(typo(expanser_liens($definition['texte']))))),300);
//$theDef = "<em>".$theDef."</em>";
$logo .= (
'' .
filtrer('image_graver',image_responsive(
((!is_array($l = quete_logo('id_definition', 'ON', $definition['id_definition'],'', 0))) ? '':
("<img class=\"spip_logo spip_logos\" alt=\"\" src=\"$l[0]\"" . $l[2] . ($l[1] ? " onmouseover=\"this.src='$l[1]'\" onmouseout=\"this.src='$l[0]'\"" : "") . ' />')),'200')) .
'');
$theDef = $logo.$theDef;
return $mot
.'<sup class="spipDefinitionTip"><a href="'.$url.'"'.$class.'data-original-title="'.$theDef.'" data-toggle="tooltip" data-html="true">'
.'?'
.'</a></sup>';//'<pre>'.print_r($definition,true).'</pre>' ;
}
L’un d’eux contient dans le commentaire
Le 18 nov. 2017 à 12:56, RealET <real3t@gmail.com> a écrit :
Manu a écrit le 18/11/2017 à 12:16 :
Fait un squelette qui fait ce que tu veux pour #LOGO_DEFINITION
Vide ton cache
Affiche la page générée par le squelette
Va voir le PHP mis en cache par SPIP
Ah, mais c'est malin, ça : où peut-on consulter/visualiser le code php généré par SPIP ?
var_mode=debug d'une part
Et dans le dossier cache/
PS : de mémoire, quete_logo est sans doute la fonction cherchée
https://code.spip.net/autodoc/tree/ecrire/public/quete.php.html#function_quete_logo_objet
--
RealET
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net
Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html
Infos : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
Irc : de l'aide à toute heure : http://spip.net/irc