Identité Extra

Un plugin tout simple pour SPIP qui étend la configuration de l’identité du site, en ajoutant par exemple une adresse, un numéro de téléphone,... enfin ce que vous voulez.

Avant-propos

Ce plugin est inspiré d’une discussion sur le site de phenix et d’un besoin récurrent de créer des champs supplémentaires sur la configuration d’identité du site, mais aussi donner la possibilité de les personnaliser facilement.

depuis la version 1.4 du plugin le comportement change.

Installation

Il suffit de suivre la procédure habituelle d’installation via le gestionnaire des plugins.

Utilisation

Par défaut le plugin propose ces nouvelles entrées : nom_organisation, telephone, adresse, ville, code_postal, region, pays ;

Une fois les champs renseignés sur la page de configuration d’identité du site (?exec=configurer_identite), à vous d’utiliser les balises dans vos squelettes ainsi :

#IDENTITE_TELEPHONE
#IDENTITE_PAYS
...

Vous disposez également d’un modèle qui reprend les informations par défaut suivant un micro format de schema.org

#MODELE{identite_extra}

Champs personnalisés

Pour la version < 1.4
Le plugin vous donne la possibilité de créer vos propres champs en surchargeant la globale $GLOBALS['identite_extra'] dans le fichier config/mes_options.php de votre site ou bien dans le fichier prefixe_options.php de votre plugin.

Exemple :

La surcharge suivante

# Champs supplémentaires pour l'identité du site
$GLOBALS['identite_extra'] = array('raison_sociale','code_ape','siret','capital')

Générera le formulaire ci-dessous

Pour la version > 1.4

Nouvelle méthode de déclaration.
Le comportement à été un peu modifié afin de pouvoir utiliser des pipelines. quand bien même une déclaration de GLOBALS reste toujours fonctionnelle, celle-ci ne surchargera pas les champs initialement prévus, mais les complétera.

Pour les créateurs de plugins, pas de soucis, par contre si vous êtes habitués à utiliser un dossier squelettes, il faudra déclarer un pipeline :

// config/mes_options.php
$GLOBALS['spip_pipeline']['identite_extra_champs'] .= "|mes_champs_identite";

Puis la fonction :

// squelettes/mes_fonctions.php
function mes_champs_identite($champs){
     
    $nouveaux_champs = array(
        'facebook',
        'twitter',
        'instagram'
    );
     
    // on complète la liste
    // $champs = array_merge($champs, $nouveaux_champs);
     
    // ou on la remplace
    $champs = $nouveaux_champs;
     
    return $champs;
}

(merci tcharlss !)

Balises IDENTITE_XXX

Chaque champ disponible et déclaré par identite_extra possède sa balise préfixée de #IDENTITE_ utilisable en squelette.

#IDENTITE_RAISON_SOCIALE
#IDENTITE_CODE_APE
#IDENTITE_SIRET
#IDENTITE_CAPITAL
#IDENTITE_MONCHAMP

A noter qu’un message de debug squelette apparaîtra si votre champ n’est pas déclaré correctement.
Exemple avec la balise #IDENTITE_LOL qui n’est pas déclarée dans $GLOBALS['identite_extra'] :

Cette solution permet une mise en place rapide. Pour une utilisation plus poussée, reportez vous aux plugins dédiés : Contacts et organisations pour les carnets d’adresses, GIS pour la géolocalisation, Liens sociaux, Champs extra pour les objets, ...

Discussion

