如何通过预处理主题功能将树枝文件中的块限制为内容类型中的某些页面?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过预处理主题功能将树枝文件中的块限制为内容类型中的某些页面?相关的知识,希望对你有一定的参考价值。

我已经创建了一个自定义块,尽管Drupal Admin提到了页面限制(仅在列出的页面上显示),并已通过编程方式将此块包含在节点树枝文件中,但是此块显示在所有节点页面上,而不是仅在提到的页面上显示。如何通过编码限制此块仅在受限页面上显示?

我已经限制了块中的页面(通过管理界面创建),但是无论块在所有节点页面上的页面限制如何,都将显示该块。

// .theme文件中的代码,无论配置设置中提到的“仅在列出的页面上显示”的页面如何,它都起作用:

function my_sitedesigntheme_theme_preprocess_node(&$variables) {
    $block = Drupallock_contentEntityBlockContent::load(31);
    $variables['my_block_data'] = Drupal::entityTypeManager()->getViewBuilder('block_content')->view($block);
}

//树枝文件中的代码:

{{ my_block_data }}

应该显示该块(已经显示),但是只能在自定义块配置设置中列出的页面上显示。

答案

当使用Drupal::entityTypeManager()->getViewBuilder('block_content')->view($block)构建块时它忽略配置(例如,您要显示块的页面)。因此,这种方式是不正确的。

您的解决方案是,使用主题块管理器,然后将块放置在所需的区域中。

以上是关于如何通过预处理主题功能将树枝文件中的块限制为内容类型中的某些页面?的主要内容,如果未能解决你的问题,请参考以下文章

drupal 8 支持主题化预处理节点获取段落项目的函数

限制字符串树枝

是否可以将 iOS 文件共享功能限制为文档目录中的子文件夹?

修复了 Shopify 上自定义开发部分中的块数

如何有效地处理类似于 Matlab 的 blkproc (blockproc) 函数的块中的 numpy 数组

动态限制 flink kafka 源