Duplicate pages

To duplicate an existing page within Sitefinity CMS, perform the following:

  1. Use the PageManager class to create a new page node
  2. To create a new page, call CreatePage() method.
    You need to specify the parent node, the unique identifier, and the node type.
  3. Copy the page data of the node, using the CopyPageData() method.

EXAMPLE: To duplicate a page, you can use the following code snippet:

C#
using System;
using System.Linq;
using System.Text.RegularExpressions;
using Telerik.Sitefinity.Modules.Pages;
using Telerik.Sitefinity.Pages.Model;

namespace SitefinityWebApp
{
    public class DuplicatePages_DuplicatePageNative
    {
        public void DuplicatePageNative(Guid sourcePageId, string pageName)
        {
            Guid pageId = Guid.NewGuid();

            var manager = PageManager.GetManager();

            PageNode sourcePage = manager.GetPageNodes().FirstOrDefault(x => x.Id == sourcePageId);

            if (sourcePage != null)
            {
                // Create the new page node
                PageNode parent = manager.GetPageNode(sourcePage.ParentId);
                PageNode pageNode = manager.CreatePage(parent, pageId, sourcePage.NodeType);

                // Copy the source page data
                PageData sourcePageData = sourcePage.GetPageData();
                PageData pageData = pageNode.GetPageData();

                if (sourcePageData != null && pageData != null)
                {
                    manager.CopyPageData(sourcePageData, pageData);

                    pageData.Description = pageName;
                    pageData.DateCreated = DateTime.UtcNow;
                    pageData.LastModified = DateTime.UtcNow;
                }

                // Set the page node properties
                pageNode.Name = pageName;
                pageNode.ShowInNavigation = true;
                pageNode.UrlName = Regex.Replace(pageName.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");
                pageNode.Title = pageName;

                // Publish the page node
                pageNode.ApprovalWorkflowState = "Published";
                manager.SaveChanges();
            }
        }
    }
}
Want to learn more?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
New to Sitefinity?