SPIP-Contrib

SPIP-Contrib

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

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

Accueil > Améliorations de l’espace privé > Personnaliser les champs privés > Personnaliser les champs de l’espace privé

Personnaliser les champs de l’espace privé

7 février 2007 – par Sébastien Zamith – 70 commentaires

17 votes

Comment choisir le type de champ et le texte des champs dans l’espace privé en fonction des rubriques.

Le besoin

J’ai récemment mis en ligne un site sous SPIP 1.9.1 avec les contraintes suivantes :
-  nombreux rédacteurs à priori
-  plusieurs types d’articles traités différemment dans les squelettes par des choix de mots clés.

Il est apparu très vite que les champs par défaut de l’espace privé (Sur-titre, Titre, Chapeau, etc.) ne seraient pas assez explicites, surtout lorsque l’on commence à detourner les champs Surtitre et Titre pour entrer Prénom et Nom par exemple.

D’autre part, suivant les rubriques les types et le nombre des données à entrer sont différents : pour une rubrique annuaire, on désirera par exemple créer des articles avec des champs Nom, Prénom, Tel, email, etc. Par contre pour une autre rubrique on ne désirera peut être pour les articles que deux champs seulement, et pour d’autres les champs classiques de SPIP.

Dans mon exemple particulier je désirais en particulier avoir une rubrique Annuaire, dans laquelle chaque personne est entrée sous la forme d’un article, une rubrique Publications, une rubrique Séminaires, etc. Lorsque un utilisateur lambda arrive sur l’interface privée du site, s’il désire entrer une nouvelle Publication par exemple, il faut qu’il puisse entrer sans avoir à se poser de questions les différents champs clairement identifiés.

La seule chose que j’ai pu trouver sur le sujet est présenté dans cet article Personnaliser son espace privé en fonction de la rubrique [1]. Elle présente cependant quelques désavantages, notamment sur l’utilisation d’un seul et même fichier de langue pour espace privé et public (on ne peut pas avoir la double fonctionnalité)

Une solution

La solution que j’ai utilisé pour répondre à ces différents impératifs est largement basée sur l’article suscité :
-  Détournement des fichiers langues
-  Un peu de bidouille...

Avec deux améliorations majeures :
-  On garde la possibilité d’utiliser local_fr.php pour la définition des balises multilingues de l’espace public
-  On peut de plus choisir quels champs afficher

Dans le dossier squelettes je crée un premier fichier local_fr.php avec mes définitions habituelles des balises cf multilinguisme et un deuxième, local_prive_fr.php dans lequel je vais définir mes champs.

La première chose à faire est de surcharger le fichier de langue en faisant trouver à spip le fichier local_prive_fr.php.
Pour cela il faut ajouter à la fin de local_fr.php les lignes suivantes :

Ensuite dans le fichier local_prive_fr.php il faut redéfinir les titres des champs en fonction des rubriques (ou des articles, des brèves, etc.).
Ce sera par exemple :

Evolutions possibles

Tout cela est bien sur personnalisable pour une rubrique donnée plutôt qu’un secteur, pour les brèves, etc.

Je suis sûr que tout ça devrait pouvoir se mettre sous forme de plugin, mais je sèche un peu. J’ai déjà eu du mal à aller récupérer les différentes infos dans les fichiers de spip ... Pour le texte des champs, il faut fouiller dans /ecrire/lang/ecrire_fr.php et /ecrire/lang/prive_fr.php. J’ai découvert quels champs afficher dans /ecrire/inc_articles_edit.php

À faire :
-  Récupérer l’ensemble des variables qui permettent l’affichage dans l’espace privé.
-  Faire un plugin ?

Pour Spip 2.0

La philosophie de la contrib reste essentiellement la même.
Il y a juste quelques petites modifications à prendre en compte :

