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



我有一个名为侧边栏的代码片段,其中包含以下代码。

<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>

此代码段在博客模板组的索引.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}

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

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

如果没有你所有的代码在我面前,我不太确定问题到底是什么,但它可能是一些事情。首先,如果您的博客主页模板中包含{exp:channel:entries}标签,并且您将代码段包含在该标签,则会遇到问题。您不能将一个{exp:channel:entries}嵌套在另一个中。

此外,默认情况下,频道条目标签设置为动态。他们将查看 URL 以获取有关从数据库中提取哪些条目的提示。尝试将 dynamic="no" 参数添加到侧边栏条目标签中,您可以在此处了解更多信息。这应该会使代码忽略页面的网址,而这正是您想要的。您可能还希望将 limit="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"是一个频道字段。但在这里,您将其用作 HTMLdiv 的静态 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"。哪个不是一回事,您频道的短代码是"侧边栏"还是"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的新手,我强烈推荐Ryan Ireland的视频和教程 http://eeinsider.com/videos

最新更新