Liferay 7 Asset publisher 新的网页内容文件夹
Liferay 7 Asset publisher new web content folder
我在 Liferay 7.0 中有两个 Web 内容结构(foo 和 bar),我想将 Web 内容存储在 webcontents 文件夹(webcontents/foo 和 webcontents/bar)中。
我添加了两个资产发布者,每个结构一个,我还允许用户通过资产发布者加“+”图标创建新的网络内容。但是,它们是在 Web 内容根文件夹 (webcontents/) 中创建的。有什么方法可以将通过资产发布者中的“+”图标创建的 Web 内容动态保存到特定文件夹(基于模板本身、标签或任何其他字段)?
我不认为如果没有自定义就可以实现这一点。
我会创建一个 service wrapper 来确定文件夹,例如通过结构的名称。
对于这个确切的场景,我使用了 "ModelListener"。 https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-0/model-listeners
如果您扩展 Liferays BaseModelListener,您可以使用例如 onBeforeCreate() 方法。
首先检查当前 journalArticle 的 ddmStructure 并获取或创建您的文件夹。现在为您的 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);
}
我在 Liferay 7.0 中有两个 Web 内容结构(foo 和 bar),我想将 Web 内容存储在 webcontents 文件夹(webcontents/foo 和 webcontents/bar)中。 我添加了两个资产发布者,每个结构一个,我还允许用户通过资产发布者加“+”图标创建新的网络内容。但是,它们是在 Web 内容根文件夹 (webcontents/) 中创建的。有什么方法可以将通过资产发布者中的“+”图标创建的 Web 内容动态保存到特定文件夹(基于模板本身、标签或任何其他字段)?
我不认为如果没有自定义就可以实现这一点。
我会创建一个 service wrapper 来确定文件夹,例如通过结构的名称。
对于这个确切的场景,我使用了 "ModelListener"。 https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-0/model-listeners
如果您扩展 Liferays BaseModelListener,您可以使用例如 onBeforeCreate() 方法。
首先检查当前 journalArticle 的 ddmStructure 并获取或创建您的文件夹。现在为您的 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);
}