Я понял это сам.
Единственное, что вам не сообщает Fragment Editor, это то, что часть HTML фрагмента фактически интерпретируется как шаблон Freemarker, с оговоркой, что только Freemarkers альтернативный синтаксис разрешен.
Это, в свою очередь, означает, что доступны библиотеки тегов Liferays, что означает, что мы можем использовать тег <liferay-portlet:runtime>
(перенесен на альтернативу freemarker синтаксис, конечно), который принимает атрибут defaultPreferences
. Теперь мы можем просто один раз настроить портлет, найти его данные portletPreferences XML в базе данных (см. Таблицу PortletPreferences), удалить значения, которые мы не хотим предварительно настраивать, а затем просто использовать полученные предпочтения XML как значение для defaultConfiguration
.
Следует проявлять осторожность с любыми идентификаторами (например, если вы хотите предварительно настроить фильтр AssetCategory). Лучше получить соответствующий объект из соответствующей службы и получить идентификатор из этого объекта.
В этом примере предоставляется часть HTML для фрагмента страницы, который размещает AssetPublisher на странице, предварительно настроенный для отображения 12 элементов (вместо этого по умолчанию 20). (CSS, JS и Конфигурация фрагмента - это значение по умолчанию, заданное редактором фрагмента страницы.)
<div class="fragment-12345">
[#assign assetPublisherPortletPreferences="<portlet-preferences>
<preference>
<name>delta</name>
<value>12</value>
</preference>
</portlet-preferences>" /]
[@liferay_portlet["runtime"]
instanceId="${fragmentEntryLinkNamespace}assets"
portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"
defaultPreferences="${assetPublisherPortletPreferences}"
/]
</div>