【问题标题】:Liferay 7.3: How can I use custom ADTs in a page template?Liferay 7.3:如何在页面模板中使用自定义 ADT?
【发布时间】:2021-10-29 21:33:37
【问题描述】:

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

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

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


可能的解决方法?

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

<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?此外,将 ContentPages/Master Pages 视为解决问题的另一种方法,比 ADT 更省力
  • 我不知道,为什么我没有尝试过!全局范围好像可以解决问题,谢谢!!!使用全局范围 ADT 有什么缺点吗? PS。母版页似乎破坏了我的页脚、页眉等,所以我没有过多地使用它们。

标签: liferay freemarker liferay-7 liferay-7.3


【解决方案1】:

促进评论回答:

ADT 可以存在于全球范围内,它们独立于“当前站点”。

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

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

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

【讨论】:

    【解决方案2】:

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

    <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>
    

    【讨论】:

      猜你喜欢
      • 2021-02-08
      • 2014-05-15
      • 2012-11-05
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      相关资源
      最近更新 更多