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>

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

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

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

4

2 回答 2

3

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

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

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

于 2012-04-27T00:17:35.567 回答
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}

我还注意到您说频道名为“sidebar”,但在您的 {exp:channel:entries} 标签中您使用的是“blog_sidebar”。哪个不是一回事,您频道的短代码是“sidebar”还是“blog_sidebar”?

最后,这对我来说有点离谱

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

“动态”和“限制”仅适用于 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

于 2012-04-29T19:49:54.663 回答