SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 320 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 ?

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

  • Métas +

    3 décembre – 12 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Acces Restreint 3.0

    11 décembre 2008 – 785 commentaires

    Le plugin accès restreint permet de définir et de gérer des zones de l’espace public en accès restreint. Cette version du plugin a été redévelopée et optimisée tout spécialement pour SPIP 2.0. Il en découle une amélioration des performances sur les gros (...)

  • Compositions 2 et 3

    25 mars 2011 – 176 commentaires

    Ce plugin vous permet de définir plusieurs variantes de squelettes (nommées compositions) pour un même type d’objet SPIP. Dans l’espace privé, il est alors possible de choisir, dans un menu déroulant, la composition qu’on veut attribuer à chaque (...)

  • Configurer Sparkpost

    25 avril – 18 commentaires

    N’hésitez pas à relire le préambule de cette rubrique avant de créer un compte sur une plateforme tierce . Présentation Sparkpost est une société d’envoi de mailing https://www.sparkpost.com/ Sur les petits volumes ( <100.000 emails / mois), (...)

  • Mode portail Communiquant pour SoyezCréateurs

    29 septembre 2010 – 21 commentaires

    5e mode d’affichage de la page d’accueil, ce mode se distingue des autres par une animation proposant un fondu/enchaîné des logos des articles à la une. Zonage Configuration Zone d’entête Nom du site Slogan si plugin bandeau présent (...)

Ça spipe par là