动态加载表达式引擎数据

load expressionengine data dynamically

我正在尝试弄清楚如何从表达式引擎动态获取内容。基本上我有6篇文章摘要作为内容。当页面加载时,我得到 3 个摘要,但我有一个 "show more" 按钮。单击后,我想加载接下来的 3 个摘要,但我不知道该怎么做。

这是我的标签现在的样子:

{exp:channel:entries channel="blogposts" limit="3"}
    <div class='article-box'>
        <div class="article-image-box">
            <div class="article-image">

            </div>
        </div>
        <article>
            <h4>{title}</h4>
            <p class='author'>{blog_author}</p>
            <p>
                {blog_body}
            </p>
           <div class="ful-art-but-box">
                <button class="button green-but">
                    READ FULL ARTICLE
                </button>
            </div>
        </article>
    </div>

{/exp:channel:entries}

首先,您将在 expressionengine.stackexchange.com

的专用 EE 网站上获得更好的答案

为什么不加载所有六个条目,并隐藏最初不想显示的条目?然后你可以用 javascript 显示它们。这对于性能也会更好。

    {exp:channel:entries channel="blogposts" limit="6" disable=""}
{if count == 3}
    <div class="hidden">
{/if}
        <div class='article-box'>
            <div class="article-image-box">
                <div class="article-image">
                </div>
            </div>
            <article>
                <h4>{title}</h4>
                <p class='author'>{blog_author}</p>
                <p>
                    {blog_body}
                </p>
               <div class="ful-art-but-box">
                    <button class="button green-but">
                        READ FULL ARTICLE
                    </button>
                </div>
            </article>
        </div>
{if total_results == "0"}
    </div>
{/if} 
    {/exp:channel:entries}

如果您希望您的访问者能够随着您的内容的增加而反复 "Load More",那么 Jelle 的解决方案就不够用了。

为了"future proof",我会通过创建一个 EE 模板来解决这个问题,该模板 returns 条目以 JSON 格式的三个一组,我们称之为 "more.json"

"Load More" 按钮会向 more.json 发出 AJAX 请求。它需要指定一个偏移量(第一次按下按钮时需要 return 结果 7 - 9 下次按下时需要 return 结果 10 - 12 等等).

您可以像这样将偏移量作为 url 段传递:

your_template_group/more.json/6

模板 more.json 将采用请求 segment_3 中的值并将其传递给频道条目函数,如下所示:

{exp:channel:entries channel="blogposts" limit="3" disable="" offset="segment_3"}

我会使用 jQuery 来处理 AJAX、附加结果、更新按钮状态等。本网站和其他地方有许多教程解释如何完成此操作。

我同意@Jelle Dijkstra:"First of all you will get better answers on the dedicated EE site at expressionengine.stackexchange.com"

也就是说,为什么不保持简单,只使用 jQuery "load" 方法?

您可以在这里阅读:http://www.w3schools.com/jquery/jquery_ajax_load.asp 或此处:http://api.jquery.com/load/

基本上,只需添加一个具有点击事件的 link/button。在点击事件中,加载一个模板以获取您需要的信息。你甚至可以在你的模板中做一个单一的条目示例,然后为它提供 "start_on" 或 "limit" 的变量,使其根据用户选择、屏幕尺寸或供你在其他应用程序中使用时更加动态领域也是如此。使用加载还可以让您拥有 "callback" 功能,这样您就可以在内容交付之前显示 "loading" 图标。

这对我来说是最简单的方法。 ;)