跨站点的 Liferay 复制布局内容类型

Liferay copy layout content type across sites

目前我希望能够将布局内容类型作为草稿从一个站点复制到另一个站点。但它不能用下面的代码做到这一点:

  private void copyLayout(final Layout srclayout, Layout destLayout) throws Exception {
    Layout destDraftLayout = LayoutLocalServiceUtil.fetchLayout(
      PortalUtil.getClassNameId(Layout.class), destLayout.getPlid());
    if (Validator.isNotNull(layout) && Validator.isNotNull(destLayout)) {
      destDraftLayout = layoutCopyHelper.copyLayout(srclayout, destDraftLayout);
      layoutLocalService.updateLayout(destDraftLayout);
    }

内容总是空白。 请帮忙,我不知道如何解决这个问题。

以上代码适用于当前站点

我现在找到了解决方案。我创建了新的实现并复制了 https://github.com/liferay/liferay-portal/blob/ded0e9390637985231e962e4ad4cfa4639eabb26/modules/apps/layout/layout-impl/src/main/java/com/liferay/layout/internal/util/LayoutCopyHelperImpl.java.

中的所有代码

并添加此代码newFragmentEntryLink.setGroupId(targetLayout.getGroupId());

https://github.com/liferay/liferay-portal/blob/ded0e9390637985231e962e4ad4cfa4639eabb26/modules/apps/layout/layout-impl/src/main/java/com/liferay/layout/internal/util/LayoutCopyHelperImpl.java#L237