Le Plugin Attributs (abandonné)

(nota : plugin de recherche et développement abandonné pour suivre d’autres voies)

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Le plugin Attributs permet de dupliquer les mots-clés afin de distinguer clairement les mots-clés sémantiques des mots-clés fonctionnels.

I. Le pourquoi de ce plugin.

De nombreux squelettes ont recours aux mots-clés pour proposer des options d’affichage : choix d’un squelette, mise en avant de certains articles ou brèves, ... Il s’agit d’un usage fonctionnel des mots-clés. Dans le même temps, les mots-clés servent également et principalement à donner du sens aux différents éléments et permettre une navigation transversale au sein d’un site (usage sémantique ou navigationel).

Lorsque l’on utilise les mots-clés pour ces deux usages, il importe de les distinguer afin de n’afficher sur le site public que les mots-clés sémantiques. Une des solutions parmi d’autres consistent à préfixer les noms des groupes de mots-clés fonctionnels par un même préfixe ( par exemple) et de filtrer les mots-clés préfixés dans le site public.

Le présent plugin repose sur un autre principe. Il s’agit de distinguer les mots-clés fonctionnels des mot-clés sémantiques en les plaçant dans une autre table. Autrement dit, le présent plugin duplique les mots clés en créant une nouvelle table spip_attributs destinée à recevoir les mots-clés fonctionnels, les mots-clés usuels de SPIP n’étant alors utilisés que pour les mots-clés sémantiques. Nous appellerons alors les mots-clés fonctionnels des attributs.

II. Installation du plugin.

Récupérez la dernière version du fichier zip dans SPIP Zone.

Ce plugin s’installe selon la procédure habituelle (voir la documentation dans spip.net et SPIP Contrib).

III. Créer un attribut.

Une fois installé, une nouvelle icône en forme de roue dentée est disponible dans le menu Édition. Cliquez sur cet icône pour accéder à la page de gestion des attributs.

Cliquez sur Créer un nouvel attribut. Par défaut, seul un administrateur général peut créer, supprimer ou modifier un attribut.

Comme pour un mot-clé, spécifiez le nom de l’attribut, un descriptif et si besoin un texte plus long. Contrairement aux mots-clés, il n’y a pas de groupes d’attributs. Il faut donc spécifier pour chaque attribut à quels objets il peut être associé. Pour le moment, il est possible de lier un attribut aux :
-  articles,
-  rubriques,
-  brèves,
-  auteurs,
-  sites,
-  et mots-clés.

De plus vous pouvez préciser si un rédacteur est autorisé ou non à associer cet attribut au type d’objets en question. Les administrateurs ont, eux, toujours le droit d’associer ou non un attribut.

Validez.

La liste des attributs affiche le nombre d’éléments liés à chaque attribut ainsi que les types d’objets auxquels il peut être lié.

Si vous essayez de supprimer un attribut actuellement lié à un ou plusieurs objets, vous devrez confirmer votre décision.

IV. Associer un attribut à un objet.

Comme pour les mots-clés, une boite intitulée ATTRIBUTS apparaitra sur la page d’édition d’un objet si des attributs peuvent lui être liés.

Il suffit alors de sélectionner l’attribut à associer et de valider. Pour retirer un attribut, il suffit de cliquer sur le lien Retirer affiché à côté de l’attribut actuellement associé à l’objet.

Pour pouvoir associer ou retirer un attribut, deux conditions sont nécessaires. D’une part, il faut être autorisé à modifier l’objet concerné. D’autre part, il faut soit être administrateur, soit que l’attribut puisse être associé par un rédacteur.

V. Utiliser les attributs dans ses squelettes.

Deux nouveaux critères sont disponibles dans les boucles ARTICLES, RUBRIQUES, BREVES, SITES, AUTEURS et MOTS :
-  id_attribut qui sélectionne les objets associés à l’attribut en question,
-  titre_attribut qui sélectionne les objets associés à un attribut dont le nom est celui passé à titre_attribut.

Ces deux critères fonctionnent comme les autres critères de SPIP. Il est donc possible d’utiliser != ou bien des expressions régulières.

Par ailleurs, si besoin est, on peut avoir recours à une boucle ATTRIBUTS associée aux balises #ID_ATTRIBUTS, #TITRE, #DESCRIPTIF, #TEXTE et #NOTES. Les balises #ARTICLES, #RUBRIQUES, #BREVES, #AUTEURS et #SYNDIC indiquent si un attribut peut être associé à l’objet en question. Elles renvoient oui ou non. De la même manière, #REDACTEURS vaudra oui si l’attribut peut être associé par un rédacteur.

Les critères usuels sont utilisables avec la boucle ATTRIBUTS, ainsi que id_article, id_rubrique, id_breve, id_syndic, id_auteur et id_mot.

VI. Empêcher la modification des attributs.

Supposons que nous réalisions un ensemble de squelettes complet, nommé SQ, distribué sous la forme d’un plugin. Ce squelette utilise des attributs. Pour faciliter son installation il est possible d’écrire un script appelé par la balise <install></install> du fichier plugin.xml et installant automatiquement dans la table spip_attributs les attributs utilisé par SQ. Afin de distinguer ces attributs d’autres attributs qui auraient été créés par l’administrateur du site, les attributs de SQ sont préfixés avec sq_.

