SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 247 visiteurs en ce moment

Accueil > Documentation > Tutoriaux pour le code de SPIP > SPIP 1.9 - Que fait SPIP pour servir une page de la partie privée  (...)

SPIP 1.9 - Que fait SPIP pour servir une page de la partie privée ?

4 mars 2006 – par Cerdic – commentaires

1 vote

Que fait SPIP quand on demande une page dans la partie privée
par une requête de type ecrire/?exec=truc ?

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’
  • 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().

Dernière modification de cette page le 23 janvier 2012

Retour en haut de la page

Vos commentaires

  • Le 11 septembre 2006 à 18:44, par cy_altern En réponse à : SPIP 1.9 - Que fait SPIP pour servir une page de la partie privée ?

    Un petit addendum qui évitera l’arrachage des cheveux des codeurs de plugins modifiant l’espace privé...

    Dans le début de la partie « Comment cela marche-t-il en pratique ? », il est dit :

    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

    ce qui offre effectivement la possibilité de redéfinir la fonction exec_truc() dans un plugin (sans avoir à copier tout le fichier /exec/truc.php dans le plugin, donc allège considérablement la maintenance du plugin lors des mises à jour de spip).

    Mais, pour que cette solution fonctionne il est OBLIGATOIRE de faire un include préalable du fichier truc.php original (/ecrire/exec/truc.php) afin de disposer de l’ensemble des fonctions nécessaires pour le bon fonctionnement de truc.php.

    Néanmoins cet include NE peut PAS être fait en utilisant la fonction include_spip() puisque (je cite ESJ qui m’a très efficacement et rapidement dépanné) :

    « 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 ».

    Il FAUT donc faire cette inclusion en utilisant la fonction include() de php, ce qui donne dans cet exemple :

    include(’exec/truc.php’) ;

    Merci ESJ !

    • Le 11 septembre 2006 à 19:51, par cy_altern En réponse à : SPIP 1.9 - Que fait SPIP pour servir une page de la partie privée ?

      pour les feignants : une petite bidouille pour ne pas avoir à déterminer quels sont les fichiers de /ecrire/exec/ à intégrer (et diminuer le nombre d’include inutiles),

      // inclure uniquement le fichier exec dont a besoin
        $exec = _request('exec');
        if (in_array($exec,array('truc_1','truc_2','truc_3'))) {
           include('exec/'.$exec.'.php');
        }

      il suffit donc de faire la liste de tous les fichiers (articles.php, articles_edit.php, rubriques.php...) qui seront modifiés dans le array() : seul celui qui est en cours d’affichage sera chargé.

    Répondre à ce message

  • Le 11 septembre 2006 à 18:09, par Iago En réponse à : SPIP 1.9 - Que fait SPIP pour servir une page de la partie privée ?

    Avant de chercher à la racine du site, juste après les squellettes, find_in_path regarde s’il ne le trouve pas dans les différents dossiers plugins actifs, non ?

    Répondre à ce message

  • Le 28 mars 2006 à 17:56, par Loiseau2nuit En réponse à : SPIP 1.9 - Que fait SPIP pour servir une page de la partie privée ?

    C’est bien mais ca ne fait pas un peu beaucoup de « truc » pour un concept somme toutes assez délicat à comprendre ?

    Oui bon d’accord, il y avait marqué « confirmé », je sais :clindoeil

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?
  • [Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Tutoriel : créer une carte interactive avec GIS4

    19 octobre 2013 – 26 commentaires

    Utilisation de quelques fonctions javascript pour créer des interactions avec une carte GIS. L’objet de ce tutoriel est de produire une carte interactive comme celle-ci Effacer tous les points d’une carte d’une carte La fonction javascript (...)

  • Agenda 2.0

    3 novembre 2008 – 1067 commentaires

    Voici la version pour SPIP 2.0 du Plugin Agenda pour SPIP 1.9.2, avec une interface remaniée pour encore plus de plaisir. Pour une documentation concernant l’utilisation d’Agenda 3 pour SPIP 3, veuillez pour l’instant vous référer à SPIP 3, Agenda (...)

  • Menus

    18 août 2009 – 957 commentaires

    Créez enfin vos menus facilement !

  • cisf : plugin « saisie facile » pour SPIP 3

    27 mai 2015 – 125 commentaires

    Cette nouvelle version est compatible avec SPIP 3.0, SPIP 3.1 (tout en restant compatible avec SPIP 2.1). Ce plugin « saisie facile » permet de créer ou de modifier facilement un article directement depuis le site public. Ce plugin : Diminue (...)

  • Partageur

    29 janvier 2011 – 45 commentaires

    Permet de recopier facilement des articles d’un site SPIP partageur à l’autre. Ce plugin est encore en version beta. Les retours et critiques sont les bienvenus ... Présentation Ce plugin est né d’un besoin de partager des articles entre sites (...)