将entry_id发送到ExpressionEngine中的嵌入

时间:2012-01-17 15:28:55

标签: templates expressionengine

我正试图找到一个很好的解决我的页面标题的问题。我从来没有一个完美的解决方案,在EE中做这些,虽然我终于认为我已经取得了突破,我已经碰到了一堵砖墙,希望你们中有一位经验丰富的Expression Engine'ers能够提供帮助。

基本上我正在尝试做的是,在我的模板中的页面的主要内容中输入的条目循环,我想抓住entry_id并将其提供给嵌入的头文件。我这样做的方式很像......

{embed="main/.header" pre_eid="{entry_id}"}

<div id="content">              
    {exp:channel:entries channel="standard-content" url_title="{segment_1}" limit="1"}

        {preload_replace:pre_eid="{entry_id}"}  

        <h1>{title}</h1>
        {content}

    {/exp:channel:entries}
</div>      

这意味着id号被传递到头文件,我可以在那里工作。但是,当我在该条目部分之外调用{pre_eid}时,它会输出未解析的标记。

如何将已解析的entry_id发送到标头?我理解这里有一些我在解析顺序或技术方面缺少的东西,虽然我知道我之前看过类似于我看过的其他EE代码的东西。

2 个答案:

答案 0 :(得分:2)

关于此主题的previous answer可能对您有所帮助。

基本上,许多网络开发人员会使用Embed Variable with an Embedded Template{entry_title}传递给全局嵌入模板,从而允许dynamic page title

<html lang="en">
<head>
    <meta charset="utf-8" />

    {embed="includes/header"
        title="
            {exp:channel:entries channel="{channel_name}"}
                {title}
            {/exp:channel:entries}
        "
    }
</head>

如果您正在使用EE2,SEO Lite Module只需一行代码即可为您完成所有艰苦工作:

<html lang="en">
<head>
    <meta charset="utf-8" />
    {exp:seo_lite url_title="{url_title}"}
</head>

另一个聪明的解决方案(/ via Derek Hogue)是将您的大部分页面包装在单个条目页面模板上的单个{exp:channel:entries}标记中,从而避免了使用多个和昂贵的频道条目查询:

{exp:channel:entries channel="channel_name" limit="1"}
    {embed="includes/header" title="{title}"}

    <h1>{title}</h1>
    {page_content}

    {embed="includes/footer"}

    {if no_results}{redirect="404"}{/if}
{/exp:channel:entries}

其他解决方案包括Low Title Plugin (EE1,EE2)

答案 1 :(得分:1)

{entry_id}变量未在通道条目查询之外设置。您需要将它包含在开始和结束{exp:channel:entries}标记之间。

尝试这样的事情:

{exp:channel:entries channel="channel_name" url_title="{segment_1}" limit="1"}
    {embed="main/.header" pre_eid="{entry_id}"}

    {preload_replace:pre_eid="{entry_id}"}
    ...
{/exp:channel:entries}

顺便提一下,您使用的{preload_replace}模板标记变量过去在EE1中被称为{assign_variable}

Preload Text Replacements在模板解析结束时进行评估,因此您无法使用它们来包含EE代码的位。

另一方面,Snippets在模板解析开始附近解析,因此它可能对您有用。

Lodewijk Schutte的ExpressionEngine Parse Order (PDF,32 KB)包含所有令人难以忍受的细节。