在Sitecore中发布期间以编程方式设置DMS配置文件卡

在Sitecore中发布期间以编程方式设置DMS配置文件卡,sitecore,dms,Sitecore,Dms,我需要在发布期间根据一组标准将DMS配置文件卡附加到sitecore项目 我该怎么做呢?我删除了我的原始答案,并将其发布 这是一个粗略的、准备就绪的、完全未经测试的类,它是一个要添加到publishItem管道中的处理器。(见附件) 它基于Sitecore Powershell项目中获得类似结果的代码: 请注意,您必须添加选择要使用的配置文件卡的逻辑 使用Sitecore.Data; 使用Sitecore.Data.Items; 使用Sitecore.Publishing.Pipelines.P

我需要在发布期间根据一组标准将DMS配置文件卡附加到sitecore项目


我该怎么做呢?

我删除了我的原始答案,并将其发布

这是一个粗略的、准备就绪的、完全未经测试的类,它是一个要添加到
publishItem
管道中的处理器。(见附件)

它基于Sitecore Powershell项目中获得类似结果的代码:

请注意,您必须添加选择要使用的配置文件卡的逻辑

使用Sitecore.Data;
使用Sitecore.Data.Items;
使用Sitecore.Publishing.Pipelines.PublishItem;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Xml;
命名空间SC7Test.Business.Processors
{
类SetProfileCard:PublishItemProcessor
{
公共覆盖无效进程(PublishItemContext上下文)
{
var db=Sitecore.Configuration.Factory.GetDatabase(“master”);
var publishItem=db.GetItem(context.ItemId);
//在这里添加您的逻辑。
var profileCardItem=db.GetItem(“基于选择逻辑的多个配置文件卡项目ID之一”);
var profileCardValue=profileCardItem[“配置文件卡值”];
var doc=新的XmlDocument();
doc.LoadXml(profileCardValue);
如果(doc.DocumentElement!=null&&doc.GetElementsByTagName(“profile”).Count>0&&
doc.GetElementsByTagName(“配置文件”)[0]!=null)
{
XmlNode XmlNode=doc.GetElementsByTagName(“概要文件”)[0];
if(xmlNode.Attributes!=null)
{
XmlAttribute presetAttribute=xmlNode.Attributes[“presets”]??doc.CreateAttribute(“presets”);
presetAttribute.Value=profileCardItem.Name.ToLower()+“| 100 | |”;
xmlNode.Attributes.Append(预设属性);
}         
}
使用(新EditContext(publishItem、false、false))
{
publishItem[“_跟踪”]=doc.InnerXml;
}
}
}
}

非常感谢!这为我解决了问题。我对Sitecore.Analytics.Data.TrackingField类做了一些修改,看看是否可以使用现有代码而不是侵入XML,但由于某些原因,它的配置文件是写保护的,所以您的方式似乎是要通过的:)