Sur un site Drupal 8, je vois une erreur sur un bloc qui dit:
Ce bloc est cassé ou manquant. Il vous manque peut-être du contenu ou vous devrez peut-être activer le module d'origine.
Comment puis-je résoudre cette erreur?
Vous avez créé un bloc personnalisé et le bloc personnalisé a été placé dans une région, puis vous avez perdu le bloc personnalisé qui a peut-être été supprimé ou vous avez effectué une exportation de configuration à partir d'un environnement et une importation de configuration à l'autre. Le bloc personnalisé n'existe donc plus mais dans la page de mise en page Bloc (admin/structure/bloc), les références existent.
Donc, supprimez le bloc manquant de la page de présentation du bloc (admin/structure/bloc) et recréez le bloc personnalisé et placez-le à nouveau dans la région.
Il y a un problème central ouvert à discuter de ce problème: https://drupal.org/project/drupal/issues/2756331
Cela peut également être surmonté en utilisant ce module: https://www.drupal.org/project/recreate_block_content
L'emplacement du bloc est enregistré en tant que configuration. C'est ce qui est exporté et synchronisé entre les environnements. Le contenu réel du bloc est considéré exactement comme: le contenu . Cela signifie que lorsque vous importez votre nouvelle configuration dans un environnement différent (ou supprimez le bloc, puis réimportez la configuration), il y a un décalage entre la configuration du bloc et l'instance de bloc réelle (qui n'existe plus).
Pour résoudre ce problème, vous devez simplement supprimer la configuration du bloc manquant, puis recréer le bloc. Cela permet à votre site de résoudre les écarts.
Une autre option serait d'utiliser le module contribué fixed_block_content pour gérer ce processus pour vous.
Il y a un Drupal problème principal discutant de cette chose même. https://drupal.org/project/drupal/issues/2756331
J'ai eu le même problème avec Views. Après avoir essayé un thème différent, certains de mes blocs Vues ont disparu. J'ai vérifié et les vues réelles ont été désactivées. J'ai pu le restaurer en allant sur la page des vues et en "activant" les vues et tous les blocs affichés comme prévu.
Je l'ai rencontré moi-même, l'utilisation de modules ou de correctifs ne fonctionnait pas pour moi. Faire l'itinéraire de correction de la base de données, pensant que cela a quelque chose à voir avec les UUID ou les ID. Tout va bien. Ce qui a fonctionné pour moi pour résoudre ce problème est de modifier le block_content_field_data
table et vérifié que tous les blocs existants pour le champ reusable
ne sont pas NULL
Effacez ensuite le cache pour le site et vous verrez les blocs personnalisés manquants. Jusqu'à présent, cette solution de contournement a fonctionné pour moi.
Oh et je suis à 8.6.13 en ce moment.
Cela se produit car lorsqu'un bloc est créé, un identifiant unique est généré (uuid). Cela peut être vu à partir de la table block_content.
Un bloc personnalisé est un contenu similaire à un nœud, donc si vous créez un bloc dans un environnement (dev par exemple) et recréez le bloc manuellement sur un autre environnement (Production ou QA). Le bloc aura un uuid différent.
La synchronisation de configuration recherchera un uuid qui n'existe pas. Pour résoudre ce problème, vous devez importer les données de la base de données. Ou mettez simplement à jour (id et uuid) sur les tableaux suivants:
block_content;
block_content_field_data;
block_content__body;
block_content_field_revision;
block_content_revision;
block_content_revision__body;
Mon problème a été causé par un bloc existant uniquement sur dev et puis la configuration pointant vers un bloc qui n'existait pas ailleurs. Il est apparu dans Layout Builder. Je suis sur Drupal 8.7.6 et j'ai pu simplement aller dans le constructeur de mise en page, supprimer la mauvaise référence de bloc, rajouter le bloc correct et le problème a été résolu. J'ai juste Je devais être sûr de réexporter ma configuration et de mettre à jour mon référentiel afin de ne pas recréer le problème.