我要求使用同名的优化图像替换Sitecore媒体库中的加载(2000+)图像。我需要保留原始GUID,以便所有图像仍然链接。
所以我基本上需要替换图像blob数据和大小数据。我已经编写了一个PowerShell脚本来执行此操作,但我发现它始终会处理100个项目。我看不出任何原因,可能只是我的脚本是垃圾,因为我之前没有使用过PowerShell。
$CurrentImages = Get-Item -Path master: -Query '/sitecore/media library/Images/Products//*[@@TemplateName="Jpeg"]';
$NewImages = Get-Item -Path master: -Query '/sitecore/media library/NewImages//*[@@TemplateName="Jpeg"]';
Write-Host $NewImages.Count;
$CurrentImages|foreach{ $Current = $_; $NewImages|foreach{ $New = $_; if($New.DisplayName -eq $Current.DisplayName){ Write-Host $Current.DisplayName; $Current.Blob = $New.Blob; $Current.Size = $New.Size; $New | Remove-Item}}};
我使用sitecore powershell扩展,如果这也有帮助
答案 0 :(得分:11)
CMS在Sitecore.config
中实际上对查询机制施加了限制。您可以找到以下行,并将其更改为上限:
<setting name="Query.MaxItems" value="100" />
但我建议,如果搜索量较大,您可能需要使用利用Sitecore内容搜索基础结构的Find-Item
cmdlet。
您可以找到更多不同的策略来查找the Gist I've put together some time ago with performance analysis中的内容。
如果是Find-Item
,您可能希望将搜索结果通过管道传输到Initialize-Item
,以将搜索结果项目转换为完整的网站核心项目。
编辑:在Slack schannel上学习(感谢Kamruz Jaman!)
Sitecore 8.1在App_Config\Include\Sitecore.ExperienceExplorer.config
中的此限制进一步增加到260,但在您的情况下,第一个限制仍然是这样。
<setting name="Query.MaxItems">
<patch:attribute name="value">260</patch:attribute>
</setting>