我正在使用ExpressionEngine 2.2.1,我正在尝试创建一个条件,使页面根据页面的类别显示特定的导航模板。例如,我正在为在伦敦参加比赛的人创建一个公开的个人资料。当有人访问他的个人资料时,我希望该页面不仅可以显示他的个人资料,还可以显示带有伦敦和伦敦图像的横幅。特定于伦敦比赛的导航。我想通过在类别中添加条件来实现这一目标,因为我们在许多不同城市拥有众多竞争对手。我创建了一个名为“伦敦竞争对手英语”的类别,其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}
文件二:我的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 :(得分:0)
问题是在完全独立的过程中,在所有其他标签之后处理嵌入。因此,当您的includes/header
嵌入运行时,它没有可以说的类别,因为它实际上并未在Channel Entries标记内运行。
除非您需要将变量传递给includes/header
(您似乎没有在此处执行此操作,但为了简单起见,您可能已将其删除),否则我会将您的includes/header
移至代码段相反,它将与您的Channel Entries标签一起内联处理。
答案 1 :(得分:0)
Derek的回答很明显,我想详细说明我的建议付诸行动的方法。
我在http://expressionengine.com/user_guide/templates/globals/snippets.html找到了有关代码段的信息,并在此处观看了此教程http://www.youtube.com/watch?v=AEEudo0BrRA&feature=related。然后,我在控制面板(Design&gt; Templates&gt; Snippets)中创建了一个代码段,其中包含头文件中的所有代码,并将其命名为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}
文件二:我的header.html文件的精简部分: 如前所述,我将此代码移动到EE控制面板的代码段部分。