Drupal 8自定义块(模块)创建twig模板文件

2024-04-24

我有一个自定义模块,它创建一个具有字段元素的自定义块。

这一切都很好,但我需要为这个块设置主题。我检查了这里的其他帖子并尝试过但没有成功。

我已经启用了 twig 调试并获得了主题建议。还是没有运气。

谁能指出我正确的方向。

这是我到目前为止所拥有的:

我的模块/我的模块.模块

// nothing related in here

my_module/src/Plugin/Block/myModuleBlock.php

<?php

namespace Drupal\my_module\Plugin\Block;

use Drupal\Core\Block\BlockBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Provides a 'ModuleBlock' block.
 *
 * @Block(
 *  id = "module_block",
 *  admin_label = @Translation("My Module"),
 * )
 */
class ModuleBlock extends BlockBase {

  public function blockForm($form, FormStateInterface $form_state) {
    $form['test'] = array(
      '#type' => 'select',
      '#title' => $this->t('test'),
      '#description' => $this->t('test list'),
      '#options' => array(
        'Test' => $this->t('Test'), 
      ),
      '#default_value' => isset($this->configuration['test']) ? $this->configuration['test'] : 'Test',
      '#size' => 0,
      '#weight' => '10',
      '#required' => TRUE,
    );    
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function blockSubmit($form, FormStateInterface $form_state) {
    $this->configuration['test'] = $form_state->getValue('test');
  }

  /**
   * {@inheritdoc}
   */
  public function build() {
    $build = [];
    $build['module_block_test']['#markup'] = '<p>' . $this->configuration['test'] . '</p>';
    return $build;
  }


}

my_module/templates/block--my-module.html.twig // 按照 twig debug 的建议

<h1>This is a test</h1>
<div id="test-widget">{{ content }}</div>

我还应该注意到,在我的 my_theme.theme 中我有这个,但我认为它不相关:

// Add content type suggestions.
function my_theme_theme_suggestions_page_alter(array &$suggestions, array $variables) {
  if ($node = \Drupal::request()->attributes->get('node')) {
    array_splice($suggestions, 1, 0, 'page__node__' . $node->getType());
  }
}

至于我尝试过的是这样的:

public function build() {
    return array(
      '#theme' => 'block--my-module'
    );
}

但还是没去。

非常感谢这里的任何帮助。

更新:所以我刚刚开始工作,但我仍然需要帮助。我移动了模板block--my-module.html.twig到我的主题目录并且它有效。

如何让它在我的模块目录中工作?


更新:所以我刚刚开始工作,但我仍然需要帮助。我移动了 模板块--my-module.html.twig 到我的主题目录及其 工作了。

如何让它在我的模块目录中工作?

您可以创建一个名为的目录templates/在你的模块根目录中。 将您的模板放在此处。

现在让 Drupal 知道您将模板存储在模块中。 在your_module.module添加这个功能:

function YOUR_MODULE_theme($existing, $type, $theme, $path) {
  return array(
    'block__my_module' => array(
      'render element' => 'elements',
      'template' => 'block--my-module',
      'base hook' => 'block'
    )
  );
}

这个没有经过测试。这就是我的自定义块的工作方式。

不要忘记清除缓存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Drupal 8自定义块(模块)创建twig模板文件 的相关文章

  • PHP7构造函数类名

    我有一个 Laravel 4 2 应用程序 它可以与 PHP5 一起使用 没有任何问题 由于我安装了一个运行 PHP7 的新 vagrant box 一旦我运行一个模型 其中函数名称与类名称 关系函数 相同 就会出现错误 如下所示
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 使用 DOJO 自动完成文本框

    我正在寻找一种使用 DOJO 进行文本框自动建议的简单方法 我将查询的数据库表 使用 PHP 脚本 以 JSON 形式返回 有超过 100 000 条记录 因此这确实不应该采用 FilteringSelect 或 ComboBox 的形式
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • 在 PHP 中模拟 jQuery.ajax 请求

    我必须在 PHP 中模拟 AJAX 请求 就像在 jQuery 中一样 我当前的代码在这里 原始 AJAX 调用 不得修改 ajax type POST url someFile php data data success function
  • JavaScript 中带前导零的数字发生变化