Afin, d’éviter qu’un administrateur général du site modifie le réglage de ces attributs, il est possible d’interdire que les attributs préfixés par sq_ soit modifiables ou supprimables tant que le plugin SQ est activé.

Pour cela, il suffit de définir les deux fonctions suivantes dans le fichier mes_options.php du plugin SQ : autoriser_attribut_supprimer et autoriser_attribut_modifier. Ces deux fonctions utilisent l’API d’autorisation de SPIP.

Elles pourront être de la forme suivante :

function autoriser_attribut_supprimer($faire, $type, $id, $qui, $opt) {
  if (_q($id)) {
    $s = spip_query("SELECT titre FROM spip_attributs WHERE id_attribut="._q($id));
    $r = spip_fetch_array($s);
    if( substr($r['titre'],0,3)=='sq_' && $qui['statut'] == '0minirezo' && !$qui['restreint'])
      return true;	
  }
  return false;
}

function autoriser_attribut_modifier($faire, $type, $id, $qui, $opt) {
  if (_q($id)) {
    $s = spip_query("SELECT titre FROM spip_attributs WHERE id_attribut="._q($id));
    $r = spip_fetch_array($s);
    if( substr($r['titre'],0,3)=='sq_' && $qui['statut'] == '0minirezo' && !$qui['restreint'])
      return true;	
  }
  //Si $id=0, seul un admin général peut créer un attribut
  else if $qui['statut'] == '0minirezo' && !$qui['restreint']
    return true
  return false;
}

Bien sur, ce code est à adapter au cas par cas.

VII. Évolutions possibles.

-  Extension aux groupes de mots-clés en cours...
-  Élargissement aux évènements (plugin agenda).

Discussion

3 discussions

  • Bonjour,

    Je voulais parlé de l’idée d’ajouter un champs ’attribut’ sur les affectations de mot clé.
    Ainsi on peut ajouter un mot clé affecté d’une valeur
    ex :
    -  menu_lat 3 pour ordonner les menus
    -  display_ad ’code JS de l’appel à la pub’
    ect....

    L’idée est donc d’avoir à l’aide d’un plug-in des attributs sur l’affectation d’un mot clé à un article, breve, rubrique,....

    Idée à creuser, je suis pas surper douée coté php mais je vais regarder comment est codé le plugin... je pense pas arriver à en tirer quelque chose mais bon...

    Répondre à ce message

  • 1

    Est-ce que le « projet » de permettre d’affecter un attribut à un mot-clé a abouti sur un plugin ?

    Car je ne l’ai pas vu dans SPIP 2.0
    Or c’est extrêmement utile...

    • Bonjour,
      un plugin de développement avait été réalisé, uniquement à des fins de tests. Il tourne en 1.9.1 et est disponible en SVN. Mais aucune maintenance n’est maintenue. Cette solution n’étant pas la meilleure.

      L’API de SPIP évolue de manière importante et dans les mois à venir une importante refonte du système de mots clés est prévue.

      Par ailleurs, il est possible de ne pas utiliser des mots clés pour spécifier des éléments de mise en forme, voir les propositions de Cédric : L’après SPIP 2.0, ou encore la manière de fonctionner du squelette Le plugin Magusine, etc.

      Bref, des possibilités diverses sont possibles sans passer par les mots clés, que ce soient l’utilisation des TableauTrad ou bien celle du plugin CFG.

      Certes, aucune approche n’est encore devenue un standard et ce n’est pas forcément facile de s’y retrouver. Mais les choses vont dans le bon sens.

      Cordialement

    Répondre à ce message

  • 4

    Comme dit sur irc ce soir, il sera sans doute plus simple et direct d’ajouter un champ ’attribut’ (ou autre nom) aux groupes de mots-clés, et de différencier dans les boucles, avec un critère {attribut} par exemple. A suivre donc :)

    • valery

      Il reste intéressant de dissocier les deux fonctions dans l’espace privé à l’attention des rédacteurs / administrateurs mal-comprenant.

    • Joseph Larmarange

      Cela va de soit. Une des possibilités peut consister à utiliser deux types d’icônes dans l’interface privée pour distinguer les mots clés sémantiques des mots clés techniques.

      Quoiqu’il en soit, une réflexion générale a été lancé sur IRC et sur spip-dev sur les évolutions possibles des mots-clés. C’est pour cette raison que le plugin attribut ne sera plus maintenu, l’objectif étant de pouvoir réaliser la même chose, et plus encore, avec les mots clés.

    • ça se confirme sous quelle forme ?
      ou bien la solution « plugin attribut » reste la bonne ?

    • Joseph LARMARANGE

      Une réflexion plus globale sur les mots clés a été engagée sur le chat IRC, Spip-Zone et la liste Spip-Dev. La discussion est pour le moment en cours avant modification éventuelle du core de SPIP.

    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