2

我试图弄清楚每次单击按钮时如何使用 jquery 在矩阵字段中动态加载幻灯片。

我有这个矩阵字段,其中可以包含任意数量的图像。有少量但可变的条目(大约 5 个),每个条目在其矩阵字段中都有不同的幻灯片内容。

一种选择是我可以创建一个单独的模板,它只输出矩阵字段,然后通过 .load 的 id 选择性地拉入 <li>

$('#result').load('ajax/test.html #container');

但是这个模板只适用于最近的条目,并且会给其他人错误的幻灯片。

我想到的另一种方法是使用 jquery 动态更新矩阵参数。但是,我似乎无法在 js 中编写 EE 标签,然后对其进行解析:

$('ul#slides').html("{project_images limit='2' offset='0'}{/project_images}");

这只是呈现静态 html。

我觉得也许有一些方法可以做到这一点,也许使用我不知道的(javascript模板?)。

我最好的线索是来自 Brandon kelly 的简短帖子:https ://getsatisfaction.com/pixelandtonic/topics/method_to_limit_matrix_results_for_slideshow

但我不确定下一步该怎么做...

有没有人对如何做到这一点有想法?

谢谢!

4

2 回答 2

5

上面的评论很重要;确保您的{project_images}{/project_images}标签对中确实有东西。

还要检查你的配置——在Admin -> Security -> Output and Debugging下,或者如果你喜欢使用基于文件的配置,或者在你的配置文件中——并确保将Debugging其设置为1(仅向超级管理员显示错误消息),不要0永远不要显示错误消息)。设置为 0 会导致 Javascript 中的 EE 标记出现奇怪的问题,并且一直存在。

于 2012-10-21T18:34:28.133 回答
4

您计划使用 jQuery .load() 加载其他内容,将其他矩阵内容加载为 html 片段将起作用。

为了确保为正确的条目加载矩阵数据,您可以将 entry_id 作为 url 段传递。

所以:

创建一个名为“ajax.group”的模板组并添加一个名为“matrix.html”的模板(这些名称是任意的)。然后,当您加载矩阵数据时,您会这样做

$('#result').load('/ajax/matrix/{entry_id} #container');

确保将此 jQuery 放在模板中的某个位置,其中 {entry_id} 将被解析并提供当前查看的条目 id。或者,您可以使用 url_title 或包含 entry_id 或 url_title 的基于段的变量。

然后,在 ajax/matrix 模板中,你会做类似的事情

<div id="container">
{exp:channel:entries channel="channel_name_here" entry_id="{segment_3}"}
    {matrix_custom_field_name offset="1"}
        {matrix_column_short_name_here}
    {/matrix_custom_field_name}
{/exp:channel:entries}  
</div>
于 2012-10-22T20:04:22.270 回答