表达式引擎:在模板中调用时,通道字段中的内容不会显示在网页上

时间:2012-04-26 20:02:03

标签: expressionengine

我有一个名为sidebar的代码段,代码如下。

<div id="ebook_offer">
{exp:channel:entries channel="test"}
<h3>Ebook</h3>
{/exp:channel:entries}
</div>

<div id="about_blog">
{exp:channel:entries channel="blog_sidebar"}
        <h3>About Obsia's Blog</h3>
{/exp:channel:entries}
</div>

<div id="testimonials">
</div>

<div id="demo" dynamic="no" limit="1">
</div>

<div id="recent posts">
{exp:channel:entries channel="blog" limit=5 offset=1}
        <h3>Recent Posts</h3>
                <li>{title}</li>
{/exp:channel:entries}
</div>

<div "connect">
</div>

<div = "subscribe">
{exp:mailinglist:form list="blog_list" form_id="blog_subscribe"}
        <h3>Subscribe</h3>
        <p>First Name <input type="text" name="first_name"="{first_name}"></p>
        <p>Email <input type="text" name="email" value="{email}"></p>
        <p><input type="submit" value="submit"></p>
{/exp:mailinglist:form}
</div>

在博客模板组的index.php模板中调用此代码段,代码如下:

<div id="blog_display">
{exp:channel:entries channel="blog" limit="5"}
  <h2>{title}</h2>
  {author}
  {if blog_images} <img src="{blog_images}" alt="blog image {title}" class="some_class" />
  {/if}
  {teaser}
  <p>comments {comment_total} </p>
{/exp:channel:entries} 
</div>

{sidebar}

我还有一个名为sidebar的频道,其中包含ebook_offer,about_blog,重新发布帖子,推荐书,订阅等字段。我可以让订阅表单显示出来。我可以在我的网页上看到最近的帖子,但看不到about_blog字段中填写的任何内容。

任何人都知道为什么博客频道有效但不是我的侧边栏频道。

2 个答案:

答案 0 :(得分:3)

如果没有将所有代码放在我面前,我不太确定问题究竟是什么,但它可能是一些事情。对于初学者,如果您的博客主页模板中包含{exp:channel:entries}标记,并且您在该标记中包含内部的代码段,那么您就会遇到问题。您无法将{exp:channel:entries}嵌套在另一个内部。

此外,默认情况下,频道条目标签设置为动态。他们将查看URL以获取有关从数据库中提取哪些条目的提示。尝试将dynamic="no"参数添加到侧边栏条目标记中,您可以了解有关here的更多信息。这应该使标签忽略页面的URL,这就是你想要的。您可能还希望将limit="1"参数添加到该标记,以确保只呈现一个侧边栏条目。

如果这些答案都没有帮助,请告诉我!

答案 1 :(得分:1)

最佳策略是将您的代码段中的内容移动到单独的模板文件中,同时尝试解决此问题。我在侧边栏代码中发现了一些似乎不合适的事情。

<div id="ebook_offer">
{exp:channel:entries channel="test"}
<h3>Ebook</h3>
{/exp:channel:entries}
</div>

<div id="about_blog">
{exp:channel:entries channel="blog_sidebar"}
        <h3>About Obsia's Blog</h3>
{/exp:channel:entries}
</div>

这似乎不是使用{exp:channel:entries}标记的正确方法。你提到“ebook_offer”是一个频道字段。但是在这里你将它用作HTML div的静态id。如果“ebook_offer”是一个字段,我会期待这样的事情:

<h3>Ebook</h3>
{exp:channel:entries channel="test"}
    {ebook_offer}
{/exp:channel:entries}

与“about_blog”相同

<h3>About Obsia's Blog</h3>
{exp:channel:entries channel="blog_sidebar"}
    {about_blog}
{/exp:channel:entries}

此外,我注意到您说该频道被命名为“侧边栏”,但在您的{exp:channel:entries}标签中,您正在使用“blog_sidebar”。哪个不一样,你的频道的短代码是“侧边栏”还是“博客侧栏”?

最后这对我来说有点不对了

<div id="demo" dynamic="no" limit="1">
</div>

“dynamic”和“limit”仅适用于ExpressionEngine {exp:channel:entries}标记,而不适用于常规HTML元素(如DIV)。我会尝试再次使用Bitmanic和Peter的建议,但将其应用于{exp:channel:entries},如下所示:

{exp:channel:entries channel="blog_sidebar" dynamic="off"}
...
{/exp:channel:entries}

如果您是ExpressionEngine的新手,我强烈推荐视频&amp; Ryan Ireland的教程http://eeinsider.com/videos