모든 페이지들은 적용되어진 템플릿에 의하여 페이지가 생성이 되고, 템플릿의 값이 어떻게 적용되었는지에 따라, 페이지의 적용된 값도 일괄적으로 업데이트가 된다.
간혹, 잘못 적용된 템플릿을 삭제해야하는 경우가 생기며, 그 템플릿을 삭제하기 위해서는 먼저 템플릿이 사용중인 아이템을 삭제 또는 템플릿 정보를 해당 아이템에서 삭제해야지만이 메인 템플릿 아이템을 삭제할수가 있다.
이번 포스트에서는 어느 아이템에서 해당 템플릿을 사용중인지 찾는 방법을 알아보도록 하겠다.
- CMS Link DB를 이용하여 찾는 법
- "Content Editor"로 이동 후, 삭제하고자 하는 아이템을 선택한다.
- 아이템 선택 후, 상위 매인 툴 박스에서 "Navigation" 탭을 선택한다.
- "Navigation" 패널에서 "Links" 버튼을 클릭하면, 선택되어진 아이테을 사용중인 아이템 목록들이 나온다.
- 코드를 작성하여 찾는 법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
public Item[] GetReferrers(string itemId) { Item item = Sitecore.Data.Database.GetDatabase("master").GetItem(new Sitecore.Data.ID(itemId)); // 모든 링크된 아이템의 정보를 가져온다 ItemLink[] itemLinks = Globals.LinkDatabase.GetReferrers(item); if (itemLinks == null) { return null; } else { ArrayList items = new ArrayList(itemLinks.Length); foreach (ItemLink itemLink in itemLinks) { // 'Master' DB에 있는 정보를 비교한다. if (itemLink.SourceDatabaseName == "master") { Item linkItem = Sitecore.Data.Database.GetDatabase("master").Items[itemLink.SourceItemID]; if (linkItem != null) { items.Add(linkItem); } } } return (Item[])items.ToArray(typeof(Item)); } }
- Powershell 스크립트를 이용하여 찾는 법
- 먼저, Sitecore PowerShell를 설치 한 후,
- "Content Editor" 또는 "Dashboard"에서 PowerShell Console를 실행시킨다.
- 아래의 코드를 PowerShell 스크립트 필디에 넣은 후, "Execute" 버턴을 실행한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
$props = @{ InfoTitle = "Referrers" InfoDescription = "현재 아이템을 사용중인 모든 아이템을 리스트하여라." PageSize = 25 } function Get-ItemReferrers { $item = Get-Item -Path "/sitecore/your/template/item/path" $linkDb = [Sitecore.Globals]::LinkDatabase $links = $linkDb.GetReferrers($item) foreach($link in $links){ $linkedItem = Get-Item -Path master:\ -ID $link.SourceItemID $linkedItem } } $items = Get-ItemReferrers $items | Show-ListView @props -Property @{Label="Name"; Expression={$_.DisplayName} }, @{Label="Updated"; Expression={$_.__Updated} }, @{Label="Updated by"; Expression={$_."__Updated by"} }, @{Label="Created"; Expression={$_.__Created} }, @{Label="Created by"; Expression={$_."__Created by"} }, @{Label="Path"; Expression={$_.ItemPath} } Close-Window