Mardi 20 juillet 2010

Moyens de surcharger SPIP

Fonctions

fonction inc_nom_dist() peut être surchargée par inc_nom

$f = charger_fonction('nom','inc');
$f('param');

Fichiers

ecrire/inc/nom.php

⇒ squelettes/inc/nom.php

$f = find_inc_path('inc/nom.php');
#CHEMIN{images/z.png}

Pipelines

$data = pipeline('nom', 'contenu');

Exemple : insert_head

ecrire/inc_version.php contient 40 définitions de pipelines

$GLOBALS['spip_pipeline']['insert_head'] = "passe_ici|passe_la";

$data = pipeline('nom', array (
        'arg' => array( ),
        'data' => ""
));

Déclaration dans plugin.xml :

<pipeline>
        <nom>insert_head</nom>
        <inclure>prefix_pipelines.php</inclure>
</pipeline>

prefix_pipelines.php :

<?php
fonction prefix_insert_head($flux) {
        $flux .= "texte";
}
?>

Astuce pour mise au point : var_dump($flux);

function contacts_affiche_gauche($flux){
        if ($flux['args']['exec'] == 'auteur_infos'){
                $flux['data'] .= recuperer_fond('prive/boite/selecteur_contacts_comptes', array(
                        'id_auteur'=>$flux['args']['id_auteur']
                ), array('ajax'=>true));
        }
        return $flux;
}

Dans les squelettes

#PIPELINE{nom,valeur}

[(#PIPELINE{nom,[(#ARRAY{
        args,[(#ARRAY{objet,auteur,id_objet,3})]
})]})]

Pipeline recuperer_fond

On peut écouter tous les résultats d’un squelette, et le modifier éventuellement avant leur mise en cache.

Astuce dans un squelette

[<pre>(#ENV**|unserialize|print_r{1})</pre>]

<?php echo '<pre>'; print_r($var); echo '</pre>'; ?>