Comment Drupal 8 utilise Twig, comment différentes données sont transférées du modèle général vers des modèles spécifiques?
Pour le bloc d'affichage, j'ai créé un modèle de bloc selon les suggestions de modèle par défaut. Dans mon nouveau modèle Twig si j'imprime {{ content }}
Tout (afficher les champs de résultat) est rendu selon Drupal par défaut).
Comment puis-je accéder et appliquer mon balisage de thème à tous les champs d'affichage de mon modèle de bloc. {{ dump(_context|keys) }}
affichage ci-dessous.
Dans bloc - vues-bloc - page-champs-bloc-1.html.twig
Vous pouvez accéder aux champs d'affichage comme ceci:
{% for row in content['#view'].result %}
{{ content['#view'].field['field_name'].value(row) }}
// change field_name to the actual field machine name.
{% endfor %}
Personnellement, j'utilise plutôt views-view-fields - [view-name] -- [machine-name] . Html.twig
Dans votre cas, il devrait y avoir des vues-champs-vue - champs-page - bloc-1.html.twig
Ici, vous n'avez pas besoin de faire une boucle for
et vous pouvez accéder facilement aux champs avec:
{{ fields.field_name.content }}
// change field_name to the actual field machine name.
Si vous souhaitez rendre le bloc dans votre modèle personnalisé:
Créez votre fichier twig block--views-block-page-fields-block-1.html.twig
dans le dossier templates
de votre module personnalisé.
mettre en place hook_theme
comme suit:
/**
* Implements hook_theme().
*/
function yourModuleName_theme($existing, $type, $theme, $path) {
return [
'block__views_block_page_fields_block-1' => [
'base hook' => 'block'
],
];
}
content
.Si vous utilisez Twig Tweak vous pouvez utiliser drupal_view_result
pour obtenir le résultat de la vue, afin que vous puissiez accéder aux champs comme:
{% for result in drupal_view_result(content['#view'].id, content['#view'].current_display) %}
{{ result._entity.field_name.value }}
{% endfor %}