Новая папка веб-контента издателя Liferay 7 Asset - PullRequest
0 голосов
/ 21 января 2019

У меня есть две структуры веб-контента (foo и bar) в Liferay 7.0, и я хочу хранить веб-контент в папках с веб-контентом (webcontents / foo и webcontents / bar). Я добавил двух издателей активов, по одному для каждой структуры, и я также позволяю пользователю создавать новые веб-материалы с помощью издателя ресурсов плюс значок «+». Однако они создаются в корневой папке веб-материалов (webcontents /). Есть ли способ динамически сохранить веб-контент, созданный с помощью значка «+» в издателе ресурсов, в определенную папку (на основе самого шаблона, тегов или любого другого поля)?

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Я использовал «ModelListener» для этого точного сценария. https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-0/model-listeners

Если вы расширяете Liferays BaseModelListener, вы можете использовать метод onBeforeCreate (), например.
Сначала проверьте ddmStructure текущего journalArticle и получите или создайте свою папку. Теперь установите идентификатор папки для вашего журнала. Статья и все готово!

0 голосов
/ 25 января 2019

Размещение кода в качестве решения, предложенного @ Viergelenker

public class ArticleSetListenerPortlet extends BaseModelListener<JournalArticle> {

    private static final Log LOGGER = LogFactoryUtil.getLog(ArticleSetListenerPortlet.class);

    @Override
    public void onBeforeCreate(JournalArticle model) throws ModelListenerException {
            String structureName = model.getDDMStructure().getName(Locale.US);
            long groupId = xxxxx;
            List<JournalFolder> journalFolders = JournalFolderLocalServiceUtil.getFolders(groupId);
            for(JournalFolder folder : journalFolders) {

                if("Foo".equals(folder.getName())) {
                        model.setFolderId(folder.getFolderId());
                        LOGGER.info("Set folder as Foo");
                    }

         }


            super.onBeforeCreate(model);

    }
0 голосов
/ 21 января 2019

Не думаю, что этого можно достичь без настройки.

Я бы создал служебную оболочку для определения папки, например, по имени структуры.

...