-  Tout d’abord, il faut mettre les fichiers local_fr.php et local_prive_fr.php dans le dossier squelettes/lang (à créer s’il n’existe pas). En effet la fonction chercher_module_lang ne recherche que dans les dossiers nommés lang/.

-  Ensuite pour récupérer les variables $id_rubrique et $id_article, il faut passer par un $_GET. Le début du fichier local_prive_fr.php devient :

Noter qu’il n’y plus le include_spip(’base/db_mysql’) ;.

On peut ensuite faire les tests sur $id_rub et $id_art pour afficher les champs souhaités et/ou changer leur intitulé.

P.-S.

Cette contrib marche toujours aussi bien en SPIP 1.9.2g.
Ca marche aussi pour SPIP 2.0 ! (Voir ci-dessus)

Notes

[1Nota SPIP-Contrib : pour la documentation officielle concernant la définition de fichiers de langue personnels (pour redéfinir les noms des champs), voir les articles concernant le multilinguisme et particulièrement Internationaliser les squelettes > Méthode des fichiers de langue

Dernière modification de cette page le 9 janvier 2009

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 27 juin à 16:03, par oil En réponse à : Personnaliser les champs de l’espace privé

    Je n’ai pas réussi à la faire marcher avec SPIP3 :/

    Répondre à ce message

  • Le 24 janvier 2011 à 10:10, par Pi r En réponse à : Personnaliser les champs de l’espace privé

    salute, dans le cas de l’édition dans l’espace public, est il possible restreindre l’affichage des champs ? La surcharge de l’intitulé des champs fonctionne mais pas la restriction ?

    Répondre à ce message

  • Le 14 juillet 2009 à 16:10, par robomatix En réponse à : Problème avec php5

    Avec un spip 1.9.2d sous php5 j’obtenais deux fois le message d’erreur :
    Warning : array_merge() [function.array-merge] : Argument #1 is not an array in /homez.193/multisce/www/ecrire/inc/traduire.php on line 69...
    En fait, la fonction array_merge ne fonctionne plus de la même façon sous php4 que php5...

    Pour y remédier, j’ai modifier les lignes 67 et 68 du fichier ecrire/inc/traduire :

                            (array)$GLOBALS[$idx_lang_normal],
                            (array)$GLOBALS[$idx_lang_surcharge]

    Est ce que quelqu’un a une idée pour ne pas modifier le noyau et faire une modif qui marche sur les fichiers contenu dans squelettes/lang ?

    • Le 24 novembre 2010 à 13:56, par casp En réponse à : Personnaliser les champs de l’espace privé

      j’ai le même problème sous 2.1 ... et si je modifis comme tu le fais les ligne 66 67 j’ai carrément un plantage de l’admin :/

      Quelqun aurait une solution ?

    • Le 24 novembre 2010 à 14:10, par casp En réponse à : Personnaliser les champs de l’espace privé

      Ah c’était les ligne 74 75 en fait je suis bête :)

    • Le 24 novembre 2010 à 14:23, par casp En réponse à : Personnaliser les champs de l’espace privé

      En revanche si je n’ai plus d’erreur en remplaçant ces lignes... je me retrouve sans gestion des langues :/
      En dessou de l’icone edition j’ai par exemple ’lintitulé : « icone édition » au lieue de la traduction « édition ».
      Si quelqun comprenant le PHP passe par là ...

    • Le 28 décembre 2010 à 20:49, par dut En réponse à : Personnaliser les champs de l’espace privé

      Je relance la question pour la version 2.1 le choix des champ à afficher marche bien, mais pour spécifier l’intitulé de chacun, cela ne marche pas.

    Répondre à ce message

  • Le 3 novembre 2010 à 17:40, par Roberto En réponse à : Personnaliser les champs de l’espace privé

    Je suis confronté à une problématique proche, moins complexe, mais je n’arrive néanmoins pas à trouver de solution...
    Je travaille sur un Spip 2-1-2. J’utilise le plug-in champs extras pour ma rubrique 16.

    Je souhaiterais, pour cette même rubrique 16, masquer les champs standards qui ne me sont pas utiles (mais qui me servent dans les autres rubriques). Par exemple, masquer le surtitre et le sous-titre. Quelque chose qui s’apparenterait à :

    if ($id_rub=='16') {
    // On choisit quels champs afficher:
    $GLOBALS['meta']["articles_surtitre"] = "non";
    $GLOBALS['meta']["articles_titre"] = "oui";
    $GLOBALS['meta']["articles_soustitre"] = "non";
    $GLOBALS['meta']["articles_descriptif"] = "non";
    $GLOBALS['meta']["articles_chapeau"] = "non";
    $GLOBALS['meta']["articles_ps"] = "non";

    Mais je ne sais pas où placer ce code et faire en sorte que ça marche. Peut-être qu’il manque autre chose ?
    Quelqu’un peut m’aider ?

    • Le 3 novembre 2010 à 18:19, par Roberto En réponse à : Personnaliser les champs de l’espace privé

      Alors, je me réponds à moi-même...
      Ça pourra peut-être servir à d’autres.

      J’ai trouvé la réponse dans le commentaire de Joachim109 du 6 mars 2009 à 17:55.

      J’ai donc :
      -  créé un fichier local_fr.php qui contient ce code :

      <?php
      // This is a SPIP language file  --  Ceci est un fichier langue de SPIP

      // ESPACE PUBLIC

      if ($f = chercher_module_lang('local_prive_fr'))
      surcharger_langue($f);

      ?>

      Puis, j’ai créé un fichier local_prive_fr.php (comme indiqué dans cette contrib, donc) qui contient le code :

      <?php

      $id_art = $_GET['id_article'];
      $id_rub = $_GET['id_rubrique'];

      if (($id_rub == '') and ($id_art != '')) {
      $row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_articles WHERE id_article=$id_art"));
      $id_rub  = $row['id_rubrique'];
      }

      // On peut maintenant personnaliser l'affichage
      // de l'article à modifier
      // en fonction du secteur auquel il appartient:


      // Espace privé: Annuaire

      if ($id_rub=='16') {
      // On choisit quels champs afficher:
      $GLOBALS['meta']["articles_surtitre"] = "non";
      $GLOBALS['meta']["articles_titre"] = "oui";
      $GLOBALS['meta']["articles_soustitre"] = "non";
      $GLOBALS['meta']["articles_descriptif"] = "non";
      $GLOBALS['meta']["articles_chapeau"] = "non";
      $GLOBALS['meta']["articles_ps"] = "non";
      $GLOBALS['meta']["articles_redac"] = "non";
      $GLOBALS['meta']["articles_urlref"] = "non";
      }
      ?>

      Cela fonctionne comme je voulais, et j’en suis ravi !

    Répondre à ce message

  • Le 21 octobre 2010 à 22:22, par indie En réponse à : Personnaliser les champs de l’espace privé

    Et ça marche toujours sur un spip 2.1.2 ... qu’on se le dise (et éventuellement, qu’on modifie les compatibilités mentionnés sur cet article)

    Répondre à ce message

  • Le 4 mai 2010 à 20:25, par chris En réponse à : Personnaliser les champs de l’espace privé

    Je crois qu’il ne manque que cette fonction intégré a spip ou en plugin pour le rendre vraiment parfait. Je suis persuadé qu’un plug de la sorte serait une véritable avancée pour spip. Hélas je n’ai aucun talent de développeur.

    • Le 4 mai 2010 à 21:47, par Cerdic En réponse à : Personnaliser les champs de l’espace privé

      Champs Extras 2 répondre à ton besoin surement.

    • Le 4 mai 2010 à 21:58, par chris En réponse à : Personnaliser les champs de l’espace privé

      Champs Extras 2, je pensais qu’il permettait uniquement de rajouter des champs personnalisés mais pas de modifier (par rubriques ou non) les intitulés des champs de saisies « titres » « surtitres » « soustitres » « chapeau » ’descriptif" etc...
      Je vais vérifier quand même ...

      Merci pour ta réponse

    • Le 6 octobre 2010 à 18:08, par Casp En réponse à : Personnaliser les champs de l’espace privé

      Il ne me semble pas que champ extra 2 permette de modifier le descriptif des champs de base.
      C’est clair ce serait un gros plus. Mais bon on peux déjà faire pas mal avec tout ce qu’on à :)...
      Merci à tous ceux qui contribuent !.

    Répondre à ce message

  • Le 13 mai 2009 à 23:52, par Arnaud En réponse à : Personnaliser les champs de l’espace privé

    Merci pour ces infos fort utiles.
    En suivant cette méthode :
    ’icone_ecrire_article’ => ’Créer une nouvelle publi’,
    j’essaye de personnaliser le bouton « créer une sous-rubrique »
    ’icone_ecrire_sous_rubriques’ => ’Ajouter un nouveau label’,
    mais sans succès…merci d’avance pour un éclaircissement à ce sujet.
    De la même manière comment puis-je afficher (ou plutôt restreindre l’affichage) des boutons « écrire une nouvelle brève » ou « référencer un site » dans une rubrique où je sais que ça ne sera pas utile.
    Sous Spip 2…

    merci d’avance et merci beaucoup pour cette contrib.

    Répondre à ce message

  • Le 27 avril 2009 à 14:47, par Cécile En réponse à : Accéder à tout les champs de l’espace privé en tant que rédacteur

    Bonjour

    Après avoir suivi les explications, tout marche très bien si je suis connectée en tant qu’administrateur. Par contre, si je suis connectée en tant que rédacteur, certains champs n’apparaissent pas (surtitre, PS ...), est ce normal et il y a t-il un moyen de remédier à cela ? (j’ai essayé le plugin autorité mais je n’y arrives pas non plus)
    Merci pour votre aide

    Répondre à ce message

  • Le 6 mars 2009 à 17:55, par joachim109 En réponse à : Personnaliser les champs de l’espace privé

    Sous SPIP 2 Cela marche très bien pour la création de nouveaux articles. Merci.

    Par contre, lorsqu’on clique sur « modifier cet article », la configuration et les noms de champs reviennent comme avant...
    Une idée de comment changer ca ?

    Merci

    EDIT : J’ai trouvé la réponse :
    -  j’utilisais une personalisation par rubrique
    et non par secteur comme dans l’exemple.
    -  il fallait donc changer un peu le code pour obtenir l’id_rubrique correspondant à l’article :

    if (($id_rub == '') and ($id_art != '')) {
    $row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_articles WHERE id_article=$id_art"));
    $id_rub  = $row['id_rubrique'];
    }

    Répondre à ce message

  • Le 6 mars 2009 à 17:13, par joachim109 En réponse à : Personnaliser les champs de l’espace privé

    Peut -on utiliser cette contrib pour afficher ou non les champs extra ?
    voir meme choisir quels champs extra afficher ?

    j’ai essayer tout betement

    $GLOBALS['meta']["articles_extra"] = "non";

    mais bien sur ca ne marche pas...

    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, (...)

  • Import ICS 2 (agenda distant)

    2 août – 35 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 (...)

  • Newsletters

    16 janvier 2013 – 374 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)

  • CKeditor 3.0

    4 octobre 2009 – 1217 commentaires

    CKeditor est l’évolution de l’éditeur WYSIWYG : FCKeditor, avec ce plugin vous pourrez utiliser cet éditeur à la place de l’éditeur de spip tout en laissant le choix à vos auteurs de l’éditeur qu’ils préfèrent utiliser. Attention : cet éditeur WYSIWYG (...)

  • GIS 4

    11 août 2012 – 1284 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 (...)

Ça spipe par là