0

サブレイアウト内にカスタムコードを作成しようとしています。

ニュースレターを作成する必要があります。ニュースレターは多数の記事で構成できます。記事は、タイトル/サブタイトル/ヘッダーと画像で構成できます。

サブタイトルまたは画像は必須ではないため、可能性があります。ニュースレターのメールに空白や画像の欠落を避けるために、コンテンツに基づいて特定のHTMLを作成したいと思います。

画像がない場合は画像コントロールを表示しないでください。サブタイトルがない場合はサブタイトルコントロールを表示しないでください。

それを行うために、私は機能していない次のコードを使用しています:(

    Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/Home");

if(home != null && home.Fields != null)
{
string name = home.Fields["Image"].Name; -> Which Fields["Image"] returns null.
}

選択した記事のフィールドを取得する別の方法はありますか?コードがまったく機能していないため、選択したアイテムのフィールド値を取得する方法がわかりません。

ありがとうございました。

4

2 に答える 2

2

あなたの例では、home.FieldsはFieldsコレクションが存在することを確認しているだけです。名前を抽出する前に、[画像]フィールドに値があるかどうかを確認していません。

あなたはおそらくこのようなものが必要です:

if(home != null && home.Fields != null && home.Fields["Image"] != null)
{
   string name = home.Fields["Image"].Name;
}

コメントによると、実際にはコンポーネントのデータソースから画像フィールドを取得しようとしているようです。その場合に何かを行う前に条件付きで画像フィールドをチェックしたい場合は、処理したいnull例外がたくさんあります。コードはおそらく次のようになります。

var parent = ((Sitecore.Web.UI.WebControl)Parent);
if(parent != null){
   Item dataSourceItem = string.IsNullOrWhiteSpace(parent.DataSource) ? null : Sitecore.Context.Database.GetItem(parent.DataSource);

   if(dataSourceItem != null && dataSourceItem.Fields != null && dataSourceItem.Fields["Image"]!=null){
       string name=dataSourceItem.Fields["Image"].Name;
   }
}
于 2012-10-25T13:03:43.810 に答える
0

これが1つの簡単な方法です:

Sitecore.Context.Item.Fields["You field name"]
于 2020-06-19T12:45:54.117 に答える