Articles et BDD Drupal
- 5 vues
Il m'est arrivé de perdre l'accès au contenu d'un billet sur un page de mon site suite à une erreur (interne au serveur !!!).
Je me suis donc demandé comment retrouver les données d'un type de contenu et je me suis mis à fouiner dans la BDD du site.
Dans la version étudiée (8.8.5), 4 tables sont concernées :
- node_field_data « The data table for node entities » ( la table des données pour les entités de type node) ;
- inline_block_usage « Track where a block_content entity is used » ( la table des relations blocs - node) ;
- block_content_field_data « The data table for block_content entities » ( la table des données pour les entités de type block) ;
- block_content_revision__body « Revision archive storage for block_content field body » la table du contenu du champ body des blocs).
l algorithme
Pour récupérer le contenu de la page, j'ai procédé en 3 étapes :
- trouver l'id du node en recherchant le titre ou une partie du titre dans le champ "title" de la table "node_field_data" ;
- récupérer les id des blocs qui constituent la page en recherchant l'id (trouvé à l'étape 1) dans le champ "layout_entity_id" de la table "inline_block_usage" ;
- Tant Que tous les id de blocs (trouvés à l'étape 2) n'ont pas été utilisés faire :
- récupérer le titre du bloc (champ info du revision_id ( le plus grand pour obtenir la version la plus récente) en recherchant l'id (trouvé à l'étape 2) dans le champ "id" de la table : "block_content_field_data"
- récupérer le code html du bloc (champ body_value du revision_id ( le plus grand pour obtenir la version la plus récente) en recherchant l'id (trouvé à l'étape 2) dans le champ "entity_id" de la table block_content_revision__body.
L'image ci-dessus illustre la recherche, dans la table node_filed_data de l'id du node dont le titre contient "a faire".
Remarquer l'utilisation de l'opérateur like %...%

/>---