Le Couteau Suisse est un plugin qui propose d’introduire facilement de simples fonctionnalités supplémentaires à SPIP, et que vous pouvez trouver ici. Le présent article est destiné à tous ceux qui créent leurs propres squelettes et pensent trouver avec ce plugin une amélioration notable de leurs sites.
Le but de cet article est d’indiquer comment mieux associer un jeu de squelettes avec Le Couteau Suisse.
Pré-configuration du Couteau Suisse
Une pré-configuration est la mise en place d’un pack permettant en un seul clic de configurer Le Couteau Suisse. Il permettra ensuite de choisir les outils à activer, de définir la valeur de certaines de leurs variables ainsi que certains define() surchargeables.
Voici un exemple qui s’allie avec le squelette « Alternatives ». Ce code est à placer dans le fichier mes_options.php
que vous trouverez/placerez dans le dossier config/
:
######## CONFIGURATION COUTEAU SUISSE ########
// Installation des outils par defaut
$GLOBALS['cs_installer']['Alternatives']['outils'] =
'supprimer_numero|decoupe|sommaire';
// Installation des variables par defaut
$GLOBALS['cs_installer']['Alternatives']['variables'] = array(
'auto_sommaire' => 1,
'balise_sommaire' => 1, // ou 0, si on n'utilise pas la balise #CS_SOMMAIRE
);
// Compatibilite ascendante avec l'ancien filtre 'decoupe'
@define('_decoupe_COMPATIBILITE', '-----');
Observez le résultat sur la page de configuration du Couteau Suisse (ecrire/?exec=admin_couteau_suisse
), dans le cadre de gauche, sous la mention « Réinitialisations ». Un lien cliquable « pour Alternatives » est apparu et vous permet de réinitialiser le plugin, tout en :
- activant les 3 outils suivants :
- Supprimer numéros
- Découper un texte en pages et/ou en onglets
- Un sommaire pour vos articles
- définissant 2 variables suivantes :
- un sommaire systématique dans les articles
- l’utilisation de la balise #CS_SOMMAIRE
- ajoutant la compatibilité avec la contribution de gpl préférant le raccourci « ----- ».
Astuce : Le fichier tmp/couteau-suisse/config.php
contient la configuration en cours de votre Couteau Suisse.
Forcer la valeur d’une variable par défaut
Le Couteau Suisse comporte plus de 120 paramètres de configuration (appelés aussi variables)... Ce paragraphe oblige à connaître le nom de la variable dont vous désirez surcharger la valeur par défaut.
La fonction dont nous avons besoin ici doit être placée dans le fichier mes_options.php
— que vous trouverez/placerez dans le dossier config/
— et doit être nommée comme ceci : ’initialiser_variable_’ auquel on ajoute le nom de la variable. Le paramètre de cette fonction est l’ancienne valeur par défaut que l’on peut utiliser ou non. Le résultat de cette fonction (parfois un simple nombre, parfois une chaine de caractères, parfois un code PHP) doit être conforme à la définition originale de la variable, et notamment de sa valeur par défaut native. Il est donc impossible pour vous d’écrire une fonction d’initialisation sans avoir parcouru le code source de l’outil et de sa variable.
Exemple qui oblige le passage par défaut aux URLs « libres » et non « page » (valeur par défaut de SPIP et du Couteau Suisse) :
// Initialiser le type d'URLs sous SPIP 2.0
// Nom de la variable : radio_type_urls3
// Résultat de la fonction : code PHP
function initialiser_variable_radio_type_urls3($defaut) {
return "'libres'";
}
Exemple qui ajoute deux corrections automatiques. Notez que la manipulation d’un code PHP placé en variable est un peu délicate :
// Initialiser les corrections automatiques (version CS >= 1.8.41.00)
// Nom de la variable : insertions
// Résultat de la fonction : code PHP
function initialiser_variable_insertions($defaut) {
eval('$test='.$defaut.';');
$test = "insertions = INSERTIONS
/\ba *capella\b/ = <i>a capella</i>
$test";
return var_export($test,1);
}
Si l’utilisateur n’a jamais validé la configuration d’un outil, si le Couteau Suisse est tout nouvellement installé ou si l’utilisateur clique sur le bouton ’Par défaut’ dans la configuration de l’outil en question, alors les variables associées prennent leur valeur par défaut. Dès la première validation du formulaire de configuration, la nouvelle valeur est stockée en base de données et la valeur par défaut est désormais ignorée. De cette façon, l’utilisateur peut infirmer, s’il le veut, le choix qui a été fait par la fonction initialiser_variable_toto().
Astuce : dans le cas d’une mutualisation et en jouant avec les différentes autorisations, il vous est donc possible de :
- Forcer l’initialisation d’une variable
- Et interdire ensuite sa modification future
Voici la liste des outils et des variables disponibles au 09/04/2012 sous SPIP 3.0 :
Nom de l’outil | id de l’outil | Variables éventuelles |
---|---|---|
Affiche tout | aff_tout | tout_rub, tout_aut |
Allègement de l’interface privée | simpl_interface | |
Ancres douces | soft_scroller | scrollTo, LocalScroll |
Balise #INSERT_HEAD | insert_head | |
Balise #INTRODUCTION | introduction | lgr_introduction, suite_introduction, lien_introduction |
Balise #SET étendue | balise_set | |
Balises #TITRE_PARENT/OBJET | titre_parent | titres_etendus |
Belles URLs | liens_orphelins | liens_interrogation, liens_orphelins, long_url, coupe_url |
Belles puces | pucesli | puceSPIP |
Blocs Dépliables | blocs | bloc_unique, blocs_cookie, bloc_h4, blocs_slide, blocs_millisec, pp_edition_blocs, pp_forum_blocs |
Blocs multilingues | toutmulti | |
Bouton « Voir le site public » | icone_visiter | |
Boîtes privées | boites_privees | cs_rss, format_spip, stat_auteurs, qui_webmasters, bp_urls_propres, bp_tri_auteurs |
Chatons | chatons | pp_edition_chatons, pp_forum_chatons |
Citations bien balisées | citations_bb | |
Comportements du Couteau Suisse | cs_comportement | log_couteau_suisse, spip_options_on, distant_off, distant_outils_off |
Corrections automatiques | insertions | insertions |
Dans la même rubrique | meme_rubrique | meme_rubrique |
Dossier du squelette | dossier_squelettes | dossier_squelettes |
Débogueur de développement | devdebug | devdebug_mode, devdebug_espace, devdebug_niveau |
Décoration | decoration | decoration_styles, pp_edition_decoration, pp_forum_decoration |
Découpe en pages et onglets | decoupe | balise_decoupe, pp_edition_decoupe, pp_forum_decoupe |
Désactive jQuery | f_jQuery | |
Désactive les objets flash | desactiver_flash | |
Ecran de sécurité | ecran_securite | ecran_actif, ecran_load |
Exposants typographiques | typo_exposants | expo_bofbof |
Filets de Séparation | filets_sep | pp_edition_filets_sep, pp_forum_filets_sep |
Force la langue | forcer_langue | |
Format des URLs | type_urls | radio_type_urls3, terminaison_urls_page, separateur_urls_page, terminaison_urls_propres, debut_urls_propres, marqueurs_urls_propres, url_max_propres, debut_urls_propres2, marqueurs_urls_propres2, url_max_propres2, terminaison_urls_libres, debut_urls_libres, url_max_libres, url_arbo_minuscules, urls_arbo_sans_type, url_arbo_sep_id, terminaison_urls_arbo, url_max_arbo, terminaison_urls_propres_qs, url_max_propres_qs, terminaison_urls_propres_qs, marqueurs_urls_propres_qs, url_max_propres_qs, spip_script, urls_minuscules, urls_avec_id, urls_avec_id2, urls_id_3_chiffres, urls_id_sauf_rubriques, urls_id_sauf_liste |
Gestion du JavaScript | filtrer_javascript | radio_filtrer_javascript3 |
Glossaire interne | glossaire | glossaire_groupes, glossaire_limite, glossaire_js, glossaire_abbr |
Guillemets typographiques | guillemets | |
Horloge | horloge | |
Intertitres en image | titres_typo | i_taille, i_couleur, i_police, i_largeur, i_hauteur, i_padding, i_align |
Jolis Coins | jcorner | jcorner_classes, jcorner_plugin |
La corbeille | corbeille | arret_optimisation |
Largeur d’écran | spip_ecran | spip_ecran |
Les tris de SPIP | tri_articles | tri_articles, tri_perso, tri_groupes, tri_perso_groupes |
Liens en clair | liens_en_clair | |
Limites mémoire | SPIP_tailles | img_Hmax, img_Wmax, img_Smax, logo_Hmax, logo_Wmax, logo_Smax, doc_Smax, copie_Smax, img_GDmax, img_GDqual |
Liste des webmestres | webmestres | webmestres |
Lutte contre le SPAM | spam | spam_mots, spam_ips |
MailCrypt | mailcrypt | |
Masquer du contenu | masquer | mot_masquer |
Mises à jour automatiques | maj_auto | |
Modération modérée | moderation_moderee | moderation_admin, moderation_redac, moderation_visit |
Orientation des images | orientation | |
Page des auteurs | auteurs | max_auteurs_page, auteurs_tout_voir, auteurs_0, auteurs_1, auteurs_5, auteurs_6, auteurs_n |
Paragrapher | paragrapher2 | paragrapher |
Pas de forums anonymes | auteur_forum | auteur_forum_nom, auteur_forum_email, auteur_forum_deux |
Pas de stockage IP | no_IP | |
Pas de verrouillage de fichiers | flock | |
Prévisualisation des articles | previsualisation | |
Retours de ligne automatiques | autobr | alinea, alinea2, pp_edition_autobr, pp_forum_autobr |
Réglage des sélecteurs | brouteur | rubrique_brouteur, select_mots_clefs, select_min_auteurs, select_max_auteurs |
SPIP et le cache… | spip_cache | radio_desactive_cache4, quota_cache, derniere_modif_invalide, duree_cache, duree_cache_mutu, compacte_css, compacte_js, compacte_prive, compacte_tout |
SPIP et les liens… externes | SPIP_liens | radio_target_blank3, url_glossaire_externe2, enveloppe_mails |
SPIP et ses raccourcis… | class_spip | racc_hr, puce, racc_h1, racc_h2, racc_g1, racc_g2, racc_i1, racc_i2, ouvre_ref, ferme_ref, ouvre_note, ferme_note, style_p, style_h |
Site en travaux | en_travaux | message_travaux, titre_travaux, admin_travaux, avertir_travaux, cache_travaux, prive_travaux |
Smileys | smileys | pp_edition_smileys, pp_forum_smileys |
Sommaire automatique | sommaire | prof_sommaire, lgr_sommaire, jolies_ancres, auto_sommaire, balise_sommaire |
Suivi des forums publics | suivi_forums | radio_suivi_forums3 |
Supprime le numéro | supprimer_numero | |
Taille des forums | forum_lgrmaxi | forum_lgrmaxi |
Tout en couleurs | couleurs | couleurs_fonds, set_couleurs, couleurs_perso, pp_edition_couleurs, pp_forum_couleurs |
Trousse à balises | trousse_balises | |
Type d’interface privée | set_options | radio_set_options4 |
Validateur XML | xml | |
Version texte | verstexte | |
Visiteurs connectés | visiteurs_connectes |
Voici la liste des outils et des variables disponibles au 17/01/2010 sous SPIP 2.0.10 :
Nom de l’outil | id de l’outil | Variables éventuelles |
---|---|---|
Allègement de l’interface privée | simpl_interface | |
Ancres douces | soft_scroller | scrollTo, LocalScroll |
Balise #INSERT_HEAD | insert_head | |
Balise #INTRODUCTION | introduction | lgr_introduction, suite_introduction, lien_introduction |
Balises #TITRE_PARENT/OBJET | titre_parent | titres_etendus |
Belles URLs | liens_orphelins | liens_interrogation, liens_orphelins |
Belles puces | pucesli | puceSPIP |
Blocs Dépliables | blocs | bloc_unique, blocs_cookie, bloc_h4, blocs_slide, blocs_millisec, pp_edition_blocs, pp_forum_blocs |
Blocs multilingues | toutmulti | |
Boîtes privées | boites_privees | cs_rss, format_spip, stat_auteurs, qui_webmasters, bp_urls_propres, bp_tri_auteurs |
Bouton « Visiter » | icone_visiter | |
Chatons | chatons | pp_edition_chatons, pp_forum_chatons |
Citations bien balisées | citations_bb | |
Comportements du Couteau Suisse | cs_comportement | log_couteau_suisse, spip_options_on, distant_off, distant_outils_off |
Corrections automatiques | insertions | insertions |
Décoration | decoration | decoration_styles, pp_edition_decoration, pp_forum_decoration |
Découpe en pages et onglets | decoupe | balise_decoupe, pp_edition_decoupe, pp_forum_decoupe |
Désactive jQuery | f_jQuery | |
Désactive les objets flash | desactiver_flash | |
Dossier du squelette | dossier_squelettes | dossier_squelettes |
Exposants typographiques | typo_exposants | expo_bofbof |
Filets de Séparation | filets_sep | |
Force la langue | forcer_langue | |
Format des URLs | type_urls | radio_type_urls3, terminaison_urls_page, separateur_urls_page, terminaison_urls_propres, debut_urls_propres, marqueurs_urls_propres, url_max_propres, debut_urls_propres2, marqueurs_urls_propres2, url_max_propres2, terminaison_urls_libres, debut_urls_libres, url_max_libres, url_arbo_minuscules, urls_arbo_sans_type, url_arbo_sep_id, terminaison_urls_arbo, url_max_arbo, terminaison_urls_propres_qs, url_max_propres_qs, terminaison_urls_propres_qs, marqueurs_urls_propres_qs, url_max_propres_qs, spip_script, urls_minuscules, urls_avec_id, urls_avec_id2, urls_id_3_chiffres, urls_id_sauf_rubriques |
Gestion du JavaScript | filtrer_javascript | radio_filtrer_javascript3 |
Glossaire interne | glossaire | glossaire_groupes, glossaire_limite, glossaire_js |
Guillemets typographiques | guillemets | |
Horloge | horloge | |
Intertitres en image | titres_typo | i_taille, i_couleur, i_police, i_largeur, i_hauteur, i_padding, i_align |
Jolis Coins | jcorner | jcorner_classes, jcorner_plugin |
La corbeille | corbeille | arret_optimisation |
Largeur d’écran | spip_ecran | spip_ecran |
Les tris de SPIP | tri_articles | tri_articles, tri_perso, tri_groupes, tri_perso_groupes |
Liens en clair | liens_en_clair | |
Limites mémoire | SPIP_tailles | img_Hmax, img_Wmax, img_Smax, logo_Hmax, logo_Wmax, logo_Smax, doc_Smax, copie_Smax, img_GDmax |
Liste des webmestres | webmestres | webmestres |
Lutte contre le SPAM | spam | spam_mots |
MailCrypt | mailcrypt | |
Mises à jour automatiques | maj_auto | |
Modération modérée | moderation_moderee | moderation_admin, moderation_redac, moderation_visit |
Orientation des images | orientation | |
Page des auteurs | auteurs | max_auteurs_page, auteurs_tout_voir, auteurs_0, auteurs_1, auteurs_5, auteurs_6, auteurs_n |
Paragrapher | paragrapher2 | paragrapher |
Pas de forums anonymes | auteur_forum | auteur_forum_nom, auteur_forum_email, auteur_forum_deux |
Pas de stockage IP | no_IP | |
Pas de verrouillage de fichiers | flock | |
Prévisualisation des articles | previsualisation | |
Réglage du sélecteur de rubrique | brouteur | rubrique_brouteur |
SPIP et le cache… | spip_cache | radio_desactive_cache4, quota_cache, derniere_modif_invalide, duree_cache, duree_cache_mutu |
SPIP et les liens… externes | SPIP_liens | radio_target_blank3, url_glossaire_externe2, enveloppe_mails |
SPIP et ses raccourcis… | class_spip | racc_hr, puce, racc_h1, racc_h2, racc_g1, racc_g2, racc_i1, racc_i2, ouvre_ref, ferme_ref, ouvre_note, ferme_note, style_p, style_h |
Site en travaux | en_travaux | message_travaux, titre_travaux, admin_travaux, avertir_travaux, prive_travaux |
Smileys | smileys | pp_edition_smileys, pp_forum_smileys |
Sommaire automatique | sommaire | prof_sommaire, lgr_sommaire, jolies_ancres, auto_sommaire, balise_sommaire |
Suivi des forums publics | suivi_forums | radio_suivi_forums3 |
Supprime le numéro | supprimer_numero | |
Taille des forums | forum_lgrmaxi | forum_lgrmaxi |
Tout en couleurs | couleurs | couleurs_fonds, set_couleurs, couleurs_perso, pp_edition_couleurs, pp_forum_couleurs |
Trousse à balises | trousse_balises | |
Type d’interface privée | set_options | radio_set_options4 |
Validateur XML | xml | |
Version texte | verstexte | |
Visiteurs connectés | visiteurs_connectes |
Ajouter une lame [1] personnalisée
Il vous est possible d’ajouter à la volée un outil au Couteau Suisse. La syntaxe ressemble à celle utilisée par les outils déjà présents au sein du plugin, et expliquée ici : [dev] Le Couteau Suisse : développer un outil.
Les lames [1] personnalisées apparaissent en italique sur la page de configuration du plugin (ecrire/?exec=admin_couteau_suisse
) et doivent être activée comme toutes les autres fournies par défaut. Leur initialisation doit être placée dans un fichier nommé mon_nouvel_outil_config.php. Ce fichier doit être placé dans le dossier outils/ de votre squelette et obligatoirement comporter une fonction appelée mon_nouvel_outil_config_dist() .
Voici un premier exemple qui remplace toutes les citations entre (vrais !) guillemets par des italiques simples. Exemple : « une citation » est changé en une citation. Le code ci-dessous doit être placé dans le fichier outils/mes_citations_config.php :
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
# --------------------------------------------------------------
# Fichier de configuration pris en compte par config_outils.php
# et specialement dedie a la configuration de ma lame perso
# --------------------------------------------------------------
// Ajout de l'outil 'mes_citations'
function outils_mes_citations_config_dist() { add_outil(array(
'id' => 'mes_citations',
'nom' => 'Citations en italique',
'description' => 'Une lame qui transforme toutes les citations <html>« toto »</html> en simple {italique}.',
'categorie' => 'typo-corr',
'pipeline:pre_typo' => 'mes_citations_pre_typo',
'code:options' =>'
// Fonction de remplacement
function mes_citations_rempl($texte) {
return preg_replace(\',«\s*(.*?)\s*»,msS\', \'{$1}\', $texte);
}
// Fonction de pipeline
function mes_citations_pre_typo($texte) {
if (strpos($texte, \'«\')===false) return $texte;
// appeler mes_citations_rempl() une fois que certaines balises ont ete protegees
return cs_echappe_balises(\'\', \'mes_citations_rempl\', $texte);
}
',
));}
?>
Voici un second exemple qui permet d’offrir un nouveau raccourci à vos rédacteurs pour mettre un texte en évidence. La programmation de cet outil pouvant être un peu plus complète que la précédente, il faut créer ici deux fichiers : un pour la configuration et un pour la définition des fonctions de pipeline.
1. Le code ci-dessous doit être placé dans le fichier outils/mise_evidence_config.php :
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
# --------------------------------------------------------------
# Fichier de configuration pris en compte par config_outils.php
# et specialement dedie a la configuration de ma lame perso
# --------------------------------------------------------------
// Ajout de l'outil 'mise_evidence'
function outils_mise_evidence_config_dist() { add_outil(array(
'id' => 'mise_evidence',
'nom' => 'Mise en évidence',
'description' => 'Un nouveau raccourci pour mettre un texte en évidence. Syntaxe : [*un texte*]',
'auteur' => 'Moi-même',
'categorie' => 'typo-racc',
'pipeline:pre_typo' => 'mise_evidence_pre_typo',
'pipeline:nettoyer_raccourcis_typo' => 'mise_evidence_nettoie',
'pipeline:BT_toolbox' => 'mise_evidence_BarreTypo',
));}
?>
2. Le code ci-dessous doit être placé dans le fichier outils/mise_evidence.php :
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
// Fonction de remplacement
function mise_evidence_rempl($texte) {
return preg_replace(',\[\*(.*?)\*\],', '<span style="color:orange;">$1</span>', $texte);
}
// Fonction de pipeline
function mise_evidence_pre_typo($texte) {
if (strpos($texte, '[*')===false) return $texte;
// appeler mise_evidence_rempl() une fois que certaines balises ont ete protegees
return cs_echappe_balises('', 'mise_evidence_rempl', $texte);
}
// Fonction indiquant le nouveau raccourci
function mise_evidence_raccourcis() {
return 'Mise en évidence : <b>[*texte*]</b>';
}
// Aide le Couteau Suisse a calculer la balise #INTRODUCTION
function mise_evidence_nettoie($texte) {
return preg_replace(',\[\*(.*?)\*\],', '$1', $texte);
}
$GLOBALS['cs_introduire'][] = 'mise_evidence_nettoie';
// Fonction qui renvoie une ligne de tableau entre <tr></tr>
// afin de l'inserer dans la Barre Typo V2, si elle est presente
function mise_evidence_BarreTypo($tr) {
return $tr.'<tr><td><a title="Mise en évidence" href="javascript:barre_raccourci(\'[*\',\'*]\',@@champ@@)">Mise en évidence</a></td></tr>';
}
?>
Discussions par date d’activité
4 discussions
Bonjour,
Débutante, j’ai sans doute mal regardé et je passe à côté d’un truc idiot.
Mais je n’arrive pas à modifier les paramètres du Couteau : j’obtiens le message :
"Forbidden
You don’t have permission to access /spip/ecrire/ Je travaille sur un site en localhost.
Merci
Répondre à ce message
La possibilité de sauvegarder la config du CS est géniale.
Par contre je n’ai l’impression qu’un fois un pack sauvegardé on puisse le supprimé sans editer à la main le fichier config/mes_options.php
Super Plugin en tous cas ...
Maintenant, c’est chose faite. Les packs sauvegardés sont à présent supprimables. Merci du retour ;-)
Répondre à ce message
J’ai ajouté au squelette Ahuntsic (évolution du squelette Alternatives) une pré-configuration du Couteau Suisse, très semblable à celle recommandée dans le présent article. J’ai placé le code dans ahuntsic_options.php du jeu de squelettes Ahuntsic. Ça fonctionne parfaitement. Un petit soucis toutefois. Si des outils sont déjà activé lors de la réinitialisation du pack pour Ahuntsic , tous les autres outils déjà activés sont désactivés.
Y a-t-il un moyen de conserver les outils déjà activés et installer ou réinitialiser uniquement ceux de la pré-configuration du pack Ahuntsic ?
Eh oui, pour l’instant les choses sont très basiques : une configuration réinitialise totalement le Couteau Suisse pour le remettre dans l’état exact où il était lors de la sauvegarde en question, ou conformément à la configuration spécifiée à la main dans mes_options.php.
Le sujet des collisions est une question délicate, car que doit-on faire des variables actives et existant avant ce clic ? Un petit formulaire ajax permettant de détailler un peu ses choix serait pas mal en effet... Au moins pour l’instant, un message d’avertissement avant « l’écrasement général »...
Oui, je conçois assez facilement les risques de collisions d’un tel mécanisme. Mais, effectivement, un message avant l’écrasement serait hautement souhaitable.
Merci encore pour tout cela.
Mais en fait le plugin le fait déjà, ça m’était sorti de la tête... Un message d’avertissement met en garde contre la réinitialisation du plugin avant l’installation du pack.
Dans l’idéal, il faudrait ajaxer la boîte info pour lister les outils inclus dans le pack avant la confirmation de l’utilisateur... Dès que j’ai un peu de temps...
Répondre à ce message
Très pratique ça pour aider à la configuration d’un squelette.
Merci pour cette contrib.
c’est génial ce couteau !
Répondre à ce message
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 : |