    我使用 print 语句从 php 调用 javascript 函数来打印 html 代码 并且传入一个整数 但是 在 php 中传递的值与 javascript 函数接收到的数字不匹配 我不知道为什么 这是调用 javascript 函数
  • 将数据库中的用户 ID 添加到 Codeigniter 中的会话数据中?

    我是 CodeIgniter 的新手 在从数据库添加用户 ID 用户登录后 到会话数据时遇到问题 这是我的代码问题 之前可能会在 SOF 上被问到 在付出了所有努力之后 我问这个 登录模型
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • 模拟/存根在 PHPUnit 中实现 arrayaccess 的类的对象

    这是我正在为其编写测试套件的类的构造函数 它扩展了 mysqli function construct Config c store config file this gt config c do mysqli constructor pa
  • 具有更改用户代理上下文的 file_get_contents 不起作用

    我正在尝试获取页面的阅读数和点赞数 网址是 https mp weixin qq com s NPavBeHc8VdWXeSL6kfLRg https mp weixin qq com s NPavBeHc8VdWXeSL6kfLRg 您必
  • 如何在 Twitter Card 中传递动态图像路径?

    我在用
  • 如何解决 Laravel 8 UI 分页问题?

    我在尝试最近发布的 laravel 8 时遇到了问题 我试图找出变化是什么以及它是如何工作的 当我这样做时 我遇到了分页 laravel 8 UI 变得混乱的问题 不知何故它发生了 有人可以帮助我吗 或者经历过同样的事情 像这样我在 lar
  • 如何让Gmail像加载进度条一样

    我想在页面的中心和顶部创建一个像 Gmail 一样的加载进度条 并适用于所有浏览器 这是基本代码
  • PHP 错误:“无法通过引用传递参数 2”

    我只是需要有关这个 PHP 错误的帮助 我不太明白 致命错误 无法在第 13 行 web stud openup inactivatesession php 中通过引用传递参数 2
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 使用 PHP 和 OAuth 访问 SkyDrive

    我想使用 PHP 访问 skyDrive 我想检索文件和文件夹列表 下载 上传和删除文件 我有一个 microsoft dev clientID 和 clientSecret 有人可以帮助我开始使用 OAuth 连接到 skyDrive 并
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1

随机推荐

  • 如何将 ActiveRecord 模型属性从 json 迁移到 jsonb?

    迁移应该是什么样子 我想利用 jsonb 数组查询技术 我会这样写迁移 def change reversible do dir dir up change column models attribute jsonb USING CAST
  • 持久订阅 ActiveMQ

    我正在尝试为我的消息设置持久订阅者 以便即使在服务器重新启动后它们也能保留在主题中 但在配置过程中我收到与 xml 相关的错误 这是我的配置 xml
  • sin 和 cos 很慢,有其他选择吗?

    我的游戏需要移动一定的角度 为此 我通过 sin 和 cos 获得角度向量 不幸的是 正弦和余弦是我的瓶颈 我确信我不需要这么精确 是否有替代 C sin cos 和查找表的方法 既相当精确 又非常快 我发现了这个 float Skelet
  • TypeScript getter setter 约定

    TypeScript 中类属性的约定 标准 是什么 在 Angular 2 演示 来自 Angular io 的英雄之旅 中 所有属性都设置为 public export class Hero id number name string 所
  • 允许按位运算的通用约束?

    我有一个enum public enum Flags COMMAND MSG 1 COMMAND FILE 2 COMMAND ACTION 4 现在 假设我设置了多个值 例如 Flags g Flags COMMAND ACTION Fl
  • 激活conda环境在vscode中停止工作

    我注意到conda激活环境没有明显原因就停止在 vscode 集成终端中工作 我当然没有安装任何新的扩展 也没有在过去几天更新 conda 或 vscode 预期行为 运行 conda activate 环境后 我希望激活环境并能够使用环境
  • Mercurial 子存​​储库 - 管理更复杂的依赖关系层次结构

