Comprendre le stockage des données avec SEBLOD

18 vues
19 septembre 2014
Cyril
seblodbyoctopoosinline

 

Bonjour

Parmi les nombreuses questions qu'on nous pose en formation sur le CCK Seblod il y en a une qui revient toujours et qui concerne le stockage en base de données.

En effet une des grandes forces de Seblod est de ne pas se contenter de proposer des "super" articles avec des champs personnalisés, ni même de faire des listes et filtres de recherche, ce qui est une fonction déjà tout à fait exceptionnelle mais il s'agit de maîtriser et exploiter la façon dont chaque champ est stocké en base de données.

Cette maîtrise permet de réaliser par la suite des moteurs de recherche et des affichages dynamiques sur des contenus liés jusqu'alors impossibles.

Cela permet aussi d'utiliser Seblod comme une véritable boite à outils de développement rapide en étendant des composants déjà réalisés. Ainsi il devient possible de faire des moteurs de recherche ou des listes dynamiques sur des contenus d'un blog ou d'un forum ou n'importe quel autre composant à partir du moment où on sait créer des champs seblod qui vont "mapper" des champs des composants installés.

Le principe de base absolument essentiel est qu'un type de contenu SEBLOD est un "super" article qui utilise la table #__content comme tout article (on pourra dans un autre billet parler des "super" utilisateurs qui étendent la table #__user) et éventuellement d'autres tables pour stocker les champs supplémentaires.

La liaison devient transparente à partir du moment où on n'oublie pas de:

  • mettre le plugin systeme SEBLOD en premier
  • mettre le plugin content SEBLOD en premier

A partir de cet instant Seblod prend le pas sur Joomla! et remplace le composant com_content par com_cck en mimant le comportement de Joomla!

Plus exactement Seblod a découpé tout Joomla en petites pièces de puzzle qui sont les champs! Là où l'élement minimal de Joomla était un article monolithique, Seblod rend Joomla plus élémentaire en permettant de travailler au niveau des champs.

Ainsi un article Joomla! devient un type de contenu Seblod mais au final c'est la même chose car ce contenu seblod utilise les mêmes champs dans la base de données.

La différence importante est que Seblod va utiliser le champ introtext de la table #__content d'un article pour stocker les infos qui lui permettent de faire la jointure avec les tables additionnelles des champs ajoutés. C'est précisément parce que les plugins systeme et contenu SEBLOD sont activés et placés en premier que Seblod peut faire le tri, masquer les infos de liaisons ajoutées dans l'introtext à l'utlisateur et lui présenter un affichage avec les champs standards et les champs additionnels.

 Reste à comprendre où sont stockés ces champs additionnels. Il y a en fait 3 scénarios qui dépendent de l'état du "cadenas seblod". Il s'agit d'une simple icône sur les formulaires de création des types de contenu dont l'état (fermé ou ouvert) détermine le stockage des champs qu'on crée ensuite.

cadenas fermé

 

Par défaut le cadenas est fermé et les champs standards joomla et leurs alias sont stockés dans #__content. Les champs additionnels sont rangés dans la table#__cck_store_form_


Dans ce cas les champs additionnels ne sont visibles dans la colonne de droite seblod (édition d'un type de contenu ou d'une liste) que pour le type de contenu associé. En fait cette colonne de droite affiche :

  • tous les champs qui sont soit des champs standards joomla (ou leurs alias)
  • tous les champs spécifiques au type de contenu courant
  • tous les champs en cadenas ouvert

colone droite

Si on veut partager des champs entre différents types de contenu on peut donc:

  • soit ouvrir le cadenas avant la création de ce champ
  • s'assurer que le nouveau champ, même en cadenas fermé, soit stocké dans un champ de la table #__content de Joomla

Si on veut partager un champ entre plusieurs types de contenus on doit.... dévérouiller le cadenas!

Attention: par défaut un champ créé en cadenas ouvert est stocké en introtext (personnalisé/ article / introtext) ce qui n'est pas idéal quand on veut faire un update du champ ou une recherche (plus longue). Dans ce cas on aura soin de mettre le stockage de ce champs en standard / article. Il sera alors stocké dans la table #__cck_store_item_content

 

 

cadenas ferme ou ouvert




Si maintenant on veut tout de même stocker un champ dans l'introtext il faut préciser le stockage personnalisé / article / introtext[introtext] dans la section inférieur de l'éditeur du champ en question:

stockage introtext

 


Il y a beaucoup d'autres subtilités à comprendre pour aller plus loin mais ces quelques précisions sont souvent le point de départ pour une utilisation vraiment efficace de ce CCK qui permet enfin de libérer la puissance de Joomla!





 

Super BreadCrumb for Joomla 1.5 1.6 & 1.7
Pulsar présente le CMS Joomla! au club STARINUX
Pulsar sponsor du Joomladay
Joomla! fête ses 10 ans!
Pulsar présente le projet pour la Sorbonne au JoomlaDay!
Pourquoi nous avons ajouté WordPress à notre offre
Joomla et les CCK
Pulsar primé pour le site de la Sorbonne
Sites multi langues mobiles avec Joomla et Seblod
Gestion Electronique de Documents sur mesure
3 nouvelles extensions Joomla! de Pulsar dans la JED
Personnalisation du backoffice de Joomla!
Ajouter Cufon à votre site Joomla!:
l'AFUJ exposant au salon Open Source Summit 2015
Correctif de Pulsar dans le routeur de Joomla
Override joomla du template 'category' lié à un menu
Joomla! meilleur CMS PHP Open Source
Pulsar, sponsor OR du JoomlaDay 2017
SOBI Pro: le menu principal ne s'affiche pas
Pulsar sponsor OR du JoomlaBusiness 2015
Import shipping pour hikashop
Critère de correspondance pour la recherche SEBLOD
JCEmediabox et css js compress
Elections 2016 ... le CMS Joomla! encore
Fenêtre coulissante avec Joomla et Seblod
Workflow et formulaires faciles avec Joomla! et Seblod 3/4
Ajouter une icône d'édition dans une liste SEBLOD
Job board intégré à votre site Joomla!
Pulsar gagne l'appel d'offre de la Sorbonne
Comparaison des CCKs pour Joomla!
Une agence web Joomla! au Drupagora
Developpements pour la Bibliotheque Mazarine
E-commerce avec Seblod
L'agence Pulsar sponsorise le JoomlaDay 2015
Comprendre les droits et niveaux d'accès de Joomla!
Astuces PHP lazy load sous joomla seblod warp
Advanced module manager et page d'accueil
Entrées grisées avec la mention [extrait] dans DOCMAN
Les solutions multi sites avec Joomla!
CMS Day: Joomla pour les projets du secteur public
JoomlaDay 2015: Pulsar y était!
Un nouveau routeur pour Joomla!
Chargement Joomla avec Mootools de Google
Workflows généralisés avec Joomla! et Seblod (partie 4)
Transformer un article en contenu SEBLOD
GED Open Source simple pour les PME
Multisites, multilangues et multidevices pour la SORBONNE
Pulsar, le JoomlaDay et Israël
Joomla meilleur cms open source 2011
Joomla! présent au salon AGORA CMS 2016
Pulsar et Joomla pour les sites évolués au JoomlaDay 2014
Workflow Joomla! évolué avec Seblod 2/4
Plugin de cache Joomla : les images ne s'affichent pas
Joomla! à nouveau élu meilleur CMS 2017
Ajouter le bouton DOCLINK avec Jevents et SobiPro
Les nouveautés de Joomla! 4
SEBLOD: supprimer un script à moindre coût
Workflows évolués pour Joomla! avec Seblod 1/4
Développement multi sites avec Joomla et Seblod
SEBLOD et J2store au JoomlaDay Israël 2017
sh404SEF: URLs n'apparaissent pas
Pulsar présente le JoomlaBusiness à l'AFUP
Paramètres hikashop des items de menu
Astuce: suppression des éléments Seblod
Pulsar developpe la passerelle Joomla LUCENE SOLR
Monétisez votre workflow avec Joomla!
Pulsar certifie ses formateurs Joomla!
Référencement naturel, cocons sémantiques et Joomla!
Pulsar forme au CCK SEBLOD pour Joomla!
Plugin merge css/js pour Joomla
Edition front end avec Hikashop et Virtuemart
Chasse aux bugs des templates Warp
Virtuemart: flèches quantité ne fonctionnent pas
Optimisation et vitesse de votre site Joomla!
Extensions Joomla: accessibilité, menu vertical et réseaux sociaux
Les avantages de Joomla! face à Drupal
com_search joomla 2.5 recherche sans accents
Pulsar au JoomlaDay Israel 2016
Pulsar présente le job board du nouveau site web Dynamique Emploi
Sommaire automatique pour Joomla
Soirée CMS open-source en PHP
Projets multi langues et multi sites avec Seblod
Nouveau site de Pulsar avec Seblod!
Indiegogo: contrôle de version avancé avec SEBLOD
Pulsar présente JOOMLA à AGORA CMS
Quelles extensions choisir pour son site joomla ?
Les solutions e-commerce avec Joomla!
Pulsar au JoomlaDay 2014: Chaine de production
JoomlaDay 2015: Joomla! pour les applis pro
Pulsar présente son expertise SEBLOD au JoomlaDay 2013
Joomla 4 : professionnalisation et performance