如何在Drupal 8中自定义/设置样式/主题自定义内容类型的输出?

时间:2018-10-18 10:02:05

标签: drupal drupal-8 drupal-content-types

我正在创建自己的Drupal 8“经典”子主题。现在,我创建了一个带有一些文本字段的内容类型“ s-box”。我还创建了一个名为“ scol”的视图,该视图是“ s-box”的列表。此“ scol”作为一个块添加到网站的侧边栏。

效果很好(表示所有内容都显示了),但是我希望某些内容类型字段嵌套在特定的标记中(例如h4中的标题)。最好,我想为此内容类型“ s-box”定制整个输出。

但是我不知道,树枝的名字应该是什么。到目前为止,我尝试过:

node--s-box.html.twig (what I thought would be the correct name)  
block--scol.html.twig  
field--node--s-box.html.twig  
field--s-box.html.twig  
node--scol.html.twig  
scol--s-box.html.twig

完美的解决方案将是一个模板,我可以在其中构建自己的html并分配内容类型的字段。

2 个答案:

答案 0 :(得分:1)

只需启用 Twig调试。参见Debugging Twig templates。启用Twig调试后,您将获得模板命名建议,以HTML注释的形式直接打印到您的标记中。在那里,您将看到应该如何正确命名此模板。


您的sites/development.services.yml应该如下所示:

# Local development services.
#
# To activate this feature, follow the instructions at the top of the
# 'example.settings.local.php' file, which sits next to this file.
parameters:
  http.response.debug_cacheability_headers: true
  twig.config:
      debug: true
      auto_reload: true
      cache: false
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory

您需要将以下行添加到settings.php

/**
 * Enable local development services.
 */
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';

最终会给你这样的东西

<!-- FILE NAME SUGGESTIONS:
   * node--page--j1.html.twig
   * node--1--full.html.twig
   * node--1.html.twig
   * node--page--full.html.twig
   * node--page.html.twig
   * node--full.html.twig
   x node.html.twig
-->

别忘了清除缓存!多次。

答案 1 :(得分:0)

解决方案是:

由于我的内容类型在视图中,因此我可以访问views-view-fields--[my-view].html.twig(在我的情况下为views-view-fields--scol.html.twig)中的所有字段

键是fields数组。我可以按其机器名称访问所有字段。像fields.title.contentfields.field_foo.content

因此,我可以在此处设置s盒的整个输出的样式。