Kentico 9-以编程方式将内容添加到可编辑图像区域(CMSEditableImage)

Kentico 9-以编程方式将内容添加到可编辑图像区域(CMSEditableImage),kentico,Kentico,我们正在寻找有关如何通过编程方式(使用Kentico C#API)向应用程序添加内容的信息。本质上,对于可编辑图像,这是等效的 有什么建议吗 谢谢, 胜利者 参考资料: 您可以克隆editableimage Web部件,然后在预渲染中工作或更改GetContent()方法的覆盖,并添加自己的字符串部分,或执行字符串替换并添加代码。您可以克隆editableimage Web部件,然后在预渲染中工作或更改GetContent()的覆盖方法并添加您自己的字符串部分,或者执行字符串替换并添加代

我们正在寻找有关如何通过编程方式(使用Kentico C#API)向应用程序添加内容的信息。本质上,对于可编辑图像,这是等效的

有什么建议吗

谢谢,
胜利者

参考资料:


您可以克隆editableimage Web部件,然后在预渲染中工作或更改GetContent()方法的覆盖,并添加自己的字符串部分,或执行字符串替换并添加代码。

您可以克隆editableimage Web部件,然后在预渲染中工作或更改GetContent()的覆盖方法并添加您自己的字符串部分,或者执行字符串替换并添加代码。

您希望向可编辑图像添加什么图像路径?!我不知道为什么要这样做,但我会选择另一个方向:我会在页面类型中添加一个字段,这会使通过API处理变得更容易。用API设置这个字段应该很容易在页面上找到。。。e、 g.放置可编辑图像,并使用宏获取字段值。

要添加到可编辑图像的内容是什么?-图像路径?!我不知道为什么要这样做,但我会选择另一个方向:我会在页面类型中添加一个字段,这会使通过API处理变得更容易。用API设置这个字段应该很容易在页面上找到。。。e、 g.放置可编辑图像并使用宏获取字段值。

使用

node.DocumentContent.EditableWebParts

集合以编程方式更新可编辑内容

最好的代码示例位于
\CMS\CMSModules\Content\CMSDesk\Properties\Advanced\EditableContent\Main.aspx.cs

这是页面->常规->高级->编辑区域和web部件下的对话框

使用

node.DocumentContent.EditableWebParts

集合以编程方式更新可编辑内容

最好的代码示例位于
\CMS\CMSModules\Content\CMSDesk\Properties\Advanced\EditableContent\Main.aspx.cs

这是页面->常规->高级->编辑区域和web部件下的对话框


你当然可以

每个单独的可编辑cms页面控件存储在文档的
DocumentContent
字段中,可以使用索引器字段进行访问。例如:

TreeNode document=DocumentContext.CurrentDocument;
字符串editableImageControlId=“EditableImage1”;
//获取字段值
字符串editableImageContent=document.DocumentContent.EditableRegions[editableImageControlId];
//把它设置成新的东西
document.DocumentContent.EditableRegions[editableImageControlId]=newValue;
但是

如果查看数据库中
CMS\u Document
中的
DocumentContent
字段,您会注意到所有内容都是XML。这是因为每个控件都序列化为XML,然后嵌套在此字段中。因此,在这种情况下,
editableImageContent
变量的值是XML字符串:


~/Folder/ImageName.png
我不建议直接修改它,因为不知道Kentico是否会更改此代码,或者单个控件是否会更改其序列化输出

但是如果你真的必须

您有两个选择:

1。Per@josh,您可以创建一个新控件来包装现有的控件,并执行一些方法覆盖魔术,以便该控件继续代表您进行序列化,您只需在事后对其进行修改即可。但是,这要求控件当前正在加载

2.你可以对野兽进行硬编码,并在它发生变化时处理它(它很可能会发生变化)。尝试:

//从需要获取节点的任何位置获取节点
TreeNode document=DocumentHelper.GetDocuments().TopN(1).FirstObject;
var relativeMediaFilePath=“~/NewImage.png”;
var xmlmimage=string.Format(“{0}”,relativeMediaFilePath);
var cmsControlId=“editableImage1”;
if(document.DocumentContent.EditableRegions.ContainsKey(cmsControlId)){
document.DocumentContent.EditableRegions[cmsControlId]=xmlImage;
}
否则{
document.DocumentContent.EditableRegions.Add(cmsControlId,xmlImage);
}
//有点小技巧,可以让这个字段显示为已更新
SetValue(“DocumentContent”,document.DocumentContent.GetContentXml());
文件更新(正确);

你当然可以

每个单独的可编辑cms页面控件存储在文档的
DocumentContent
字段中,可以使用索引器字段进行访问。例如:

TreeNode document=DocumentContext.CurrentDocument;
字符串editableImageControlId=“EditableImage1”;
//获取字段值
字符串editableImageContent=document.DocumentContent.EditableRegions[editableImageControlId];
//把它设置成新的东西
document.DocumentContent.EditableRegions[editableImageControlId]=newValue;
但是

如果查看数据库中
CMS\u Document
中的
DocumentContent
字段,您会注意到所有内容都是XML。这是因为每个控件都序列化为XML,然后嵌套在此字段中。因此,在这种情况下,
editableImageContent
变量的值是XML字符串:


~/Folder/ImageName.png
我不建议直接修改它,因为不知道Kentico是否会更改此代码,或者单个控件是否会更改其序列化输出

但是如果你真的必须

您有两个选择:

1。Per@josh,您可以创建一个新控件来包装现有的控件,并执行一些方法覆盖魔术,以便该控件继续代表您进行序列化,您只需在事后对其进行修改即可。然而,这需要