2012-10-30 36 views
10

我期待在弹出的模式从ExpressionEngine加载项使用jQuery的Ajax调用,这个想法是当在条目标题就会打开用户点击显示在全文进入一个模式它。然后,我正在寻找下一个&模式上的前一个按钮,这将允许我移动到弹出模式中的下一个和上一个条目。 我不知道是否最好加载模板或馈送,即JSON,或者如果有另一种方式我很乐意听到。加载项与AJAX

有没有人尝试这个又或者知道一个啧,也许有帮助的。我曾经碰到过这样的物品,其揭示了它的一些光,http://spibey.com/blog/2011/11/using-partial-views-in-the-expressionengine-control-panel-for-ajax-requests-or-similar/

+0

?大部分将允许您在模式窗口中将模板作为iframe加载。然后,您可以按照通常的方式对该模板进行编码,并且可以正确移动上一个/下一个按钮。 –

回答

11

该教程您链接到是控制面板。由于您正在讨论前端的内容,因此您可以使用常规的旧EE标签在EE模板中完成所有工作。

我建议一个模板组来保存你的HTML片段。在这种情况下,它可能是方便把文章本体和入口链接到一个单一的模板

ajax.group 
    - single_entry.html 

然后,在其最简单的,在模板中你必须

<div id="entry-body"> 
    {exp:channel:entries channel="channel_name_here" entry_id="{segment_3}"} 
     <h2>{title}</h2> 
     {body} 
    {/exp:channel:entries} 
</div> 

<div id="entry-links"> 
    {exp:channel:next_entry}   
     <a href="{path='ajax/single_entry'}" class="next">Next</a> 
    {/exp:channel:next_entry} 
    {exp:channel:prev_entry} 
     <a href="{path='ajax/single_entry'}" class="prev">Previous</a> 
    {/exp:channel:prev_entry} 
</div> 

当你请求那些使用ajax的片段,请确保将当前的entry_idurl_title作为网址段传递,以便片段模板为您加载正确的数据。您可以将选择器传递给load()以获取所需的html块并将其加载到页面上的相应容器中。简单地说,像

$('#entry-container').load('ajax/single_entry/2 #entry-body'); 
$('#entry-links').load('ajax/single_entry/2 #entry-links'); 

其中2为您加载项的entry_id。请参阅http://api.jquery.com/on/

最后,您需要在下一个和上一个条目链接上有jQuery事件侦听器,以便它们触发jQuery load()加载下一个条目。这是.next链接的一个例子。

$(document).on('click', '.next', function(event) { 
    var url = $(this).attr('href'); 
    $('#entry-container').load(url); // load the html into your chosen DOM element 
    event.preventDefault(); // prevent the browser from navigating to this page  
}); 

http://api.jquery.com/on/您使用哪种模式插件

+0

谢谢,这是一个很好的答案,你很好地分解它。 您是否建议您使用模式弹出窗口,例如fancybox或类似的东西,或者你会创建自己的函数,让AJAX更好地工作? 我好什么,我想实现的例子就是在Chrome浏览器谷歌Chrome商店的功能,当你点击一个应用程序,以了解更多你得到一个弹出。 我deally我会希望把在模态外部的按钮,但我想我将能够管理与自定义弹出和一些插件已经avaliable – zizther

+0

要使用的fancybox诚实(或类似)和iframe(就像她在上面评论中提到的@MediaGirl)可能只会做你想做的事情并节省一些努力。您仍然希望创建一个类似的页面片段模板以适合您的目的,但它只会在模态窗口中的iframe中加载。但是完全自定义,或者将这种ajax方法与模态插件相结合,可能会给你更多的自由。很难说哪种更适合您的情况。 –

+0

我认为这不会改变网址,以便人们可以回到它并弹出打开? – zizther