Objet du plugin
Ce plugin est un outil à destination des intégrateur⋅ices : il permet d’attribuer des identifiants textes, uniques ou non, à tous les types de contenus.
Cela permet de cibler préciséments ces contenus dans vos boucles ou requêtes SQL, sans avoir recours à des méthodes moins fiables ou plus compliquées : n° de clé primaire, champs « détournés », mots-clés, etc.
Il s’agit tout simplement d’un champ identifiant
ajouté sur les tables concernées, complété par des vérifications de format et d’unicité.
Fonctionnement
Format
Un identifiant ne comporte que caractères alphanumériques ou le signe « _ » : pas de majuscule, ni de caractère spécial ou accentué, ni d’espace.
Ex. : Mentions légales
→ mentions_legales
.
Unicité
Les identifiants peuvent être uniques ou réutilisables, le fonctionnement peut être changé dans la configuration du plugin.
Lorsque le mode unique est activé, les identifiants ne sont alors utilisables qu’une seule fois pour chaque type d’objet.
Autres plugins
D’autres plugins proposent des objets ayant nativement un champ identifiant
, comme les formulaires du plugin Formidable ou les Sélections éditoriales par exemple. On peut utiliser les plugins de concert, leur fonctionnement n’est pas perturbé.
Utilisation dans les squelettes
Critère {identifiant}
Un simple critère qui correspond au nom de la colonne, et s’utilise classiquement :
<BOUCLE_x(ARTICLES) {identifiant = truc}>
<BOUCLE_y(RUBRIQUES) {identifiant?}>
<BOUCLE_z(PATATES) {identifiant = #GET{mon_param}}>
etc.
Balise #IDENTIFIANT
La balise #IDENTIFIANT
peut s’utiliser de 2 façons :
- Sans paramètre si l’on est dans une boucle :
#IDENTIFIANTS
- 2 paramètres
objet
etid_objet
:#IDENTIFIANTS{article, 10}
Utilisation dans l’espace privé
Seuls les webmestres ont la possiblité de voir et modifier les identifiants. C’est une information qui n’a à priori n’a aucun intérêt pour les rédacteur⋅ices ni même les administrateur⋅ices.
L’autorisation peut être surchargée au besoin.
Configuration
On peut choisir quels types de contenus peuvent se voir attribuer des identifiants. Les tables qui possèdent déjà un champ identifiant
ne sont pas listées, et sont indiquées pour référence dans le descriptif de la saisie.
La config permet également de choisir si les identifiants peuvent être réutilisables ou non : activer l’option désactive la vérification de l’unicité lors de l’édition.
Édition
Lors de l’édition des contenus, le champ identifiant est ajouté sous le titre. À défaut de titre, il sera présent au niveau des champs extras, en bas du formulaire.
Aperçu
En mode aperçu, les identifiants sont visibles sous le numéro du contenu, dans la boîte d’infos sur le côté.
Page de contrôle
Une page de contrôle vous permet de voir tous les identifiants existants, avec des filtres par type de contenu.
Technique
À partir de la version 2, les identifiants sont stockés directement dans les tables des objets activés : une colonne identifiant
est ajoutée automatiquement lorsqu’on choisit des objets dans la configuration du plugin.
Celle-ci est supprimée lors de la désinstallation ou lorsqu’on déselectionne les contenus dans la config.
Les tables possédant nativement une colonne identifiant
ne sont pas concernées : pas de risque de perte de données pour celles-ci (formulaires formidable, sélections éditoriales, etc).
Avant la version 2, les identifiants étaient stockés dans une table auxiliaire spip_identifiants
.
Discussions par date d’activité
5 discussions
Bonjour,
Suite à la mise à jour de SPIP 3.3.0-dev :
ne renvoi plus le titre du groupe de mots, alors qu’il n’y avait pas de souci auparavant.
Dans la table IDENTIFIANTS, l’identifiant toto est bien enregistré avec comme objet groupe_mot. Précédemment, il me semble qu’il y avait 2 enregistrements pour le même identifiant : groupe_mot et groupe_mots.
Hello,
Ça produit quelle requête sql ?
Et ça marche plus uniquement depuis le passage en 3.3 ?
Si c’est une histoire de jointure foireuse la v2 du plugin règlera sans doute le problème car ça n’utilise plus de table auxiliaire. Je devais finir les tests avant de releaser... Mais ça traîne :)
Ah, ça je vois pas trop comment c’est possible. Le doublon a été supprimé à la main ?
Tout fonctionnait déjà en 3.3 : la version date d’il y a 2 mois environ.
La requête : http://spip.pastebin.fr/88034
Je suppose que le problème vient de cette partie de la requête, où « groupe_mot » est devenu « groupe » tout court :
Bon pour déboguer il faudrait que je puisse reproduire, s’il n’y a pas de choses confidentielles est-ce que tu pourrais transmettre un dump de ta table spip_identifiants ? (au format csv ou autre)
Ps : avec le mode debug en cliquant sur le lien « résultat » d’une boucle ça te donne la requête sql telle quelle, bien plus lisible :)
Est-ce que cela peut t’aider :
... et pour la requête :
Je constate que sur une version « plus ancienne » de SPIP3.3-dev, toujours avec Identifiants 1.1.16, la requête est la suivante :
J’ai fait quelques tests et j’ai une erreur similaire avec la dist, hors plugins identifiants.
Comme tu dis que ça fonctionnait il y a quelque temps, ça voudrait dire que quelque chose a changé avec les jointures Spip, donc ticket : https://core.spip.net/issues/4701
Tout ça pousserait à sortir la v2 du plugin dis donc :)
La version est prête mais il reste à bien la tester pour s’assurer qu’il n’y a pas de régression.
Si tu as l’âme d’un aventurier tu peux l’essayer de suite, c’est la branche « master » sur le git (en prenant soin de faire une backup de la bdd avant au cas-où).
C’est corrigé dans le core : https://git.spip.net/spip/spip/commit/f8c6aa9ac2dc43182faf0a2bcd38b6164c65c471
Merci pour le ticket @tcharlss, et merci à @cedric pour le correctif !
Bien sûr, je vais tester ta V2.
Bugs :
- lang > identifiants_fr.php
- ligne 44 > êtes-vous (avec un tiret)
Remarque :
- on peut configurer Groupes de mots-clés, Mots-clés et Sites référencés même si on n’a pas choisi de les utiliser dans Contenu du site
Tests :
Identifiants 1.1.16 :
SPIP3.2.9 :
- obligation de mettre à jour la ligne comme cedric https://git.spip.net/spip/spip/commit/f8c6aa9ac2dc43182faf0a2bcd38b6164c65c471 pour que Groupes-mots soit bien retrouvé
SPIP3.3-DEV avec correctif de cedric :
- tout fonctionne bien
Identifiants 2.0.2 -> activation et donc mise à jour de la 1.1.16 déjà installée :
SPIP3.2.9 :
- la colonne identifiant est bien ajoutée aux objets
- la migration des identifiants de la table vers les colonnes est OK
- la table identifiant est bien détruite
- obligation de mettre à jour la ligne comme cedric https://git.spip.net/spip/spip/commit/f8c6aa9ac2dc43182faf0a2bcd38b6164c65c471 pour que Groupes-mots soit bien retrouvé
SPIP3.3-DEV avec correctif de cedric :
- la colonne identifiant est bien ajoutée aux objets
- la migration des identifiants de la table vers les colonnes est OK
- la table identifiant est bien détruite
- tout fonctionne bien ;-)
Bonjour tout le monde,
Petit retour @tcharlss : depuis presque un an, tout fonctionne très bien ;-)
françois
Répondre à ce message
Salut,
Pour la balise #IDENTIFIANT je tenterai bien un truc du genre pour éviter de passer par une fonction de calcul.
J’ai supprimé une notice mais j’ai pas osé commit cette modif :)
https://zone.spip.net/trac/spip-zone/changeset/111925/spip-zone
Je ne suis pas certain que l’exécution de la fonction objet_identifiant soit réellement esquivée. des avis ?
Salut pierre,
Oui bien vu, ça pourrait éviter une requête sql inutile.
À tester, et si ça fonctionne, go go go comme dirait l’autre !
Répondre à ce message
Je découvre : excellent, merci tcharlss !
Répondre à ce message
Le concept est sympa par contre j’ai rencontré un soucis : lorsque l’on supprime une rubrique qui a un identifiant, celui-ci n’est pas supprimé de la table spip_identifiants et ne peut donc être réattribué.
Merci d’avoir signalé cette grosse omission !
Je regarde ça.
Ça devrait être réglé dans la vesion 1.1.9, merci du signalement.
Répondre à ce message
Bravo ! Bravissimo ! +++++ !
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 : |