我尝试使用现有网页复制Liferay网页,然后按照以下步骤复制Liferay网页。
登录Liferay - >添加(点击加号图片) - >选择页面 - >输入新的页面名称 - >选择任何页面布局 - >选择本网站页面的副本 - >从下拉菜单中选择现有页面 - >添加页面
在复制网页后,我编辑了新网页的内容。编辑后我发现原始网页内容也同时更新。如何在不参考现有网页内容的情况下复制Liferay网页?我需要在新页面中有新的内容。我的Liferay版本是6.2 CE GA4。
答案 0 :(得分:1)
我找到了解决此问题的部分解决方案。我必须手动复制每个网页内容,并用新网页中的新内容替换现有内容。
对于每个网络内容的重复,
登录Liferay - >管理员 - >内容 - >点击每个网络内容中的向下箭头图标 - >单击复制选项
然后更改每个新内容的标题。(分别标识重复的内容)
答案 1 :(得分:0)
EditLayoutsActionYes,
我找到了针对这种特殊情况的解决方案,如果您在克隆页面上更改了Web内容显示portlet中的内容,那么您希望克隆不会更改原始页面Web内容的Web内容。
我是通过分机完成的,
创建一个ext插件,然后复制下面的文件,它包含了复制Web内容所需的更改。部署此ext并再次克隆页面。您必须覆盖包含克隆逻辑的“ EditLayoutsAction.java ”(包是com.liferay.portlet.layoutsadmin.action)文件。
在updateLayout(actionRequest,actionResponse)方法中找到下面的代码
if (copyLayout != null) {
if (copyLayout.isTypePortlet()) {
ActionUtil.copyPreferences(
actionRequest, layout, copyLayout);
将以下代码复制到找到的代码
下long companyId = themeDisplay.getCompanyId();
long ownerId = PortletKeys.PREFS_OWNER_ID_DEFAULT;
int ownerType = PortletKeys.PREFS_OWNER_TYPE_LAYOUT;
for (String portletId : portletllist) {
if(portletId.startsWith("56_INSTANCE"))
{
javax.portlet.PortletPreferences prefs = PortletPreferencesLocalServiceUtil.getPreferences(companyId,
ownerId,
ownerType,
copyLayout.getPlid(),
portletId);
String articleId = prefs.getValue("articleId", "1234");
if(!(articleId.equalsIgnoreCase("1234"))){
JournalArticle jArticle=JournalArticleServiceUtil.copyArticle(themeDisplay.getScopeGroupId(), articleId, "0", true, Double.parseDouble("1"));
javax.portlet.PortletPreferences newPrefs = PortletPreferencesLocalServiceUtil.getPreferences(companyId,
ownerId,
ownerType,
layout.getPlid(),
portletId);
newPrefs.setValue("articleId", jArticle.getArticleId());
PortletPreferencesLocalServiceUtil.updatePreferences(ownerId, ownerType, layout.getPlid(), portletId , newPrefs);
然后创建ext并部署它并遵循相同的克隆过程,但现在这次它将生成文章的副本,因此对克隆的Web内容的更改将不会反映到原始页面。