使用jQuery和p + t矩阵在表达式引擎中动态加载图像

时间:2012-10-19 17:55:06

标签: jquery expressionengine

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

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

一个选项是我可以创建一个单独的模板,只输出矩阵字段,然后有选择地拉入< li>由id with .load

$('#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

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

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

谢谢!

2 个答案:

答案 0 :(得分:5)

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

同时检查您的配置 - 在管理员 - >下安全 - >输出和调试,或者如果您更喜欢使用基于文件的配置,请在配置文件中 - 并确保Debugging设置为1(仅向Superadmins显示错误消息), 0(不要显示错误消息)。设置为0会导致Javascript中的EE标记出现奇怪问题,并且始终存在。

答案 1 :(得分:4)

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

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

所以:

创建一个名为“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>