可重复区域(Repeatable Regions)


对于我们的常见网站来说,有很多地方需要使用到重复数据,如:相册,组图,一些数据格式相同的内容块。我们通常无法判定数量有多少个,也许需要上传一个,也许需要10个或者更多。

在以前来说,我们可能会预留个最大数量,但是有的内容我只需要传一个,其他多余。

如首页简介里有一组图文,里面有图片,标题,描述,甚至还有链接,这里的内容相对独立,有的cms需要新建一个模块,像添加新闻条目一样,然后再调用。

但是这里的内容相对独立,一个网站有很多这种结构,这样做无疑过于复杂,且维护让人晕头转向,我们希望在当前页就可以编辑,而且数量可以自由增减。

这就是可重复区域的意义。

创建可重复字段

正常情况下,创建一个图片字段如下

<cms:editable type='image' name='my_image' label='Photo' />

如果我需要上传很多图片,数量不确定,可以这样:

<cms:repeatable name='my_multiple_images' >
    <cms:editable type='image' name='my_image' label='Photo' />
</cms:repeatable>

这样后台就会出现一个可以重复的图片字段,可增删,可拖动排序。

这里的字段支持本cms几乎所有字段,除了缩略图字段,当然缩略图字段有可替代的缩略图调用字段

<cms:repeatable name='my_multiple_images' >
    <cms:editable type='image' name='my_image' label='Photo' show_preview='1' preview_width='150' input_width='200' col_width='300' />
    <cms:editable type='nicedit' label='Description' name='my_desc' />
</cms:repeatable>

后台字段的样式调节

注意:上面的 col_width='300' 参数,默认情况下,每一组所有字段都在一行,你想自由调节每个宽度可以这样,此外 image和file字段还支持input_width,用于调节输入框的宽度。

如上面已经说过,默认字段横排一行的,我们可以添加一个参数让其竖排,stacked_layout='1'

<cms:repeatable name='contacts' label='Contacts' stacked_layout='1'>
    <cms:editable name='title' label='Title' type='text' />
    <cms:editable name='image' label='Image' type='image' show_preview='1' preview_width='200' />
    <cms:editable name='details' label='Details' type='richtext' height='80' />
</cms:repeatable>

 

前台调用可重复字段

<cms:show_repeatable 'my_multiple_images' startcount='0' >
    <cms:show k_count /> / <cms:show k_total_records />
    <b>Image: <img src="<cms:show my_image />" /> 
    <b>Desc:</b> <cms:show my_desc />
    <hr>
</cms:show_repeatable>

注意,上面代码可以增加了1个参数,startcount='0',  在循环体内可以调用当前索引:<cms:show k_count />, 总数量:<cms:show k_total_records />

同时支持 'limit', 'offset', 'order' 三个参数。

1、倒序 order='desc'

<cms:show_repeatable 'contacts' order='desc'>...

2、显示指定行数  limit

<cms:show_repeatable 'contacts' limit='3' >..

3、‘offset’参数将使标签在跳过offset中指定的行数后开始显示行

<cms:show_repeatable 'contacts' offset='2' >..

4、使用这三者的组合可以有效地针对表中的特定行,例如:下面将只显示第一行

<cms:show_repeatable 'contacts' limit='1' >..

5、只显示第二行

<cms:show_repeatable 'contacts' limit='1' offset='1'>..

6、只显示最后一行

<cms:show_repeatable 'contacts' limit='1' order='desc' >..

7、只显示倒数第二行

<cms:show_repeatable 'contacts' limit='1' offset='1' order='desc' >..

8、还有2个新变量

<cms:show_repeatable 'contacts'>
    <cms:if k_first_row >
    
    </cms:if>
    
    ..

    <cms:if k_last_row >
    
    </cms:if>
</cms:show_repeatable>

以上就是可重复区域字段的全部内容!