用好page.content调用 轻松输出各内容类型功能

  白龙网在使用drupal8.7.6自定义主题开发网站时,*.info.yml配置文件中的region区域最少得有一个content:content的区域变量,用以桥接page页面与node实体功能。否则,重建缓存后,drupal就会提示“出现异常未知错误”,同时前端页面无法打开。
 
  *.info.yml配置文件中定义的内容区域变量,在page模板中以{{page.content}}的格式引用。该变量出现在不同的功能模板,会链接不同的内容实体:新闻列表、在线留言、搜索功能、评论功能。
 
  一、新闻列表页
 
  对于新闻页面,一般会以首页、列表页、内容页三级页面的形式展示。而drupal中内容页的输出,一般可以通过page--node.html.twig和node.html.twig两类通用模板来配合输出所有的的内容页,也可以使用node--news.html.twig来输出指定节点的内容页。那么,对于不同格式的内容页,可以修改page与node模板名称、模板内容来分别输出不同的内容页。
 
  即,内容页中,头部、底部、轮播、面包屑导航、热点新闻等公共部分内容可以通过page--node.html.twig模板、视图功能控制输出。文章相关的标题、内容、日期、作者、来源、上一页、下一页等内容可以通过node.html.twig相关模板输出。
 
  此时,在page--node.html.twig模板中,我们只需要剥离出node.html.twig模板要输出的内容,用{{page.content}}替换;然后把{{page.content}}替换的内容剪切到node.html.twig模板,用content要求的变量替换相应的字段,即可实现page--node.html.twig与node.html.twig的自动寻址。
 
  当然了,面包屑导航,可以自定义字段后,使用视图或者node节点两个方法输出。这个时候用node输出更方便。
 
  二、在线留言
 
  在线留言功能的实现与新闻列表的实现方法雷同。不同的是根据debug提示,命名不同的page--webform.html.twig、webform.html.twig模板与替换不同的字段,实现相应的功能。当然page--webform.html.twig与webform.html.twig之间的桥接,还是要通过{{page.content}}这个红娘来牵线。
 
  三、搜索功能
 
  搜索功能的实现与新闻列表、在线留言功能实现方法如出一辙。之前曾写过类似文章,不在赘言。重点是静态页的的分离,page--search.html.twig与search-result.html.twig动态模板的制作,当然,这两个模板之间的桥接也是通过{{page.content}}实现的。
 
  四、评论功能
 
  不管是新闻列表、在线留言、搜索功能,还是评论功能,他们都是drupal中的内容类型。因此,都可以通过上述方法来实现其功能。唯一不同的就是模板的配置。Page页面与内容类型之间的链接仍然是{{page.content}}。