2

ページエディタで使用するコンテンツ作成者用のカスタム編集コントロールを作成しています。もちろん、これは、ユーザーが[保存]ボタンをクリックしたときに、コントロールがデータをアイテムに保存することを意味します。

これはどのように行われますか?私は多くのドキュメントを調べてきました...基本的なものが欠けているように感じます。確かに、ここに独自のイベントハンドラーを追加できますか?

注:これをページエディタでのインライン編集にします。Sitecoreにはない非常に基本的な機能のようです。チェックボックスフィールドにもチェックボックスエントリを使用していることは確かにわかりました(なんてクレイジーな概念ですか?!?!)。編集用の組み込みオプションは、テキストボックスまたはリッチテキストエディタのみのようです。明らかな何かが欠けていますか?

4

3 に答える 3

2

OK ... Sitecoreサポートの助けを借りて、ようやくこの質問に対する答えが得られました。ページエディタがフィールドの新しい値を取得するには、Sitecore.WebEdit.setFieldValue()javascript関数を呼び出す必要があります。これにより、非表示の入力フィールドが作成され、[保存]または[保存/閉じる]ボタンがクリックされたときにPageEditorが読み取ります。

//RenderItem is the item in question, DropListField is the string name of
//the target Droplist field we want rendered
string itemID = RenderItem.ID.ToShortID().ToString();
string fieldID = RenderItem.Fields[DropListField].ID.ToShortID().ToString();
string language = RenderItem.Language.ToString();
string version = RenderItem.Version.ToString();
string revision = RenderItem[FieldIDs.Revision].Replace("-", string.Empty);

ddlList.Attributes.Add("onchange", string.Format("var ddl = getElementById('{5}');var itemURI = new Sitecore.ItemUri('{0}','{1}','{2}','{3}');Sitecore.WebEdit.setFieldValue(itemURI,'{4}',ddl.options[ddl.selectedIndex].value);",itemID,language,version,revision,fieldID,ddlList.ClientID));

したがって、基本的には、このSitecorejs関数を呼び出すDropDownListのクライアント側のonchangeハンドラーを追加するだけです。注:これにはSitecore6.2が必要だと思います

于 2010-01-20T00:47:29.650 に答える
0

カスタムコントロールを作成する必要がある場合は、通常モードで使用し、ユーザーが編集モードのときにsc:Text(またはその他)を使用します。そうすれば、面倒なことなくすべてのSitecoreの良さを手に入れることができます。これを行う1つの方法は、次のようなマルチビューを使用することです。

<MultiView>
  <View id=NormalView>
    <MyAwesomeCustomControl />
  </View>
  <View id=EditView>
    <sc:Text />
  </View>
</MultiView>

次に、コードビハインドで、適切なモードに適切なビューを選択していることを確認してください。

于 2010-01-13T05:31:55.637 に答える
0

フィールドエディタを使用してポップアップを表示し、必要な情報を編集することもできます。たとえば、次のようにするとします。

<sc:EditFrame runat="server" Buttons="MyThing">
<!-- any html, or other controls -->
</sc:EditFrame>

したがって、PageEditor(編集)モードの誰かがEditFrame内に置いたhtmlにカーソルを合わせると、ポップアップメニューが表示されます。このメニューでは、任意の数のコマンドを表示できます。通常のコマンドは「編集」オプションで、ダイアログがポップアップ表示されます。このオプションで、ツリー内の任意のコンテンツアイテムから任意のフィールドを編集できます。

利用可能なオプションをどのように構成しますか?Buttonsプロパティを介して、コアデータベースの/ sitecore / content / Applications / WebEdit / Edit Frame Buttonsの下にあるフォルダーを指す必要があります(例としてデフォルトのフォルダーを参照してください)。編集するフィールドを設定できるのもそこにあります。上記のスニペットでは、SitecoreはMyThingというフォルダーを見つけることを想定しています。

フィールドを編集するアイテムをどのように知るのですか?何も指定しない場合はContext.Itemになります。他のものが必要な場合は、editFrameコントロールのdatasourceプロパティを使用して、たとえばIDに設定します。

于 2010-01-15T12:46:41.547 に答える