首页 > 解决方案 > 如何通过预处理主题功能将放置在树枝文件中的块限制为内容类型中的某些页面?

问题描述

尽管 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 }}

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

标签: drupaldrupal-8

解决方案


当您使用它构建块时,\Drupal::entityTypeManager()->getViewBuilder('block_content')->view($block) 它会忽略配置(例如,您希望阻止显示的页面)。所以,这种方式是不正确的。

您的解决方案是,使用主题块管理器,并将块放在您想要的区域中。


推荐阅读