EditLayoutsActionYes,
我已經找到了你想要的克隆這種特定情況下的解決方案如果您更改了克隆頁面上Web內容顯示portlet中的內容,則該內容不會更改原始頁面Web內容。
我都做到了通過分機,
創建一個分機插件,然後複製下面的文件,它包含了需要將網頁內容複製爲well.Deploy這個內線,再次克隆頁面的變化。您必須覆蓋包含克隆邏輯的「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);
然後創建分機和部署,並按照同一個克隆的過程,但現在這它會生成文章的副本,以便克隆網站內容的更改不會反映到原始頁面。