用途:面向 Drupal 主题与模块的 Twig 模板开发,提供核心规则、翻译、库附加、安全标记、调试、常用变量与组件用法等最佳实践。
核心规则:变量默认自动转义,除非明确来源否则不要用 |escape;所有面向用户的字符串使用 {% trans %};CSS/JS 一律用 {{ attach_library() }} 附加,不要内联;禁止在 Twig 中访问服务或执行查询。
翻译:简单字符串 {% trans %}Hello world{% endtrans %};带变量 {% trans %}Hello {{ name }}{% endtrans %};复数使用 @count 与 {% plural count %} 结构。
附加库:{{ attach_library('my_module/my-library') }} 或 {{ attach_library('mytheme/component-name') }}。
安全标记:已由 Drupal 清洗的内容可用 |raw,如 {{ content.body }}、{{ content|raw }};渲染单个字段 {{ content.field_image }};按视图模式渲染 {{ node|view('teaser') }}。
调试:需开启 Twig debug,可用 {{ dump(content) }}、{{ dump(node) }}、{{ dump(_context|keys) }}。
常用变量:节点模板中可访问 {{ node.title.value }}、{{ node.bundle() }}、{{ node.id() }}、{{ node.isPublished() }};判断字段是否有输出用 {% if content.field_image|render %};字段多值循环用 {% for item in node.field_tags %} 配合 {{ item.entity.name.value }}。
SDC 组件(Drupal 10.3+):用 {% include 'mytheme:button' with { label: ..., url: path('entity.node.canonical', {node: node.id()}), variant: 'primary' } %} 引入组件。
模板建议钩子:通过 #[Hook('theme_suggestions_node_alter')] 修改 $suggestions,可追加 'node__' . $node->bundle() . '__' . $view_mode 等建议名。
限制:部分能力依赖 Drupal 版本(如 SDC 需 10.3+)与 Twig debug 配置;具体项目细节与完整示例以官方文档和实际环境为准。