フィールドレンダー - さまざまなテンプレートセクションから特定のフィールド名を取得します
質問
いくつかのセクションを備えたテンプレートからフィールドレンダーコントロールに特定のフィールド名を取得する方法はありますか?
F.Ex.セクション「データ」と「data2」を備えたテンプレートがあり、どちらにも「テキスト」と呼ばれるシングルテキストフィールドがあります。私のフィールドレンダーにセクション「data2」でフィールド「テキスト」を取得させる方法はありますか
以下の提案の1つがうまくいったらいいでしょう:
<sc:FieldRenderer ID="test" runat="server" FieldName="Text" Section="Data2" />
<sc:FieldRenderer ID="test" runat="server" FieldName="Data2/Text" />
Br Larre
解決
意図的にこのように開発されていますが(Sitecore開発者にセクション名で時間を無駄にしたくありません)、そのようなものを含めることは理にかなっていると思います。これを機能要求としてリストさせてください。
これを正しく知りたい場合は、最初にフィールドレンダーがどのように機能しているかを理解する必要があります。 「Renderfield」と呼ばれるパイプラインを開始します。この2番目のステップでは、FieldValueを読んでいます。
それをあなた自身のカスタムクラスにこのようなものに置き換えます:
public void Process(RenderFieldArgs args)
{
Assert.ArgumentNotNull(args, "args");
if(args.RawParameters.Contains("Section"))
{
//Parse args.RawParameters
//Extract Section data
//Take args.Item.Template
//Resolve section
//Resolve fieldvalue
//Set this field value as args.Results.FirstPart
}
if (!string.IsNullOrEmpty(args.FieldValue))
{
args.Result.FirstPart = args.FieldValue;
}
else
{
args.Result.FirstPart = args.Item[args.FieldName];
}
}
ラインの何か:
args.Result.FirstPart = args.Item[args.Item.Template.GetSection("sectionName").GetField(args.FieldName).ID];
しかし今、エラーチェックで:)
他のヒント
公式のSiteCoreドキュメントに従って、フィールド名はセクション間でユニークでなければなりません。
これも議論されました ここ
所属していません StackOverflow