Demonstrates how to relink images using Sitecore PowerShell Extensions. Comment included by Dylan shows how to Remove the link and remove the item.
$item = Get-Item -Path "master:\media library\images\koala" | |
$itemNew = Get-Item -Path "master:\media library\images\penguins" | |
$links = Get-ItemReferrer -Item $item -ItemLink | |
foreach($link in $links) { | |
$linkedItem = Get-Item -Path master:\ -ID $link.SourceItemID | |
$itemField = $linkedItem.Fields[$link.SourceFieldID] | |
$field = [Sitecore.Data.Fields.FieldTypeManager]::GetField($itemField) | |
$linkedItem.Editing.BeginEdit() | |
$field.Relink($link, $itemNew) | |
$linkedItem.Editing.EndEdit() | Out-Null | |
} |
# Crafted by Dylan | |
function Remove-ItemLink { | |
param([Item]$item) | |
$linkDb = [Sitecore.Globals]::LinkDatabase | |
$links = Get-ItemReferrer -Item $item -ItemLink | |
foreach($link in $links) { | |
$linkedItem = Get-Item -Path master:\ -ID $link.SourceItemID | |
$itemField = $linkedItem.Fields[$link.SourceFieldID] | |
$field = [Sitecore.Data.Fields.FieldTypeManager]::GetField($itemField) | |
$linkedItem.Editing.BeginEdit() | |
$field.RemoveLink($link) | |
$linkedItem.Editing.EndEdit() | |
} | |
} | |
# Example usage: delete items along with their references that have passed a certain date defined by a 'date' field | |
$today = Get-Date | |
$todayIsoDate = [Sitecore.DateUtil]::ToIsoDate($today) | |
$itemsToDelete = Get-Item -Path master: -Query "/sitecore/system/Modules/Mysite/Service Schedules/*[@date < '$($todayIsoDate)']" | |
Foreach($item in $itemsToDelete) { | |
Write-Host "Cleaning up $($itemsToDelete.Paths.Path)" | |
Remove-ItemLink -Item $item | |
Remove-Item -Path $item.Paths.Path | |
} |
This comment has been minimized.
This comment has been minimized.
Updated to use |
This comment has been minimized.
This comment has been minimized.
Great script! Can I suggest this so that it works in multilingual scenarios:
|
This comment has been minimized.
This comment has been minimized.
Just found this gist incredibly useful, along with this stack overflow post: https://sitecore.stackexchange.com/questions/1297/removing-all-references-to-an-item-using-ootb-tools/1307 It has resulted in this function that I'm using:
|
This comment has been minimized.
This comment has been minimized.
Thanks for sharing @dylanmccurry-sage! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
I think it would be super useful if we added a couple of commandlets, based on that brilliant bit of code
like Get-ItemReferrers & possibly Relink-Item. You did it again! I didn't think it would be either that succinct or even viable!
Also - great use case scenario!