0

表达式引擎的新手。我有以下代码:

    {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(标题除外),这对页面结构至关重要。我该如何解决这个问题?

谢谢。

4

3 回答 3

0

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

于 2013-08-16T16:52:49.420 回答
0

此答案假定您在此处进行的条目调用是页面上的主要调用。如果这个电话真的只是为了一个侧边栏或其他东西,那么这个答案可能不适用。

几件事...

  1. 如果您正在构建像 EE “期望”这样的 url,那么您不必指定要查找 url 标题的 url 段。'url_title' 参数通常在您执行 EE期望的操作时很有用,例如加载除最后一段中出现的条目之外的特定条目。

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

  3. 也许您认为需要 'url_title=' 参数的原因是因为您没有仔细查看 'require_entry='。

所以我们归结为:

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

现在回答你的问题:

想一想为什么以及如何有人最终会要求您找不到您找不到的页面。

条目被删除了吗?有人转发了格式错误的 URL 吗?

答:您可能会说这些请求确实需要 404 响应。

提供真正的 404 而不是带有“对不起...”消息的有效页面可确保错误页面不会被搜索引擎索引...

要处理这个问题,你需要 EE 的redirect tag

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

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

B. 或者,您可能会说,当找不到条目时,您已经想到了一个“下一个最佳位置”来发送访问者——比您网站的 404 页面更好。

因此,如果您的访问者正在寻找一个不存在的博客条目(例如:/blog/entry/bad_page),最好将它们发送到您的博客索引页面(例如:/blog)。如果您关心搜索排名,那么就破坏的入站链接具有一些 SEO 值而言,此处的 301 重定向将有助于将该 SEO 值赋予您重定向到的页面。

{if no_results}
{redirect='blog/' status_code="301"}
{/if}
于 2013-08-16T22:41:46.197 回答
0

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

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

于 2013-08-16T19:35:28.233 回答