Liferay 7.3 页面模板使用自定义ADT的方法及相关问题咨询
页面模板调用自定义ADT的解决方法
你的推测是正确的,站点级页面模板默认归属独立的隐藏站点,无法直接读取主站点的自定义ADT资源,可通过两种方式解决:
- 将需要用到的横幅、面包屑自定义ADT的作用域调整为全局:进入
站点构建器 > 应用程序显示模板,找到对应ADT编辑,在作用域设置中选择「全局」,保存后所有站点(包括页面模板所属隐藏站点)均可调用该ADT,之后编辑页面模板时就能在组件设置中选到对应的自定义ADT,保存模板后新创建的页面会自动继承配置。 - 若不希望ADT全局生效,可进入对应页面模板集合的设置页,查询到模板所属的站点ID,再将自定义ADT共享到该站点即可。
直接在FTL模板中配置预置功能的方案
完全可以直接在subpage-1-column.ftl中实现所有预置需求,这种方案更稳定,不会受站点资源权限、模板配置丢失的影响。你可以将第一个投放位改为硬编码的预置内容,仅保留第二个可编辑投放位给用户自定义内容,修改后的FTL参考如下:
<div id="main-content" class="container-fluid subpage-1-column"> <!-- 预置横幅+面包屑区域 无需用户配置 --> <div class="portlet-layout row no-gutters"> <div class="col-12"> <!-- 预置横幅组件,绑定全局ADT,可配置默认图片 --> <@liferay.asset_publisher displayStyle="ddmTemplate_[替换为你的横幅ADT唯一标识]" displayStyleGroupId="${company.getCompanyId()}" assetEntryIds="[替换为默认横幅图片的资产ID,无默认可不填]" /> <!-- 预置面包屑组件,绑定全局ADT --> <@liferay.breadcrumbs displayStyle="ddmTemplate_[替换为你的面包屑ADT唯一标识]" displayStyleGroupId="${company.getCompanyId()}" showCurrentGroup="true" /> </div> </div> <!-- 可编辑内容投放位,供用户添加自定义内容 --> <div class="portlet-layout row no-gutters"> <div class="portlet-column portlet-column-only col-12" id="column-2"> ${processor.processColumn("column-2", "portlet-column-content portlet-column-content-only")} </div> </div> </div>
说明:ADT的唯一标识可在ADT编辑页面的「更多选项」中查询,displayStyleGroupId传入公司ID即可直接调用全局ADT,不受站点限制。
内容的提问来源于stack exchange,提问作者Miska Rantala
相关产品推荐
相关产品推荐

