表达式引擎 - 即使没有结果,也会在条目循环中显示HTML

时间:2013-08-16 15:08:32

标签: expressionengine

Expression Engine新手。我有以下代码:

    {exp:channel:entries channel="blogposts" orderby="date" url_title="{segment_3}" limit="1"}

        <div id="cat_head_section">
            <div id="cat_title">
                <div id="lower_bubble_heading" class="cat_title"><h5>{title}</h5></div>
            </div>
        </div>

        <div id="category_main">


            {if no_results}
                <h2>Sorry, the post you were looking for either does not exist or has been deleted.</h2>
            {/if}

            {url_title}


        </div>

    {/exp:channel:entries}  

如果没有返回任何结果,我不会返回任何返回的HTML(标题除外),这对页面结构至关重要。我该如何解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:0)

如果没有结果,唯一会显示的是{if no_results}“if”语句之间的内容。如果你想要更多的HTML,你只需要在那里添加它(看起来你正在复制它,但你不会因为只显示一个或另一个 - 结果或没有结果)。

答案 1 :(得分:0)

或者,如果您不想复制代码,则可以选择将HTML另存为单独的嵌入式模板,然后将适当的值作为变量参数传递给它。如果没有结果,请为变量值指定道歉。

请参阅http://ellislab.com/expressionengine/user-guide/templates/embedding.html

答案 2 :(得分:0)

此答案假定您在此处的录入电话是页面上的主要电话。如果此调用仅适用于侧边栏或其他内容,则此答案可能不适用。

一些事情......

  1. 如果您正在构建类似EE的网址“期望”您不应该指定要查找网址标题的网址段。当您执行EE 期望的操作时,'url_title'参数通常很有用,例如加载除最后一个段中出现的之外的特定条目。 / p>

  2. 如果您将结果限制为一个条目,则无需指定订单。

  3. 您认为需要'url_title ='参数的原因可能是因为您没有好好看看'require_entry ='。

  4. 所以我们归结为:

    {exp:channel:entries channel="blogposts" limit="1" require_entry="yes"}
    

    现在回答你的问题:

    想想为什么以及如何最终要求找到一个你找不到的页面。

    条目被删除了吗?有人转推了格式错误的网址吗?

    A。您可能会说这些请求真的要求404响应。

    使用“抱歉...”消息提供真实的404而非有效页面可确保搜索引擎不会将错误页面编入索引......

    要处理此问题,您需要EE redirect tag

    {if no_results}
    {redirect="404"}
    {/if}
    

    如果你这样做,你会想要一个真正有用的 404页面。

    B. 另外,您可能会说无法找到某个条目时,您已经考虑过发送访问者的“下一个最佳位置” - 比您网站的404页面更好。< / p>

    因此,如果您的访问者正在寻找不存在的博客条目(例如:/ blog / entry / bad_page),发送它们的最佳位置将是您的博客 index 页面(例如:/ blog)。如果你关心搜索排名,那么在破坏的入站链接有一些SEO值的情况下,这里的301重定向将有助于将SEO值赋予你要重定向的页面。

    {if no_results}
    {redirect='blog/' status_code="301"}
    {/if}