Liferay 7 Asset Publisher新的Web内容文件夹

时间:2019-01-21 10:56:19

标签: liferay liferay-7 web-content

我在Liferay 7.0中有两个Web内容结构(foo和bar),我想将Web内容存储在webcontents文件夹(webcontents / foo和webcontents / bar)中。 我添加了两个资产发布者,每种结构一个,并且我还允许用户通过资产发布者加“ +”图标创建新的Web内容。但是,它们是在Web内容根文件夹(webcontents /)中创建的。有什么方法可以动态地将资产发布者中通过“ +”图标创建的Web内容保存到特定文件夹(基于模板本身,标签或任何其他字段)?

3 个答案:

答案 0 :(得分:1)

我认为没有定制就无法实现。

我将创建一个service wrapper来确定文件夹,例如按结构的名称。

答案 1 :(得分:1)

在这种情况下,我使用了“ ModelListener”。 https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-0/model-listeners

如果扩展Liferays BaseModelListener,则可以使用onBeforeCreate()方法作为示例。
首先检查当前journalArticle的ddmStructure并获取或创建您的Folder。现在,为您的journalArticle设置文件夹ID,并完成操作!

答案 2 :(得分:0)

将代码发布为@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);

    }