动态加载表达式数据

时间:2015-07-09 02:28:34

标签: expressionengine

我试图弄清楚如何从表达式引擎动态获取内容。基本上我有6篇文章摘要作为内容。当页面加载时,我得到3个摘要,但我有一个"显示更多"按钮。单击后,我想加载接下来的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}

3 个答案:

答案 0 :(得分:1)

首先,您将在expressengine.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}

答案 1 :(得分:1)

如果您希望访问者能够在内容增加时反复“加载更多”,那么Jelle的解决方案是不够的。

为了“未来证明”,我将通过创建一个以JSON格式返回三个一组的条目的EE模板来解决这个问题,我们称之为“more.json”

“加载更多”按钮会向more.json发出AJAX请求。它需要指定一个偏移量(第一次按下按钮时它需要返回结果7 - 9,下次它被击中它需要返回结果10 - 12,依此类推)。

您可以将偏移量作为网址段传递,如下所示:

your_template_group/more.json/6

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

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

我会使用jQuery来处理AJAX,附加结果,更新按钮状态等。本网站和其他地方有很多教程解释如何实现这一点。

答案 2 :(得分:0)

我同意@Jelle Dijkstra的说法:“首先,您将在expressengine.stackexchange.com的专用EE网站上获得更好的答案”

那说,为什么不保持简单,只使用jQuery“load”方法?

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

基本上,只需添加一个包含点击事件的链接/按钮即可。在click事件上,加载一个模板,该模板可以提取您需要的信息。您甚至可以在模板中执行单个条目示例,然后为“start_on”或“limit”提供变量,以使其更加动态,具体取决于用户选择,屏幕大小或您在其他区域中使用。使用load还允许您具有“回调”功能,以便在内容传递之前显示“加载”图标。

对我而言,这是最简单的方法。 ;)