Champ Join n2n

Ce champ permet de lier des contenus selon une logique n-n. Il créé automatiquement des contenus de liaison entre deux types de contenus. 

Il s'agit de permettre des jointures nn entre deux types de contenus A et B. Une table de liaison (un type de contenu) contient des couples d'ID des contenus de type A et B en relation.

Objectif

Il s'agit de permettre des jointures nn entre deux types de contenus A et B. Une table de liaison (un type de contenu) contient des couples d'ID des contenus de type A et B en relation. Nous l'utilisons notamment sur le site http://www.patrimoine-naturel-picardie.fr/milieux/les-grandes-cultures pour lier des milieux naturels et des espèces animales.

Pré requis

On a besoin de:

  • du plugin de champ JOIN N2N développé par Pulsar
  • d'un type de contenu de liaison qui contient deux champs:

liaison_typeA_id liaison_typeB_id

Exemple concret

Dans notre exemple on relie des espèces animales avec des communes.

Création du type de contenu de liaison

Join n2n table liaison

Dans cet exemple les deux champs d'ID sont des select dynamique sur chaque type de contenu, ce qui permet d'afficher (par exemple) le titre du contenu en stockant son ID.

Ajout du champ JOIN N2N

 

Pour chacun des types de contenu on ajoute un champ unique (c'est le même pour les deux types de contenu) 

Join n2n champ

Avec le réglage suivant :

Join n2n champ reglages

Il est fortement recommandé de préciser la catégorie où se rangent les contenus de liaison car à chaque nouvelle liaison un nouveau contenu de liaison va être créé.

Le champ de jointure nn n'a pas de stockage.

Utilisation du champ de liaison

Depuis le contenu A (espèces) ou B (commune) on peut alors créér dynamiquement autant de liaisons.

Dans une commune on a la liste des espèces associées: Join n2n commune

Et dynamiquement on retrouve dans les espèces les communes associées: 

Join n2n espece

Le fait de cocher ou de décocher ces communes ou ces espèces, crée ou supprime des contenus de liaison dans la bonne catégorie:
Join n2n contenus liaison


Recherches avec les liaisons n2n

Dans certains cas on a besoin de de faire des recherches sur un type A en précisant des valeurs d'un type B quand les A et B sont reliées entre elles par une liaison n2n.
On suppose qu'on a déjà mis en place la relation n-n entre les types de contenu A et les types de contenu B selon ce qui est écrit plus haut.

Dans notre exemple :

Type de contenu A = la commune

Type de contenu B = les espèces animales

La table #__cck_store_form_liaisoncommuneespece contient donc les champs:

dr_liaison_comesp_especeid

dr_liaison_comesp_communeid

 

La recherche veut trouver les espèces animales présentes sur une commune.

Il s'agit d'une recherche sur le type de contenu 'espece' tout à fait classique mais puisque le champ de liaison (plugin joinn2n) n'a pas de stockage, il faut ajouter une jointure entre les tables courantes et la table de liaison.

Recherche jointure n2n

Ici on note deux champs importants:

DR_liaison_comesp_communeID : le champ qui identifie, dans la table de liaison n2n, l'ID de la commune. Il s'agit dans cet exemple d'un Select dynamique sur les ID des communes.

Jointure_content_espece_liaison : la jointure (LEFT JOIN) entre la table de liaison et les tables courantes (ici la table #__content):

#__cck_store_form_liaisoncommuneespece || dr_liaison_comesp_especeid || id || #__content De cette façon quand on entre le nom de la commune (en fait l'ID de la commune en valeur:dr_liaison_comesp_communeid) on ressort les contenus (les epèces) correspondant de #__content dont l'ID se retrouve dans la table de liaison (dr_liaison_comesp_especeid)

31-08-2015 13:08:23
30-12-2019
1387

Commentaire sur ce téléchargement

Liste des commentaires

merci!