Могу ли я получить список шаблонов сайта Liferay?

#liferay #liferay-6

#liferay #liferay-6

Вопрос:

Я хочу получить список всех шаблонов (шаблонов статей в виртуальной машине или FTL) сайта Liferay в шаблоне WCM или шаблоне темы.

Это то, что я пробовал:

 <#assign DDMTemplateLocalServiceUtil = objectUtil("com.liferay.portlet.dynamicdatamapping.service.DDMTemplateLocalServiceUtil") />
<#assign ClassNameLocalServiceUtil = objectUtil("com.liferay.portal.service.ClassNameLocalServiceUtil")/>

<#assign className = ClassNameLocalServiceUtil.getClassName("com.liferay.portlet.journal.model.JournalArticle") />
<#assign classNameId = className.getClassNameId() />
<#assign groupId = themeDisplay.getScopeGroupId() />

<#assign ddmTemplates = DDMTemplateLocalServiceUtil.getTemplates(groupId, classNameId) />
<#list ddmTemplates as template>
    ${template.getName()}
</#list>
  

Но я не получаю никакого значения и никакой ошибки.

Когда я пытаюсь получить имя шаблона на основе его идентификатора, это работает:

 <#assign ddmTemplate = DDMTemplateLocalServiceUtil.getTemplate(50367) />
${ddmTemplates.getName()}
  

Я не знаю идентификатора шаблонов, так как я могу получить все шаблоны сайта Liferay, не зная их идентификатора?

Комментарии:

1. Просто замечание: ${template.getName()} вернет фрагмент XML для имени, которое вам нужно использовать ${template.getName(locale)}

2. Вы проверили, является ли groupId правильным? Я бы предположил, что идентификатор scopeGroupId может отличаться от тех, в которых находятся шаблоны.

3. пожалуйста, проверьте идентификатор группы, что касается одной из проблем, в lIferay 6.2, отображение темы разрешалось некорректно, лучше получить groupId, напрямую доступный в качестве переменной по умолчанию.

4. Мой идентификатор группы — 20182 , и themeDisplay.getScopeGroupId() или groupId дает мне это значение. Поэтому я думаю, что это не проблема groupId. Я также пытался передать параметр вручную getTemplates(20182, classNameId)

5. @ShivamAggarwal я обнаружил, что проблема в className.getClassNameId() . Мой classId статьи — 20102, но ClassNameLocalServiceUtil дает мне это значение: 20109, и я не знаю, почему оно отличается..