2012-03-27 14 views
0

ExpressionEngine 2.2.1を使用していますが、ページのカテゴリに基づいてページに特定のナビゲーションテンプレートを表示する条件を作成しようとしています。たとえば、私はロンドンの競技会に参加している人のために公開プロフィールを作成しています。誰かが自分のプロフィールにアクセスしたとき、彼のプロフィールだけでなく、ロンドンの競技に特有のLondon &ナビゲーションのイメージを持つバナーをページに表示したいと思います。私は多くの異なる都市で非常に多くの競合相手を持っているので、カテゴリを条件付きで追加することでこれを行いたいと思います。私は "London Competitors English"というタイトルのカテゴリーを作成し、IDは "56"です。 EE内で競合他社のプロファイルを作成したら、カテゴリ「ロンドン競合他社の英語」を選択します。ただし、ページに移動すると、ロンドンのテンプレートではなくデフォルトのナビゲーションテンプレートが読み込まれます。私は私の研究と最も関連した例に基づいてコードを作成しました:http://expressionengine.com/forums/viewthread/185555/。私は自分のコード?:カテゴリに基づくヘッダーファイルへのテンプレートの埋め込み

FILE ONEで間違っています:(の凝縮部分)competitor_profiles_en/index.htmlを "competitor_profiles_enは、" テンプレートです:

{exp:channel:entries limit="1" url_title={segment_2} } 
{embed="includes/header"} 
<div class="xx">  
<h2>{competitor_first_name}<br>{competitor_last_name}</h2>  
... 
</div> 
{/exp:channel:entries} 

FILE TWO:(凝縮部分)私のheader.htmlファイル:

{if segment_1 == 'home'} 
{embed="includes/_nav_landing"} 
{if:elseif "{categories}{category_id}{/categories}" == "56"} 
{embed="includes/_nav_city_lon_en"} 
{if:else} 
{embed="includes/_nav_internal"} 
{/if} 

答えて

0

問題は埋め込み機能が完全に別のプロセスで、他のすべてのタグの後に処理されていることです。したがって、あなたのincludes/header埋め込みコードが実行されるとき、実際にはチャンネルエントリタグ内で実行されていないため、話すカテゴリはありません。

変数をincludes/headerに渡す必要がない限り(ここには表示されませんが、簡単にするために削除した可能性があります)、代わりにincludes/headerをスニペットに移動して処理しますあなたのチャンネルエントリタグとインライン。

0

デレクの回答があったので、私は彼の提案を行動に組み込む方法について詳しく説明したいと思います。

ここでスニペットに関する情報を見つけましたhttp://expressionengine.com/user_guide/templates/globals/snippets.htmlとこのチュートリアルはhttp://www.youtube.com/watch?v=AEEudo0BrRA&feature=relatedです。その後、コントロールパネル(デザイン>テンプレート>スニペット)にスニペットを作成しました。このスニペットには、ヘッダーファイルにあったすべてのコードが含まれており、snippet_header_enというタイトルが付けられていました。 ExpressionEngineには、テンプレートの一部としてスニペットが含まれているため、EEは自分が作成したカテゴリを含む自分の条件を認識しました。

FILE ONE:ここに改訂されたコードである(の凝縮部分)competitor_profiles_en/index.htmlの "competitor_profiles_en" はテンプレートです:

{exp:channel:entries limit="1" url_title={segment_2} } 
{snippet_header_en} 
<div class="xx">  
<h2>{competitor_first_name}<br>{competitor_last_name}</h2>  
... 
</div> 
{/exp:channel:entries} 

FILE TWO:(の凝縮部分)私のheader.html file: 前述のとおり、このコードをEEコントロールパネルのスニペットセクションに移動しました。

関連する問題