En deux mots
En substance, pour répondre a cette requête, SPIP appelle le fichier index.php avec l’argument exec en chaine de get :
- il va chercher le fichier exec/truc.php
- il cherche dedans la fonction exec_truc()
- il cherche dedans la fonction exec_truc_dist()
Par défaut exec_truc_dist() est défini dans le fichier exec/truc.php de spip, ce qui permet, en définissant sa fonction exec_truc() de personaliser le actions de truc sans toucher au script truc.php de spip.
Comment cela marche-t-il en pratique ?
Include_fonction(’truc’)
C’est la première fonction appelée pour gérer cette demande.
C’est elle qui regroupe toutes les actions pour savoir quelle fonction exécuter, quel fichier charger pour assurer l’action ’truc’
- regarde si la fonction exec_truc est déjà définie
- sinon cherche le fichier exec/truc via la fonction include_spip ci-dessous
- regarde si la fonction exec_truc est définie -> dit que c’est celle la que l’on veut utiliser
- regarde si la fonction exec_truc_dist est définie -> c’est cette fonction que l’on veut utiliser
Les inclusions des fichiers php de SPIP via include_spip()
Par exemple include_spip(’inc/charsets’).
Elle passe par la fonction find_in_path ci-dessous pour chercher le fichier au bon endroit
La fonction include_ecrire(’inc_charsets’) qui était utilisé en <=183 reste accepté pour compatibilité des scripts, mais est moins rapide car elle doit assurer le changement de convention de nommage.
Ou index.php va-t-il chercher truc.php ?
Par défaut, il trouve le fichier exec/truc.php dans ecrire. Mais ce fichier n’est pas cherché uniquement à cet endroit.
La fonction find_in_path(’exec/truc.php’) est chargée de trouver le fichier. Elle est utilisée à chaque recherche d’un fichier de SPIP (squelettes, fichiers de langues, charset, …)
Cette fonction cherche les fichiers dans l’ordre :
- Dans $dossier_squelettes qui est une variable personalisée éventuellement par l’utilisateur pour indiquer où sont rangés ses squelettes
- Truc : il est possible de définir plusieurs répertoires dans cette variable en les séparant par des :
- Ex : $dossier_squelettes=’squelettes:autres:perso’
- Truc : il est possible de définir plusieurs répertoires dans cette variable en les séparant par des :
- Dans squelettes/
- À la racine : ./
- Dans formulaires/
- Dans dist/
- Dans ecrire/
Donc il est possible de ’remplacer’ l’usage d’un fichier natif de SPIP comme exec/truc.php en définissant son propre exec/truc.php dans un des dossiers squelettes, ou à la racine (ou dans un dossier plugins, ce sera abordé ultérieurement)
En résumé
En résumé, on peut modifier le comportement d’origine de la requête ?exec=truc
- en définissant sa propre fonction exec_truc() dans un fichier mes_options.php par exemple. Cette fonction peut faire ses propres traitement, ou/et ensuite réinclure le fichier d’origine pour appeler la fonction d’origine.
- en définissant son propre fichier exec/truc.php et y définir la fonction exec_truc().
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |