SPIP-Contrib

SPIP-Contrib

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

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

Accueil > Outils pour plugins > Le Couteau Suisse > [dev] Les données du Couteau Suisse

[dev] Les données du Couteau Suisse

11 mai 2011 – par Patrice Vanneufville – commentaires

16 votes

Voici comment offrir aux outils la possibilité de stocker des données précalculées afin d’augmenter la vitesse du traitement des pages lors de l’exécution du plugin.

Introduction

Chaque outil du Couteau Suisse peut stocker des données grâce au cadre offert par le plugin. Ce stockage est utile pour booster les performances et précompiler par exemple un tableau dont le résultat final sera utilisé plus tard lors de l’exécution. C’est notamment le moment d’interpréter la valeur d’une variable entrée par l’utilisateur — comme une liste de mots, un choix spécifique, etc. —, préparer des boutons pour la barre typo, préparer une aide ou un raccourci, etc.

Lire les données

Pour lire une donnée stockée par un outil au moment de l’exécution du site, la fonction à connaitre est :         cs_lire_data_outil($outil, $casier=false)

Chaque outil a la possibilité de stocker puis de lire un (par défaut) ou plusieurs « casiers ». Si la variable $casier n’est pas renseignée, alors l’outil n’a besoin que d’un seul casier principal. Un casier est un peu comme une étiquette que l’on peut apposer (ou non) sur une donnée particulière que l’on désire séparer d’une autre.

Les outils utilisant ce mécanisme sont aujourd’hui :
Chatons, Smileys, Décoration, Filets de Séparation, Tout en couleurs, Corrections automatiques, Exposants typographiques, Jolis Coins, Lutte contre le SPAM.

Voici en guise d’exemple la fonction de remplacement utilisée par les Chatons. Notez qu’elle devient très simple et très rapide grâce au stockage en amont de toutes les données à rechercher puis à remplacer :

  1. function cs_rempl_chatons($texte) {
  2. if (strpos($texte, ':')===false) return $texte;
  3. $chatons = cs_lire_data_outil('chatons');
  4. return str_replace($chatons[0], $chatons[1], $texte);
  5. }

Télécharger

Dans l’exemple suivant, les raccourcis préalablement calculés et disponibles pour reconnaître les smileys sont listés dans cette fonction. Notez le casier spécifique ’racc’ qui est appelé ici :

  1. // liste des nouveaux raccourcis ajoutes par l'outil
  2. // si cette fonction n'existe pas, le plugin cherche alors _T('couteauprive:un_outil:aide');
  3. function smileys_raccourcis() {
  4. $racc = cs_lire_data_outil('smileys', 'racc');
  5. return _T('couteauprive:smileys:aide',
  6. array('liste' => '<b>' . join('</b>, <b>', $racc) . '</b>')
  7. );
  8. }

Télécharger

Stocker les données

Aucune fonction a proprement parler n’existe pour stocker des données à l’instar de la lecture, le mécanisme est un peu différent.

Pour qu’un outil puisse stocker des données, il faut qu’il possède une fonction monoutil_installe_dist() (notez le suffixe “_installe_dist” ajouté à l’id de l’outil en question) qui calcule puis renvoie les données à stocker. Le stockage des données se produit uniquement lors de l’installation de l’outil, c’est à dire lorsque l’une des conditions suivantes se produit :
-  La page d’admin du Couteau Suisse est affichée
-  Un ou plusieurs outils sont activés ou désactivés
-  Une valeur est changée manuellement dans la configuration d’un outil
-  L’URL de la page est affublée du paramêtre « cs=calcul »
-  Le fichier tmp/couteau-suisse/mes_options.php n’est pas trouvé

Notes :
-  Il est préférable que la fonction monoutil_installe_dist() soit présente dans le module outils/monoutil.php.
-  Le format retourné par cette fonction est obligatoirement un tableau de données.

Différents formats d’utilisation :

1. Un casier principal unique (la fonction d’installation renvoie un tableau sans nom) :

  1. // Format utilisé pour un casier unique :
  2. return array($mes_donnees);
  3.  
  4. // que l'on peut lire ainsi :
  5. $mes_donnees = cs_lire_data_outil('monoutil');

Télécharger

2. Un casier principal (tableau sans nom) et un casier secondaire (tableau nommé casier_secondaire) :

  1. // Format utilisé pour un casier principal et un casier secondaire nommé :
  2. return array(
  3. $mes_donnees_principales,
  4. 'casier_secondaire' => $mes_donnees_secondaires,
  5. );
  6.  
  7. // que l'on peut lire ainsi :
  8. $mes_donnees_principales = cs_lire_data_outil('monoutil');
  9. $mes_donnees_secondaires = cs_lire_data_outil('monoutil', 'casier_secondaire');

Télécharger

3. Deux casiers différents nommés casier1 et casier2 :

  1. // Format utilisé pour deux casiers différents :
  2. return array(
  3. 'casier1' => $mes_donnees_1,
  4. 'casier2' => $mes_donnees_2,
  5. );
  6.  
  7. // que l'on peut lire ainsi :
  8. $mes_donnees_1 = cs_lire_data_outil('monoutil', 'casier1');
  9. $mes_donnees_2 = cs_lire_data_outil('monoutil', 'casier2');

Télécharger

Surcharge de la fonction d’installation

