使用未引用的Web内容复制Liferay网页

时间:2015-10-14 04:05:02

标签: liferay

我尝试使用现有网页复制Liferay网页,然后按照以下步骤复制Liferay网页。

登录Liferay - >添加(点击加号图片) - >选择页面 - >输入新的页面名称 - >选择任何页面布局 - >选择本网站页面的副本 - >从下拉菜单中选择现有页面 - >添加页面

在复制网页后,我编辑了新网页的内容。编辑后我发现原始网页内容也同时更新。如何在不参考现有网页内容的情况下复制Liferay网页?我需要在新页面中有新的内容。我的Liferay版本是6.2 CE GA4。

2 个答案:

答案 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内容的更改将不会反映到原始页面。