0

状況を言い換えると、2 つのデータ テンプレートがあります。1 つはタブ付きの製品用、もう 1 つはタブ付き/なしの記事用で、それぞれ製品と記事のデータ テンプレートを使用しています。タブ機能データ テンプレートがグローバルに機能することを考慮すると、いつでも任意のデータ テンプレートにプラグインできます。

現在、タブ機能を製品に関連付けていますが、記事には関連付けていないため、製品ページではタブ機能を表示する必要がありますが、記事タブでは表示しないようにする必要があります。

質問はまだ残っています: タブ機能をプラグインしたページを確認するにはどうすればよいですか? また、私が現在いる現在のコンテキストページの ItemID を見つける方法は?

4

3 に答える 3

2

以下のコードを使用してみてください。コンテキストで使用されている現在の Sitecore アイテムが表示されます。

Sitecore.Context.Item
于 2012-10-08T13:54:34.307 に答える
1

コンテンツ アイテムに異なるデータ テンプレートを割り当てている場合は、次のようなコードを使用して、アイテムのベースとなっているデータ テンプレートを確認できます (単に ItemId を確認するよりも、この方法を使用する方がよい場合があります)。

        Sitecore.Data.Items.Item current = Sitecore.Context.Item;
        if (current.TemplateName.Equals("products", StringComparison.OrdinalIgnoreCase) == 0)
        {
            // your logic for products items
        }
        else
        {
            // your logic for services items
        }

ただし、ItemId だけが必要な場合は、次のようなコードを使用できます。

        Sitecore.Data.Items.Item current = Sitecore.Context.Item;
        Sitecore.Data.ID myID = current.ID;

それが役立つことを願っています。

于 2012-10-09T08:31:00.647 に答える
1

私にはいくつかのシナリオが発生しますが、どれがあなたのものかわからない:

1. 現在のアイテムは唯一のアイテムです

製品またはサービス アイテムの完全な詳細を表示する詳細ページのようなものを実行している場合、Sitecore.Context.Item 呼び出しは、ほとんどの場合、URL の現在のアイテム パスに基づいて、コンテキスト内の現在のアイテムを取得します。 (コンテキストを変更する方法はありますが、今はそれらの周辺ケースを無視しましょう)。次に、通常と同じように、フィールドをバインドしたり、値を抽出したりできます。

2.アイテムのリストへのバインディング

「もの」のリスト (つまり、製品またはサービスである可能性のあるアイテムのリストにバインドされた .NET リピーター) のようなことを行っていて、それぞれをユーザー コントロールで表示したい場合。いくつかのオプション:

  1. コントロールにプロパティ (「DataSource」など) を追加し、サブレイアウトでのリピーター データバインディング中に、ユーザー コントロールの Datasource プロパティを設定します (またはリピーター マークアップで設定します)。
  2. サブレイアウトのリピーター データ バインディング中にアイテムから必要なプロパティを抽出し、それをユーザー コントロールのさまざまなプロパティに渡します。

3. データソースによる駆動

データソースを持つように構成されたサブレイアウトを実行している場合、作業中の特定のコンポーネントではなく、表示されている「ページ」にバインドされたアイテムを参照するため、コンテキスト アイテムを使用できません。この場合、現在のサブレイアウトからデータソースを抽出するには、次のようなコードが必要です。

var dataSourceId = ((Sitecore.Web.UI.WebControl)Parent).DataSource;

(注: null 参照エラーを防ぐために、上記のコードで何らかのエラー処理を実行することをお勧めします)

于 2012-10-09T13:09:57.460 に答える