drupal - 如何通过预处理主题功能将放置在树枝文件中的块限制为内容类型中的某些页面?
问题描述
尽管 Drupal Admin 提到了页面限制(仅在列出的页面上显示),但我创建了一个自定义块,并以编程方式将此块包含在节点树枝文件中,但是,此块显示在所有节点页面中,而不仅仅是提及的页面。如何通过编码限制此块仅在受限页面上显示?
我已经限制了块中的页面(通过管理界面创建),但是无论所有节点页面的页面限制如何,都会显示该块。
// .theme 文件中的代码,与“仅在列出的页面上显示”的配置设置中提到的页面无关:
function my_sitedesigntheme_theme_preprocess_node(&$variables) {
$block = Drupal\block_content\Entity\BlockContent::load(31);
$variables['my_block_data'] = \Drupal::entityTypeManager()->getViewBuilder('block_content')->view($block);
}
// 树枝文件中的代码:
{{ my_block_data }}
该块应显示(已显示),但仅在自定义块配置设置中列出的页面上。
解决方案
当您使用它构建块时,\Drupal::entityTypeManager()->getViewBuilder('block_content')->view($block)
它会忽略配置(例如,您希望阻止显示的页面)。所以,这种方式是不正确的。
您的解决方案是,使用主题块管理器,并将块放在您想要的区域中。
推荐阅读
- javascript - 播放视频的任何 Javascript 库,如果我传递图像数组和鼠标移动
- docker - Docker 隔离网络接收来自外部的数据包
- html - 之间的关系
- sip - 带 SIPP 测试的 DTMF 数字
- python-3.x - 超过 100 万个数据点的线图
- database - 具有重复数据的 Postgres 索引性能
- openssl - 由电子构建器构建的应用程序与 openssl 问题
- java - android studio 'javah' 未被识别为内部或外部命令
- psql - 无法启动 psql 控制台
- asp.net - 首次尝试调试时出现“无法在 Web 服务器上开始调试”错误