列表页面(Listing Pages)


Couch 有一个名为 pages 的强大标签,可用于列出属于模板的所有页面。
例如-

<cms:pages masterpage='blog.php'>
     <!-- 此可克隆页面的所有变量都可以在此处调用出来 -->
     <cms:show k_page_title />
</cms:pages>

- 上面给出的片段将获取从 blog.php 模板克隆的所有页面。
masterpage 参数代表模板的名称。如果省略此参数,则将使用当前模板的名称(即放置此代码段的模板)。

此标记会遍历每个提取的网页,并将与该网页关联的所有数据作为变量提供。这些变量与通过其 URL(即在其页面视图中)离散访问页面时可用的变量完全相同。

Pages 标记支持许多参数,这些参数可用于微调获取的实际页面。
有关完整列表,请参阅参数部分。

列表视图中的列表页面(主页视图、文件夹视图和存档视图)

如上一章所示,对于可克隆模板,Couch 将某些 URL 视为用于列出从正在访问的模板中克隆出来的页面的 URL。

例如:
http:// www.mysite.com/blog/_
- 被视为主视图,并且应在此视图中显示从_blog.php克隆的所有页面的列表

http:// www.mysite.com/blog/hobbies/_
- 被视为文件夹视图,并且应在此视图中显示从_blog.php克隆出的所有属于
“爱好”子文件夹的页面的列表。

http:// www.mysite.com/blog/2010/05/_
- 被视为存档视图,
并且应在此视图中显示从 _blog.php 中克隆出的 2010 年 <> 月发布的所有页面的列表。

当使用上述 URL 访问模板时,Couch 会识别视图并设置某些变量,您可以使用这些变量来列出特定视图预期的页面。
请参见:视图中可用的变量
最终取决于您是否选择以预期的方式列出页面。

处理主视图

k_is_home 变量可用于识别此视图,然后 pages 标记可用于列出从正在访问的模板克隆的所有页面。

<cms:if k_is_home >
    <cms:pages>
        <!-- 此可克隆页面的所有变量都可以在此处调用出来 -->
    </cms:pages>
</cms:if>

处理文件夹视图

k_is_folder变量可用于识别此视图。然后,Couch 在此视图中提供的 k_folder_name 变量可以用作 pages 标签的参数,以列出属于该文件夹的页面 -

<cms:if k_is_folder >
    <cms:pages folder=k_folder_name include_subfolders='1' >
        <!-- 此可克隆页面的所有变量都可以在此处调用出来 -->
    </cms:pages>
</cms:if>

处理存档视图

k_is_archive可用于识别此视图。在此视图中,Couch 提供了表示存档周期边界的 k_archive_date 和 k_next_archive_date 变量。然后,这两个变量可以用作 pages 标签的参数,以列出属于该时间段的页面 -

<cms:if k_is_archive >
    <cms:pages start_on=k_archive_date stop_before=k_next_archive_date >
        <!-- 属于此存档期的每个页面的所有变量都可以在这里获得 -->
    </cms:pages>
</cms:if>

处理所有列表视图的统一方式

如果页面及其内容的显示方式在视图之间不同,则可以单独处理这三个列表视图。但是,如果列表的显示方式没有区别,则以下是同时处理所有三个列表视图的首选方法:

<cms:if k_is_list >
    <cms:pages folder=k_folder_name include_subfolders='1' start_on=k_archive_date stop_before=k_next_archive_date >
        <!-- 属于此存档期的每个页面的所有变量都可以在这里获得 -->
    </cms:pages>
</cms:if>
上面给出的代码片段可以处理所有列表视图,因为如果当前视图是_home view_,则不会设置 *k\_folder\_name*、*k\_archive\_date* 和 *k\_next\_archive\_date*,因此这些参数对获取的页面没有影响。同样,在 *folder-view* 中,不会设置 *k\_archive\_date* 和 *k\_next\_archive\_date*,在存档视图中不会设置 *k\_folder\_name*。