For example, if you rebuild the link database. This message is due to some general links not correctly formatted. In the previous versions of Sitecore it could happend that a general link contains an emtpy id attribute or no id at all like this:
<link text="Description" linktype="internal" class="" title="myTitle" target="" querystring="" id="" />But this is not valid anymore in Sitecore 8.2.6+. To detect those link the easiest solution is running the following Powershell script:
Add-Type -AssemblyName Sitecore.Kernel
function Resolve-Error ($ErrorRecord=$Error[0])
{
$ErrorRecord | Format-List * -Force
$ErrorRecord.InvocationInfo |Format-List *
$Exception = $ErrorRecord.Exception
for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException))
{ "$i" * 80
$Exception |Format-List * -Force
}
}
function Test-Fields($item) {
$anyState = [Sitecore.Links.ItemLinkState]::Any
$item.Fields.ReadAll()
for ($j = 0; $j -lt $item.Fields.Count; $j++)
{
$field = $item.Fields[$j];
if ($field -ne $null)
{
$field2 = [Sitecore.Data.Fields.FieldTypeManager]::GetField($field)
if ($field2 -ne $null)
{
Try {
$linksValidationResult = New-Object -TypeName "Sitecore.Links.LinksValidationResult" -ArgumentList $field, $anyState
$field2.ValidateLinks($linksValidationResult);
}
Catch {
Write-Host "Error on item: $($item.ID). Field: $($field.Name). Path: $($item.Paths.FullPath). Language: $($item.Language.Name). Value: $($field.Value)"
}
}
}
}
}
function ExecOnPath($path) {
Write-Host "Execute on: $path"
Get-ChildItem -Path "master:$path" -Recurse -Language * | ForEach-Object { Test-Fields $_ }
}
ExecOnPath -Path "/sitecore/content/Home"
Write-Host "Done!"
If you also want to fix the empty links at the same time you can add those extra lines into the catch clause:
if($field.Value -eq '<link linktype="internal" />') {
$item.Editing.BeginEdit()
$item[$field.Name] = ""
$item.Editing.EndEdit()
Write-Host "Fixed automatically!"
} else {
Write-Host "Cannot fix it automatically..."
}
You can find the original thread who helped me to develop this script here: https://sitecore.stackexchange.com/questions/11282/rebuilding-link-database-system-formatexception-unrecognized-guid-format
No comments:
Post a Comment