Drupal9的搜索结果中,一般会涉及搜索结果页、搜索框、搜索内容列表、搜索内容分页四大功能模块。白龙网研究发现,需要分别配置的、常用的模板也有十来个。模板配置好了,相应的功能可正常使用。反之,则有可能会导致有些功能无缘无故的失效,尤其是搜索结果页搜索不出内容,是经常遇到的问题。
一、搜索页面模板
搜索结果页面类似于列表页,因此它的模板命名规范要与列表页模板命名标准是一致的。例如,搜索页常用的模板是page--search.html.twig,当然,也可以使用通用的页面模板page.html.twig来打印所有页面框架,具体来说,根据实际需求配置即可。
二、搜索框模板
Drupal9的搜索结果页默认会显示一个搜索框,这个搜索框架是系统自带的一区块,可以放置在任何页面的任何区域。与搜索框相关的常用模板有5个,分别是:form.html.twig、container.html.twig、form-element.html.twig、form-element-label.html.twig、input.html.twig。这些模板分别用来定义表单的结构、标题、搜索框等属性。
使用过程中发现,模板内所有标签属性不能轻易修改,否则可能会导致搜索功能失效。如果一定要修改某个标签(form、input)的属性,如样式、class、id等,则建议在不修改原标签属性的前提下,在目标标签内增加相应的样式、样式、class、id。这样,就可以在保持原有功能不受影响的前提下,也增加了自定义样式。
三、搜索内容列表模板
搜索结果内容页列表样式,一般会与网站的通用列表页样式保持一致,即:拿网站通用列表页模板作为搜索结果列表页模板。因此,它也涉及文章的标题、描述、日期、来源、作者等字段信息。
常用的模块一般有2个:item-list--search-results.html.twig,它类似于ul/li中的ul,用来包裹循环输出的内容;search-result.html.twig,它类似于ul/li中的li,用来打印循环输出的内容。当然,循环输出的每一个字段,也可以单独的使用一个对应的模板来配置,以满足个性化需求。
同理,为了保证搜索列表内容字段正常打印,原则上不要修改上述两个模板内标签的属性。然而,依然可以通过给标签增加样式、class、id等方式来修改模板样式。
四、搜索内容分页模板
基于搜索结果列表页面与网站通用列表样式保持一致这个结论,研究发现,drupal9搜索结果列表页面的分页模块与网站通用列表页的分页模板使用的是同一个分页模板pager.html.twig。因此,在实际开发过程中,凡是涉及分页功能需求的列表页,整个网站只需要配置一次,全站列表页即可调用已配置好的分页功能、样式。
大多数情况下,drupal9系统自带的模板结构与目标模板结构是不一致的,这个时候就需要对比两类模板,删除冗余,增加需求。既保证目标模板的样式,又保留系统自带模板的功能,同样也涉及标签属性的增删与优化。