Drupal 9中如何在首页展示自定义主题的twig模板?
Drupal自定义主题首页展示内容解决方案
可直接通过UI操作实现,无需写代码,操作步骤如下:
- 登录Drupal后台,进入「结构」-「区块布局」页面
- 找到你当前启用的自定义主题对应的布局区域,选择首页要展示内容的位置(比如Content主内容区),点击「放置区块」
- 选择新建「自定义内容区块」,在内容编辑框输入
<div>testing</div>,文本格式选择「完整HTML」 - 切换到「可见性」设置页,选择「仅在以下页面显示」,输入
<front>,保存设置后清空全站缓存即可在首页看到内容
如果要使用你已有的自定义twig文件,可根据场景选择是否在my_theme.theme中编写代码:
- 如果你的twig文件命名为
page--front.html.twig,只需要把文件放到主题根目录的templates文件夹下,直接在twig内写入<div>testing</div>,清空缓存后就会自动作为首页模板生效,不需要额外编写函数 - 如果你的twig用了自定义命名(比如
custom-home.twig),需要在my_theme.theme中编写预处理钩子函数,代码示例如下:
<?php /** * 实现 hook_preprocess_page() 页面预处理钩子 */ function my_theme_preprocess_page(&$variables) { // 判断当前页面是否为首页 if (\Drupal::service('path.matcher')->isFrontPage()) { // 给首页添加自定义模板建议,对应twig命名为 page--custom-home.html.twig $variables['theme_hook_suggestions'][] = 'page__custom_home'; // 也可以直接传递变量到现有page模板,在模板里用 {{ custom_test_content }} 输出即可 $variables['custom_test_content'] = ['#markup' => '<div>testing</div>']; } }
注意事项:
每次修改.theme文件、twig模板文件后,都需要进入后台「配置」-「性能」页面清空所有缓存,修改才会生效
内容的提问来源于stack exchange,提问作者Ark13th
相关产品推荐
相关产品推荐

