我们正在寻找如何将内容添加到Editable Image编程信息(与Kentico C#API)。本质上,这个Editable Region article等同于可编辑图像。Kentico 9 - 添加的内容为可编辑图像区域(CMSEditableImage)编程
有什么建议吗?
感谢,
维克多
参考文献:
我们正在寻找如何将内容添加到Editable Image编程信息(与Kentico C#API)。本质上,这个Editable Region article等同于可编辑图像。Kentico 9 - 添加的内容为可编辑图像区域(CMSEditableImage)编程
有什么建议吗?
感谢,
维克多
参考文献:
你肯定能
每个单独的可编辑CMS页面控制存储在文档的DocumentContent
领域,可以使用索引字段进行访问。例如:
TreeNode document = DocumentContext.CurrentDocument;
string editableImageControlId = "EditableImage1";
// get the field value
string editableImageContent = document.DocumentContent.EditableRegions[editableImageControlId];
// set it to something new
document.DocumentContent.EditableRegions[editableImageControlId] = newValue;
无论其
如果在数据库看DocumentContent
领域CMS_Document
你会发现,所有的内容都是XML。这是因为每个控件都被序列化为XML,然后嵌套在该字段中。因此,在这种情况下,editableImageContent
变量的值是一个XML字符串:
<image>
<property name="imagepath">
~/Folder/ImageName.png
</property>
</image>
我不建议尝试,因为难以预料,如果Kentico将永远改变这个代码,或单独控制,直接修改此会改变它的序列化输出。
但如果你真的必须
你有两个选择:
每@josh,你可以创建一个新的控件封装了现有的和做一些方法重写魔术,以便控件继续以您的名义进行序列化,并且在事后才修改它。但是,这要求控件当前正在加载。
2.你可以硬编码野兽,并处理它,如果它改变(它可能会)。试试:
// get the node from wherever you need to get the node
TreeNode document = DocumentHelper.GetDocuments().TopN(1).FirstObject;
var relativeMediaFilePath = "~/NewImage.png";
var xmlImage = string.Format("<image><property name=\"imagepath\">{0}</property></image>", relativeMediaFilePath);
var cmsControlId = "editableImage1";
if (document.DocumentContent.EditableRegions.ContainsKey(cmsControlId)) {
document.DocumentContent.EditableRegions[cmsControlId] = xmlImage;
}
else {
document.DocumentContent.EditableRegions.Add(cmsControlId, xmlImage);
}
// a little hack to get this field to be indicated as updated
document.SetValue("DocumentContent", document.DocumentContent.GetContentXml());
document.Update(true);
你可以克隆editableimage web部件,然后WOR k在prerender中,或者改变GetContent()方法的覆盖并添加你自己的部分字符串或者做一个字符串替换并添加你的代码。
什么是你想要添加到可编辑图片? - 图像路径?不知道为什么你会这样做,但我会采取另一个方向:我将一个字段添加到页面类型,这使得通过API工作变得更容易。使用API设置此字段应该很容易在页面上获得...例如放置可编辑的图像并使用宏来获取字段值。