Thursday, June 16, 2016

Change item template

  Item mainEventItem = Sitecore.Context.Database.GetItem("{C72639F9-8AC7-43C1-9154-DA72C396FE7E}");
      TemplateItem template = Context.Database.Templates["{1C041906-1194-4498-81B2-E7399ECC4908}"];
      Item newTemplateItem = null;


foreach (Item descendant in mainEventItem.Axes.GetDescendants())
        {
          if (descendant.Template == null)
          {
            newSheet.Cell(newRowCount, 0).Value = descendant.Paths.FullPath;
            newSheet.Cell(newRowCount, 1).Value = "missing template";
            newRowCount++;
          }
          else
          {
            switch (descendant.Template.InnerItem.Paths.FullPath)
            {
              case "/sitecore/templates/Components/Events/Event":
                newTemplateItem = Context.Database.GetItem("/sitecore/templates/Project/Corporate/Content Types/Events/Event");
                template = Context.Database.Templates[newTemplateItem.ID];
                using (new SecurityDisabler())
                {
                  descendant.ChangeTemplate(template);
                }
                break;;


NOTE: if item is unpublishable and I am in live mode (just master) then it skips those items. Use power shell to delete those.

cd 'master:/sitecore/content/Corporate/Home/Learn/Resources Library'
Get-ChildItem -Recurse . | ForEach-Object { 
    $isPublishable = $_.Publishing.IsPublishable([System.DateTime]::Now, $true)
    if (!$isPublishable) {
        #Get-Item $_.ID | Remove-Item -Recurse
        Write-Host -f Red $_.Paths.ContentPath $_.ID is unpublishable
    }
} 

No comments:

Post a Comment