2016-08-03 63 views

回答

1

你肯定能

每个单独的可编辑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); 
1

你可以克隆editableimage web部件,然后WOR k在prerender中,或者改变GetContent()方法的覆盖并添加你自己的部分字符串或者做一个字符串替换并添加你的代码。

1

什么是你想要添加到可编辑图片? - 图像路径?不知道为什么你会这样做,但我会采取另一个方向:我将一个字段添加到页面类型,这使得通过API工作变得更容易。使用API​​设置此字段应该很容易在页面上获得...例如放置可编辑的图像并使用宏来获取字段值。

0

使用

node.DocumentContent.EditableWebParts 

node.DocumentContent.EditableRegions 

集合,以编程方式更新编辑的内容。

最好的代码示例可以在\CMS\CMSModules\Content\CMSDesk\Properties\Advanced\EditableContent\Main.aspx.cs

要看准它的下Pages->常规 - >高级 - >编辑区域& Web部件的对话框。

Edit regions and web parts