La fonction d’installation d’un outil est surchargeable (toutes dernières versions du Couteau Suisse) : la fonction monoutil_installe(), si elle existe, devient prioritaire sur la fonction native monoutil_installe_dist().

Vous pouvez donc personnaliser l’installation des outils natifs fournis dans le plugin en remplaçant ou modifiant les données stockées. Bien que recommandé, l’appel à la fonction surchargée reste facultatif. Cette fonction de surcharge doit être visible au moment de l’installation de l’outil, le mieux étant de la placer dans /config/mes_options.php.

Exemple de complément à l’outil « Exposants Typographiques » où le symbole des degrés est remplacé par un petit « o » en exposant :

  1. function typo_exposants_installe() {
  2. $data = typo_exposants_installe_dist();
  3. $data['fr'][0][] = '/°|&(?:#176|deg);/';
  4. $data['fr'][1][] = _TYPO_class . 'o</sup>';
  5. return $data;
  6. }

Télécharger

Exemple de mot ajouté à l’outil « Lutte contre le SPAM » de façon fixe et non modifiable par l’utilisateur :

  1. function spam_installe() {
  2. $data = spam_installe_dist();
  3. $data[0][0][] = 'averybadword';
  4. return $data;
  5. }

Télécharger

Exemple d’un smiley icon_kiss.gif ajouté au jeu déjà existant :

  1. function smileys_installe() {
  2. $tab = smileys_installe_dist();
  3. compile_smiley($tab, ':-*', 'icon_kiss', 'gif');
  4. return $tab;
  5. }

Télécharger

Note : afin de connaître l’id des outils actuellement fournis avec le Couteau Suisse, rendez-vous sur cette page : [dev] Les autorisations du Couteau Suisse.

Où sont les données ?

Les données stockées par les outils actifs sont compilées par le plugin sous forme de différentes fonctions que vous trouverez dans le fichier tmp/couteau-suisse/mes_outils.php.

Le nom des fonctions est calculé ainsi :
-  ’cs_’ . $outil pour le casier principal
-  ’cs_’ . $outil . ’_’ . $casier pour un casier spécifique.

Le format des données renvoyées est propre à chaque outil, il n’y a pas de règle, à vous de lire le code pour comprendre la structure que vous cherchez à modifier. En cas de problème, le forum ci-dessous est fait pour vous ! N’hésitez pas à proposer vos trouvailles et solutions, elle profiterons à d’autres.

Dernière modification de cette page le 22 juin 2011

Retour en haut de la page

Vos commentaires

  • Le 25 septembre 2012 à 08:41, par Jaseur En réponse à : [dev] Les données du Couteau Suisse

    Bonjour Pat,

    Les quelques lames utilisées parmi d’autres :
    -Découper un texte en pages et/ou en onglets
    -Des blocs dépliables
    -Décorer ou colorer vos textes
    -etc

    En fait c’est quand on active le plugin couteau suisse, il reste bloqué sur une fonction exec
    dont extraits :
    « exec=charger_plugin&action=actionner arg=&hash=xxxx....
    redirect=http%3A%2F%2Fwww.monsite.fr%2Fecrire%2F%3Fexec%3Dadmin_plugin »

    il semblerait que cela dysfonctionne avec l’administration des plugins dans mon spip3.54.4 sous Escal 3 :
    « / ?exec=admin_plugin »

    Et cela s’est passé après plusieurs autres mises à jour d’autres plugins qui se sont bien déroulées. Avec le couteau suisse, c’est l’écran total blanc bloqué !

    Impossible de revenir dans l’administration de spip.}

    Et l’accès aau site public semble bloqué

    Seule solution trouvée à ce jour, enlever le plugin couteau suisse.

    Avez-vous une autre solution
    merci de votre aide.

    Répondre à ce message

  • Le 24 septembre 2012 à 08:36, par Jaseur En réponse à : [dev] Les données du Couteau Suisse

    Bonjour,

    Gros problèmes, depuis ce 23 sept 2012, après une mise à jour SPIP3.05
    et dans les plugins la mise à jour du couteau suisse 1.8.98.
    Cà coince, et n’affiche plus rien, semble bloqué !
    Quand je supprime le couteau suisse ,aucun problème.
    Sauf que les onglets et séparations de pages dans mes articles ne sont plus opérants.

    J’ai bien essayé , de remettre la version 1.8.78 du couteau suisse, mais impossible de faire fonctionner.

    Avez-vous une solution ?

    Merci

    Le Jaseur Boreal
    http://www.lettonie-francija.fr

    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

  • Metas +

    3 décembre – 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, (...)

  • Critère {mots}

    6 août 2009 – 316 commentaires

    Permettre de sélectionner facilement des objets SPIP ayant un ou des mots clefs en communs.

  • LinkCheck : vérificateur de liens

    13 février 2015 – 64 commentaires

    Ce plugin permet de chercher et tester l’ensemble des liens présents dans les objets. Vous pourrez donc en quelques clics connaître les liens brisés ou défectueux qui se sont immiscés dans le contenu de votre site SPIP. La vérification s’effectue en (...)

  • Import ICS 2 (agenda distant)

    2 août – 39 commentaires

    La version 2 du plugin « import ICS » en reprend la principale fonctionnalité, à savoir l’ajout automatique d’évènements distants dans la liste des évènements d’un site. À la différence de la première version, elle ne dépend pas du plugin « Séminaire » et est (...)

  • GIS 4

    11 août 2012 – 1286 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)