如何按年份对 ModX Revolution GalleryAlbums 进行分组
How to group ModX Revolution GalleryAlbums by year
如何按年份对相册进行分组?
例如:
2014
- Album 1
- Album 2
2013
- Album 3
我最近 seen 可以在后端使用类似子文件夹的方法对它们进行分组 - 但是否也可以查询特定文件夹的相册?
我目前正在我的画廊概览中使用此调用:
[[!GalleryAlbums? &sort=`year` &albumCoverSort=`random` &rowTpl=`galAlbumRowTpl`
&toPlaceholder=`galleries` &showAll=`1` &parent=`6`
&prominentOnly=`0` &limit=`50`]]
<div class="galleries">[[+galleries]]</div>
目前 GalleryAlbums 代码段不支持按年份排序,即使 Album 对象有一个 "year" 字段:
但是,有几种方法可以做到这一点。
1。编写您自己的代码段
这将是性能最高的选项,但相关说明可能超出此处的范围,因此另一个选项可能是:
2。嵌套模板块
通过将相册嵌套在以年份命名的父相册下来组织相册。因此,您有一个名为“2014”的相册,并且在该相册下有您想要显示那一年的子相册。
然后修改您的代码段调用以包含这些属性:
&showAll=`0`
&parent=`0`
根据 Gallery documentation,这些属性的作用如下:
showAll 如果为 1,将显示所有相册,而不考虑其父相册。
parent 仅抓取具有此 ID 的父相册的相册。记得把showAll设置为0,不然不行!
现在修改你的 rowTpl,让它变成这样:
<li>[[+name]]
<ul>[[GalleryAlbums? &showAll=`0` &parent=`[[+id]]` ... ]]</ul>
</li>
这意味着您的 "outer" 片段调用仅获得 "top-level" 相册,因为您指定父属性必须为“0”。然后每个相册的 tpl 再次调用 Gallery 代码段,将父 属性 作为当前迭代相册的 ID,从而返回子相册列表。请注意,在上面的代码示例中,我省略了您需要填充的其他重要属性,例如 &rowTpl。
注意:我看到您正在使用未缓存的令牌调用代码段 !
。您可能会通过缓存它来获得性能提升,特别是如果您使用像 StatCache 这样的激进缓存机制。虽然 GalleryAlbums getList 处理器使用其自己的缓存处理程序,但使用嵌套代码段调用(如我在此处描述的调用)可能会降低性能。
如何按年份对相册进行分组?
例如:
2014
- Album 1
- Album 2
2013
- Album 3
我最近 seen 可以在后端使用类似子文件夹的方法对它们进行分组 - 但是否也可以查询特定文件夹的相册?
我目前正在我的画廊概览中使用此调用:
[[!GalleryAlbums? &sort=`year` &albumCoverSort=`random` &rowTpl=`galAlbumRowTpl`
&toPlaceholder=`galleries` &showAll=`1` &parent=`6`
&prominentOnly=`0` &limit=`50`]]
<div class="galleries">[[+galleries]]</div>
目前 GalleryAlbums 代码段不支持按年份排序,即使 Album 对象有一个 "year" 字段:
但是,有几种方法可以做到这一点。
1。编写您自己的代码段
这将是性能最高的选项,但相关说明可能超出此处的范围,因此另一个选项可能是:
2。嵌套模板块
通过将相册嵌套在以年份命名的父相册下来组织相册。因此,您有一个名为“2014”的相册,并且在该相册下有您想要显示那一年的子相册。
然后修改您的代码段调用以包含这些属性:
&showAll=`0`
&parent=`0`
根据 Gallery documentation,这些属性的作用如下:
showAll 如果为 1,将显示所有相册,而不考虑其父相册。
parent 仅抓取具有此 ID 的父相册的相册。记得把showAll设置为0,不然不行!
现在修改你的 rowTpl,让它变成这样:
<li>[[+name]]
<ul>[[GalleryAlbums? &showAll=`0` &parent=`[[+id]]` ... ]]</ul>
</li>
这意味着您的 "outer" 片段调用仅获得 "top-level" 相册,因为您指定父属性必须为“0”。然后每个相册的 tpl 再次调用 Gallery 代码段,将父 属性 作为当前迭代相册的 ID,从而返回子相册列表。请注意,在上面的代码示例中,我省略了您需要填充的其他重要属性,例如 &rowTpl。
注意:我看到您正在使用未缓存的令牌调用代码段 !
。您可能会通过缓存它来获得性能提升,特别是如果您使用像 StatCache 这样的激进缓存机制。虽然 GalleryAlbums getList 处理器使用其自己的缓存处理程序,但使用嵌套代码段调用(如我在此处描述的调用)可能会降低性能。