繁体   English   中英

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

[英]Liferay 7 Asset publisher new web content folder

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

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

我将创建一个服务包装程序来确定Folder,例如通过Structure的名称。

我为这个确切的场景使用了“ ModelListener”。 https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-0/model-listeners

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

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

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM