Editable Imageにプログラムで(Kentico C#APIを使用して)コンテンツを追加する方法に関する情報を探しています。本質的には、編集可能な画像の場合はEditable Region articleに相当します。Kentico 9 - プログラム可能な編集可能な画像領域(CMSEditableImage)へのコンテンツの追加
提案がありますか?
おかげで、
ビクター
参考文献:
Editable Imageにプログラムで(Kentico C#APIを使用して)コンテンツを追加する方法に関する情報を探しています。本質的には、編集可能な画像の場合はEditable Region articleに相当します。Kentico 9 - プログラム可能な編集可能な画像領域(CMSEditableImage)へのコンテンツの追加
提案がありますか?
おかげで、
ビクター
参考文献:
あなた確かに缶
個々の編集可能なCMSのページコントロールは、文書のDocumentContent
フィールドに格納され、インデクサフィールドを使用してアクセスすることができます。たとえば:あなたは、データベースにCMS_Document
に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;
もつとも
あなたはすべてのコンテンツがXMLであることがわかります。これは、各コントロールがXMLにシリアル化され、このフィールド内にネストされるためです。したがって、この場合には、editableImageContent
変数の値は、XML文字列です:
<image>
<property name="imagepath">
~/Folder/ImageName.png
</property>
</image>
Kenticoはこれまで、このコード、または個々の制御を変更するならば、私は何も言うことはありませんので、直接これを変更しようとお勧めしませんシリアライズ出力を変更することになります。
しかし、あなたはオプションのカップル持っている
あなたが本当に必要がある場合:@joshパー
1.を、あなたは既存のものを包む新しいコントロールを作成し、いくつかを行うことができますメソッドが魔法をオーバーライドするので、コントロールがあなたの代わりにシリアライゼーションを続け、事実の後でそれを変更するだけです。しかし、これはコントロールが現在読み込まれている必要があります。
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を使用するか、GetContent()メソッドのオーバーライドを変更して文字列の独自の部分を追加するか、文字列を置き換えてコードを追加します。
編集可能な画像に追加したいものは何ですか? - イメージパス?なぜそれをやろうとしているのか分かりませんが、私は別の方向を取っていきます。ページタイプにフィールドを追加すると、APIを使って作業するのがはるかに簡単になります。このフィールドをAPIで設定すると、ページ上で簡単に取得できます。編集可能な画像を配置し、マクロを使用してフィールド値を取得します。