【问题标题】:Drupal 8 template for content-type stored in module存储在模块中的内容类型的 Drupal 8 模板
【发布时间】:2016-06-25 20:56:57
【问题描述】:

我正在构建一个带有 drupal 8 功能的简单模块。基本上它只是一个内容类型,其中一些字段通过功能模块导出。 现在我正在尝试在我的服装模块中存储此内容类型的模板,以使该模块可在其他项目中重用。 总而言之:我想将我的内容类型的模板存储在模块中而不是主题中。 (在自己的模板/目录中)

在 Drupal 7 中,这种方法是通过以下方式实现的:

function mymodule_theme($existing, $type, $theme, $path) {
  return array(
  'node__mycontenttypemachinename' => array(
      'render element' => 'elements',
      'template' => 'node--mycontenttypemachinename', //removed the "templates/"
      'base hook' => 'node' //this line did the job
    )
  );
}

我在 drupal 网站上找到了this post,但我不确定这是否是达到我想要的目标的正确方法。如果是这样(我当然尝试过),有人可以解释如何让它工作。我对这部分有一些问题:

第 2 步:调用模板 在您返回渲染数组的位置(无论是从路由器 yml 文件调用的控制器方法,还是其他任何地方),调用您的 twig 模板。

我们将不胜感激。

编辑: 我尝试了 Drupal 7 的方式。 Drupal 识别模板,在 twig-debug 中我可以看到它正在使用我的模板。 问题: 我可以在那里输入一些 HTML;但如果我尝试使用它,例如:{{ content }} 我什么也看不到。在我的主题的模板文件夹中,这是有效的。有什么想法吗?

编辑 2: 我在上面的代码示例中添加了缺失的行。对于每个人都想达到和我一样的水平。

已解决

【问题讨论】:

    标签: php drupal twig drupal-modules drupal-8


    【解决方案1】:

    我会自己回答这个问题。

    我缺少用于主题的 基本钩子

    'base hook' => 'node'
    

    我为遇到相同问题的每个人编辑了问题中的示例代码。

    【讨论】:

    • 我收到错误 Fatal error: Call to a member function bundle() on null in path-to/drupal-8.3/core/modules/node/node.module 在第 566 行。什么是这里的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多