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