我正试图找到一个很好的解决我的页面标题的问题。我从来没有一个完美的解决方案,在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代码的东西。
答案 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)包含所有令人难以忍受的细节。