0

必要に応じて特定のページでオーバーライドできるグローバルヘッダーを設定するのがベストプラクティスであるかどうか疑問に思っていますか?

たとえば、Googleのトラッキングコードがグローバルに(サイト全体に)適用されており、1つのフォームで独自のトラッキングコードを取得し、グローバルなトラッキングコードを削除する必要がありますか?

コードブロックを作成し、アイテムテンプレートに標準値を設定しようとしましたが、コードは新しく作成されたページにのみ適用され、既存のページには適用されません。これは、個々のページにコードを追加する必要があることを意味します。

ありがとう

4

3 に答える 3

0

これは、「フィールド フォールバック」の適切な使用法のように思えます。基本的に、サイトの各ページ (アイテム) にはGoogle Tracking Codeフィールドがあります。現在の項目の値を使用するために何らかのフォールバック メカニズムを接続するか、値が見つかるまでツリーを検索します。これによりGoogle Tracking Code、「ホーム」項目に を設定でき、下位レベルで明示的に設定されていない限り、すべての子孫がその値を使用します。

フォールバックに関する私の (Sean Kearney の) ブログ投稿を参照してください。

これは、私のField Fallback 共有ソース モジュールへのリンクです。

于 2012-09-26T12:54:40.390 に答える
0

フィールドを使用して Sitecore ツリーに一種の設定項目を作成し、そのフィールドを選択したページに追加することもできます。次に、次のようなコードを使用します。

<%= (!String.IsNullOrEmpty(Sitecore.Context.Item["GoogleId"]))
    ? Sitecore.Context.Item["GoogleId"] 
    : MySettingsItem["GoogleId"] %>
于 2012-09-26T06:42:46.280 に答える
0

このようなソリューションを実装する必要がある場合、「サイト設定」というテンプレートを作成してホームページから継承し (またはこのテンプレートを使用してアイテムを作成し)、Site クラスの拡張メソッドをいくつか記述します。設定項目の ID を Web.config に保存することは、通常は避けたいと思っています。通常は、テンプレートをホームページに添付するだけです。

そうすれば、次のようになります。

<%=Sitecore.Context.Site.Settings.AnalyticsCode()%>

この特定の拡張メソッドは、最初にコンテキスト アイテムを調べて、[Analytics コード] フィールドが入力されているかどうかを確認します。入力されていない場合は、ホームページを取得して、代わりにそこからフィールドを取得します。

もちろん、このメソッドを使用すると、コンテキスト サイトまたはコンテキスト アイテムから利用できる多数の便利な拡張メソッドを使用して拡張できます。

于 2012-09-26T06:40:14.207 に答える