Liferay 7.3:如何在页面模板中使用自定义 ADT?

Liferay 7.3: How can I use custom ADTs in a page template?

我想在使用页面模板时为页面准备好组件。例如。当我使用 subpage-1 模板创建页面时,它会提供放置横幅图片(或留下模板图片)的位置并自动添加面包屑(无需自定义)。

它们都有自定义 ADT,我似乎无法从页面模板选项中找到它。 (在编辑模板时,它似乎在管理栏中有自己的“站点”,所以我猜它在我的主站点上找不到任何东西。)

有没有办法获取页面模板的自定义 ADT?为了清关,模板的路径是 Site Builder --> Page Templates --> New Collection --> New page template


可能的解决方法?

这是我的 subpage-1-column.ftl 代码,它有两个放置位置:一个用于横幅图片和面包屑(我希望自动放置),另一个用于其他内容。是否可以在此处添加我希望我的页面模板执行的所有操作(内容位置、类型、adt...)?

<div id="main-content" class="container-fluid subpage-1-column">
    <div class="portlet-layout row no-gutters">
        <div class="portlet-column portlet-column-only col-12" id="column-1">
            ${processor.processColumn("column-1", "portlet-column-content portlet-column-content-only")}
        </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 可以存在于全球范围内,它们独立于“当前站点”。

缺点:全球意味着全球性,并且伴随着任何全球性的普遍缺点。在这种情况下,我认为这不是什么大问题,但是您必须自己验证一下。

我的建议是查看内容页/母版页,因为它们 比 Freemarker 模板更容易编辑

在您的评论中,您说母版页“破坏”了您的页脚、页眉等,这是它们不应该做的,我想知道那里的根本原因。但无论如何:您似乎已经拥有了 ADT,并且全局范围似乎可以解决您的问题。我会留在那里。追寻母版页问题的根本原因将是一个不同的问题(但可能不再与编程相关)

如果您正在寻找可能的“解决方法”的代码模板:

<div id="main-content" class="container-fluid subpage-1-column">
  <div class="portlet-layout row no-gutters">
    <div class="portlet-column portlet-column-only col-12" id="column-1">
        ${processor.processColumn("column-1", "portlet-column-content portlet-column-content-only")}

        <#assign portletPreferences = { "displayStyle" : "ddmTemplate_ADT_CUSTOM", "portletSetupPortletDecoratorId": "borderless", "headerType" : "none", "delta" : "10", "paginationType" : "none" } />

        ${processor.processPortlet("com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet", portletPreferences)}
    </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>

这会将 AssetPublisher 添加到具有特定 ADT 的第一列 (ddmTemplateKey = ADT_CUSTOM)

要查看所有可用的 portletPreferences,请检查您的数据库或将以下代码复制到您的一个 ADT 中:

<#list portletPreferences?keys as prop >
<li>
    ${prop}
</li>
</#list>