    我有一个主项目 它使用相当标准的源代码树方法 Mercurial 子存 储库 Master lib compiled binaries things like log4net AutoFac etc source VS solution o
  • 自动将不同的 Excel 文件导入 MS Access 2010 表

    我想将所有 Excel 文件 具有不同的数据和列 从某个目录导入到 MS Access 2010 数据库中 为每个文件创建新表 我找到了将文件导入到一张表中的代码 Option Compare Database Option Explici
  • geany 自定义文件类型 .svrf 用于语法突出显示

    我有一个类似的问题 我复制并编辑了filetype extensions conf in my config geany adding CALIBRE rul svrf SVRF cal 然后下 config geany filedefs我
  • 如何调试意外静默终止的 win32 进程?

    我有一个用 C 编写的 Windows 应用程序 有时会消失 我使用 蒸发 这个词是因为没有留下任何东西 没有来自 Windows 的 我们很抱歉 消息 没有来自 Dr Watson 设施的故障转储 有一次崩溃发生在调试器下 调试器没有中断
  • React Native STUCK 启动打包器

    由于某种原因 当我想启动我的 React Native 项目时 它卡在 正在启动 Packager 部分 我尝试删除节点包 然后重新安装它们 通过yarn npm安装它们 但没有成功 我不知道该如何解决这个问题 太尴尬了 我遇到过同样的问题
  • 正确结束 Java 命令行应用程序

    我只是想知道 我需要打电话吗System exit 0 就在之前mainJava 命令行应用程序的方法结束了吗 如果是这样 为什么 如果我总是放在那里 与让它自行退出有什么区别0 什么没清理干净 提前致谢 不 您并不总是需要打电话Syste
  • 如何在张量流中将TextVectorization保存到磁盘?

    我已经训练了一个 TextVectorization 层 见下文 我想将其保存到磁盘 以便下次可以重新加载它 我努力了pickle and joblib dump 这是行不通的 from tensorflow keras layers ex
  • 如何在文本文件中逐行读取和替换字符串?

    我有一个文本文件 内容如下 INSERT INTO shops VALUES 3 1000000 0 INSERT INTO shops VALUES 3 1000010 0 INSERT INTO shops VALUES 3 10000
  • 对内核模块代码进行单元测试是否可行?

    如果是这样我应该使用什么技术 我正在考虑使用 hippomock 因为它们可以用来模拟 C 方法 还有更好的方法吗 如果是这样 任何人都可以提供建议 或者您认为内核的单元测试是否太过分了 从 Linux 内核版本 5 5 开始KUnit可用
  • 如何绕过mysql中无效的utf8字符串

    我有一个包含阿拉伯文本数据的大文本文件 当我尝试将其加载到 MySQL 表中时 出现错误消息Error code 1300 invalid utf8 character string 这是我到目前为止所尝试过的 LOAD DATA INFI
  • 无法通过 Socket.IO 从 cookie 获取 Express 会话 ID

    我在 Node 中有一个典型的 Web 应用程序 它利用 Express 框架和会话中间件 我还将 Socket io 用于应用程序的某些动态部分 目前 这是一种聊天机制 但这是无关的 我已经能够成功地自行设置会话和socket io 但希
  • 将 Flex ByteArray 转换为 Java byte[]

    我正在尝试将使用 rtmp 协议从 Flex GUI 发送的文件上传到服务器上 我昨天问如何在服务器上发送文件数据 通过rtmps java上传文件到服务器 https stackoverflow com questions 2310855
  • Swift 中的拖放 - 注册拖动类型时出现问题?

    背景 我正在尝试在 Swift 中进行一些简单的拖放操作 类似于 Apple 的示例代码可可拖放 https developer apple com library mac samplecode CocoaDragAndDrop Intro
  • Drupal 8自定义块(模块)创建twig模板文件

    我有一个自定义模块 它创建一个具有字段元素的自定义块 这一切都很好 但我需要为这个块设置主题 我检查了这里的其他帖子并尝试过但没有成功 我已经启用了 twig 调试并获得了主题建议 还是没有运气 谁能指出我正确的方向 这是我到目前为止所拥有