10 discussions

  • 2

    Bonjour,

    Y aurait-il la possibilité de ne donner accès au formulaire Identité-Extra qu’au seul Webmestre ?
    Ainsi les « simples » administrateurs ne pourraient pas modifier ces champs extras ;-)

    Merci,
    françois

    • On peut bien sûr surcharger ./prive/formulaires/configurer_identite_extra.html pour ajouter une condition de statut dans la BOUCLE :

      <BOUCLE_data(DATA){source table,#ENV{identite_extra}}{si #SESSION{webmestre}|=={oui}}>
      ...
      </BOUCLE_data>
    • Bonjour,

      J’ai une demande similaire (mais différente...)
      Je voudrais autoriser les admin complets (non webmestres) à modifier les champs identité extra.

      J’avais noté cette fonction :
      // autoriser admin complet identite site function autoriser_identite_configurer($faire, $type, $id, $qui, $opt) {      return $qui['statut'] == '0minirezo' AND !$qui['restreint']; }

      mais cela ne semble plus fonctionner - ou alors j’ai mal noté.

      Si quelqu’un ici sait me dire.
      Merci
      dd

    Répondre à ce message

  • Bonjour,

    J’ai suggéré une évolution pour ce plugin ici https://git.spip.net/spip-contrib-extensions/identite_extra/issues/1 afin de pouvoir utiliser des Saisies (par exemple, champ avec plusieurs lignes).

    Je vous invite à commenter le ticket.

    Répondre à ce message

  • 3

    Bonjour,
    J’ai fais les deux ajouts (appel dans mes_options.php & la fonction dans squelettes/mes_fonctions.php) mais la fameuse fonction n’est pas appelée..
    J’ai mal lu et oublié quelque-chose ?
    Le plugin est bien installé, j’ai testé avec l’ancienne méthode et les champs sont bien ajoutés à la suite des autres.
    Merci :)

    • Salut,
      Oui, ça devrait fonctionner.
      -  Penser à bien vider les caches de spip
      -  Vérifier que les chemins des fichiers sont ok :

      config/mes_options.php
      squelettes/mes_fonctions.php

      Tu devrais nous coller le contenu *ET* le chemin de tes 2 fichiers

      Cordialement.

    • Merci pour la réponse express !
      Effectivement ça venait du cache, c’est étrange sachant que j’ai define(’_NO_CACHE’, -1) ; dans ma config..
      Bonne journée et merci pour le plugin :)

    • Oui, il s’agit du cache des squelettes.
      Pour les fonctions/options/pipelines il y a des fichiers de cache générés et gérés un peu différemment :
      tmp/charger_pipelines.php
      tmp/charger_plugins_fonctions.php
      ...

    Répondre à ce message

  • 1

    Pour les personnes comme moi qui peuvent chercher des heures à cause d’une virgule manquante :

    $nouveaux_champs = array(
            'facebook'

    Après Facebook, il manque une virgule !

    Répondre à ce message

  • 1

    Petit plugin sympa, hélas il ne fait pas ce dont j’aurai besoin à savoir ajouter des champs choisit par mes soin, et notamment des images ou logo additionnel.

    Je demande au cas ou mais.. Ce serait compliqué de simplement ajouter la possibilité d’ajouter des champs avex le plugin champs extra à la partie identitée du site ?

    • En principe oui, en pratique c’est un peu différent. Champs Extras gère des champs supplémentaires sur des objets éditoriaux. hors, le site n’est pas un objet éditorial.

      Si une version 2 du plugin sort, elle sera certainement basés sur saisies et son api de déclaration.

      Pour des logos supplémentaires à voir....

    Répondre à ce message

  • 5

    Bonjour,

    Je tente de surcharger le formulaire, mais les nouveaux champs viennent s’ajouter aux champs par défaut au lieu de les remplacer...
    (Versions : SPIP : 3.1.8 - Identité extra : 1.4.0)

    Je ne rencontre pas ce même souci sur une version locale où le plugin est en 1.3.1.

    Une idée d’où ça peut venir ?

    Sandrine

    • Bonjour,

      Oui, Rastapopoulos à commit des modifs il ya 2 semaines ; il utilise un merge du tableau déclaré plutôt que de le remplacer comme c’était initialement prévu.

      Désormais il y à un pipeline de dispo. Si tu me laisses un peu de temps je peu tenter de mettre à jour la doc. Sinon il est possible de rester en 1.3.1 pour le moment.

    • Merci Pierrox !
      Je vais tranquillement patienter avant de passer en 1.4

    • Salut,

      Tu songes à mettre à jour la doc ?

    • Le pipeline est quand même plus propre et permet de faire bien plus de choses : tout merger ou tout remplacer, en supprimer une partie, changer l’ordre, etc.

      function monplugin_identite_extra_champs($champs){
      
          $nouveaux_champs = array(
              'facebook',
              'twitter',
              'instagram',
          );
      
          // On complète le liste
          $champs = array_merge($champs, $nouveaux_champs);
      
          // Mais on pourrait aussi la remplacer
          //$champs = $nouveaux_champs;
      
          return $champs;
      }
    • J’y songe, mais à la base c’était le plus minimaliste possible. On avait tranché le fait qu’on ne voulait pas donner la possibilité d’étendre les champs, mais *simplement* les surcharger. (bête et méchant)

      La possibilité d’étendre via un pipeline est super, mais la mise en œuvre est moins *accessible* pour celles et ceux qui ne pratiquent pas le php. Un simple tableau dans mes_options.php et hop ! on à exactement ce qu’on veut.

      Il faut refaire la doc car le comportement initialement prévu ET documenté a changé :p.

      Voilà, merci pour l’exemple en tout cas :)

    Répondre à ce message

  • 2

    Tellement bien ce plugin. Merci beaucoup !

    Ce qui serait top, ce serait d’avoir la possibilité d’insérer des « intertitres » pour séparer des champs. Donner l’impression d’avoir des groupes.

    Julien

    • On peut y parvenir avec un peu d’astuce, en surchargeant ./prive/formulaires/configurer_identite_extra.html.

      Voilà un exemple qui devrait faire l’affaire (syntaxe SPIP 3.1).

    • Trop bien. Merci !

    Répondre à ce message

  • 1

    Comment créer un champ personnalisé qui recevra une couleur en hexa grâce au plugin Palette ?

    Voici une petite amélioration rendue possible grâce à placido :

    Surcharger le formulaire ./prive/formulaires/configurer_identite_extra.html en modifiant ligne 11 :

    <input type='text' class='text[ (#CLE|match{couleur_}|oui)palette]' ...

    et dans le fichier ..._options.php :

    $GLOBALS['identite_extra'] = array( "couleur_titres","couleur_texte" );

    Ce qui ajoute la class palette à l’input et donc l’accès à la palette de couleur ;-)

    • Salut,

      Il est possible de faire ce genre de boucle qui peut s’avérer très pratique en utilsant le mme préfixe sur certaines clés :

      $GLOBALS['identite_extra'] = array(
          "nom_organisation", 
          "telephone", 
          "adresse", 
          "ville", 
          "code_postal", 
          "region", 
          "pays",
          "reso_facebook",
          "reso_google-plus",
          "reso_flickr", 
          "reso_tumblr"
      );

      Et pour récupérer tous les réseaux :

      <BOUCLE_data(DATA)
                  {source table,#IDENTITE}
                  {cle LIKE reso_%}
                  {valeur != ''}>
              [(#CLE|substr{5})] -> #VALEUR <br/>
      </BOUCLE_data>

      ce qui donne

      facebook -> http://lienfacebook
      google-plus -> http://pagegoogleplus
      flickr -> http://pageflickr
      tumblr -> http://pagetumblr

      {valeur != ''} C’est pour exclure les champs qui ne seraient pas remplis dans le formulaire :)

    Répondre à ce message

  • Concernant le PS : Champ Extra est vraiment extra, masi il ne permet pas malheureusement d’ajouter des champs à l’identité du site, justement ;-)

    Répondre à ce message

  • Bonjour,

    Merci beaucoup pour cet outil qui me faisait défaut ;-)

    françois

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom