为了提升开发效率,改变了“垂直模式”开发网站的习惯,今天白龙网用drupal9开发网站时采用了“水平模式”,结果引起了不同栏目的面包屑导航“相互覆写”的问题,即:不管在不同的栏目中上线了几个面包屑导航功能,其它面包屑内容都会与最后一个上线的面包屑导航内容相同。
曾一度怀疑是哪个环节操作失误引起的debug,各种尝试、修改,也没有解决这个意料之外的问题。最后干脆把每个页面的所有功能模块全部上线,竟然意外的解决了这个debug。梳理了整个操作过程,总结下来,发现可能是由于页面分类的优先级大于面包屑导航分类的优先级。因此,设置了页面分类之后,面包屑导航自然也分类到相应的栏目下,显示对应的内容了。
除了首页之外,目标网站有pageA、pageB、pageC、pageD等4个不同的资讯列表页面,每个列表页面都有面包屑导航(breadcrumbA、breadcrumbB、breadcrumbC、breadcrumbD)、资讯列表(newsA、newsB、newsC、newsD)等功能模块。在第一个页面pageA中,开发完第一个面包屑导航breadcrumbA并上线后,面包屑导航内容可正常显示。但是,分别开发完并上线其它3个面包屑导航breadcrumbB、breadcrumbC、breadcrumbD时发现,面包屑导航breadcrumbB、breadcrumbC的内容与最后上线的面包屑导航breadcrumbD的内容相同,即:breadcrumbD覆写了breadcrumbB、breadcrumbC的内容。
产生这个结果之前,我操作了如下内容:
1、定义了不同栏目的面包屑导航区域:BregionA、BregionB、BregionC、BregionD,并在模块中放置的对应的区域变量:{{page.BregionA}}、{{page.BregionB}}、{{page.BregionC}}、{{page.BregionD}};
2、定义了不同栏目的资讯列表区域:NregionA、NregionB、NregionC、NregionD,并在模块中放置的对应的区域变量:{{page.NregionA}}、{{page.NregionB}}、{{page.NregionC}}、{{page.NregionD}};
3、使用list分类字段listA、listB、listC、listD,借助view视图与区块布局功能用来分类显示不同列表页面的面包屑导航,例如:首页>breadcrumbA、首页>breadcrumbB、首页>breadcrumbC、首页>breadcrumbD;
至此,上述debug就诞生了。解决的办法其实很简单。使用list分类字段listB、listC、listD,借助view视图(在视图页面中新建一个视图区块,他们的机器名称相同,配置参数会同步)和区块布局功能用来分类显示不同列表页面的资讯列表内容,例如:newsB、newsC、newsD;即可锁定不同的资讯列表页面显示不同的面包屑导航内容,即:breadcrumbB与newsB、breadcrumbC与newsC、breadcrumbD与newsD分别对应显示到指定的页面。这就解决了开篇提到的后面3个面包屑导航breadcrumbB、breadcrumbC、breadcrumbD相关覆写的问题。
白龙网认为,这次“水平模式”开发尝试遇到的问题,在一定程度上验证了drupal9模板的覆写机制,同时,也印证了list分类列表的优先级:先在页面视图中分类已有区块的页面内容、再分类其它区域的区块信息。此外,为了规避上述问题再次出现,也可以按照传统的开发模式“垂直模式”开展工作,即:在同一个页面按照先后顺序逐个完成相应功能的开发与布局。