Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sitefinitySDK/ba9915b9d93b6d974ced to your computer and use it in GitHub Desktop.
Save sitefinitySDK/ba9915b9d93b6d974ced to your computer and use it in GitHub Desktop.
SF_10.1, SF_10.2, SF_11.0, SF_11.1, SF_11.2, SF_12.0, SF_12.1, SF_12.2, SF_13.0, SF_13.1, SF_13.2, SF_13.3 - https://docs.sitefinity.com/tutorial-create-a-content-block-widget-that-displays-shared-content
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.GenericContent.Model;
using Telerik.Sitefinity.Modules.GenericContent;
using Telerik.Sitefinity.Modules.Pages;
using Telerik.Sitefinity.Pages.Model;
namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Modules.ContentBlocks
{
public partial class ContentBlocksSnippets
{
public static void CreatePageWithSharedContentItemSnippet()
{
//gets an instance of the contentManager
var contentManager = ContentManager.GetManager();
//creates new content block
var contentItem = CreateContentItem(contentManager);
//gets a PageManager object
PageManager manager = PageManager.GetManager();
//creates new page
var pageData = CreatePageData(manager, Guid.NewGuid());
//edit the page to add content block
var draftPage = manager.EditPage(pageData.Id);
var contentBlock = new Telerik.Sitefinity.Modules.GenericContent.Web.UI.ContentBlock();
contentBlock.Html = contentItem.Content.Value;
contentBlock.SharedContentID = contentItem.Id;
var draftControl = manager.CreateControl<PageDraftControl>(contentBlock, "Body");
draftPage.Controls.Add(draftControl);
//Create a node in the SiteMap for that page.
PageNode node = manager.CreatePageNode();
var parent = manager.GetPageNode(SiteInitializer.CurrentFrontendRootNodeId);
manager.ChangeParent(node, parent);
//set the node properties
node.Title = "page title";
node.ShowInNavigation = true;
node.UrlName = "url";
//associate the node with the PageData object
//valid before 7.0
//node.Page = pageData;
//Save the changes
manager.PublishPageDraft(draftPage);
manager.SaveChanges();
}
private static ContentItem CreateContentItem(ContentManager contentManager)
{
var contentItem = contentManager.CreateContent(Guid.NewGuid());
contentItem.Title = "content item title";
contentItem.UrlName = "content-item-url-name";
contentManager.SaveChanges();
//valid before 7.0
//contentItem = contentManager.Publish(contentItem);
//since version 7.0 you must use the Lifecycle property
contentManager.Lifecycle.Publish(contentItem);
contentManager.SaveChanges();
return contentItem;
}
private static PageData CreatePageData(PageManager pageManager, Guid id)
{
//It holds the actual page contents
PageData pageData = pageManager.CreatePageData(id);
pageData.Template = pageManager.GetTemplates().First();
pageData.HtmlTitle = "page title";
//valid before 7.0
//pageData.Title = "page title";
//since 7.0 some of the PageData properties are moved to the PageNode
//check API Changes in Sitefinity 7.0
pageData.NavigationNode.Title = "page title";
//Set the page status as published. The default status is draft
pageData.Status = ContentLifecycleStatus.Live;
return pageData;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment