![](/img/trans.png)
[英]How to control Add New options of Asset Publisher in Liferay 6.1?
[英]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.