Comprendre le stockage des données avec SEBLOD

16275 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!





 

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