一、栏目模型介绍
本系统支持三种栏目模型,分别是新闻栏目、页面栏目和跳转栏目。
1、新闻栏目又分为频道栏目和列表栏目,频道栏目不能发布内容,列表栏目可以发布文章、新闻等。
2、页面栏目可以用来发布单个页面内容,例如公司简介、联系我们等。
3、跳转栏目可以实现跳转站内或站外地址。
二、栏目的使用
1、新闻栏目
1)支持批量添加,当不填写url名称时会自动生成url名称,主要用于前台访问。
当然也可以指定栏目的url名称
2)单张图片上传支持自定义剪裁图片
3)允许指定内容分页数、栏目顺序、栏目模板、内容模板
4)高级设置可以设置关键词、描述、SEO内容、栏目显示或隐藏、栏目的顺序、栏目内容排序、还有扩展模型。
其中SEO内容支持是meta标签,扩展模型主要用于字段不满足需求需要增加额外字段来实现的扩展模型。
添加成功后可以看到
2、页面栏目
1)单页面栏目使用的是百度富文本编辑器,支持图片、视频、附件等,功能丰富而强大
2)支持分页,当一个单页面过大时可以使用[page]
标记实现文章分页
3)支持自定义模板
4)高级设置同新闻栏目类似
3、跳转栏目
1)该栏目主要实现跳转功能,支持跳转到站内,比如首页
2)跳转到站外,比如跳转到百度
4、支持栏目无限分级
5、在模板中使用
volt中
{% for category in model.getModel('Category').categoryGroup(0,2) %}
<a href="{{ url('category/' ~ category['urlname']) }}" target="_blank">{{ category['name'] }}</a><br>
{% for category1 in category['child'] %}
--<a href="{{ url('category/' ~ category1['urlname']) }}" target="_blank">{{ category1['name'] }}</a><br>
{% endfor%}
{% endfor%}
html中
{foreach $model->getModel('Category')->categoryGroup(0,2) as $category}
<a href="category/{$category['urlname']}" target="_blank">{$category['name']}</a><br>
{foreach $category['child'] as $category1 }
--<a href="category/{$category1['urlname']}" target="_blank">{$category1['name']}</a><br>
{/foreach}
{/foreach}
可以利用通用模型model
调用getModel()
方法,获得Category模型后可以调用Category模型中的categoryGroup
方法来获取栏目及其子栏目,第一个参数是栏目的pid(顶级栏目pid为0),第二个参数是获取的层级。
model
也可以当成phalcon的模型来用,只需要设置表名即可,比如想查找自定义变量表,只需要使用{% set fragment= model.table('fragment').findFirst(1) %}
来获取id为1的一条记录。也可以使用封装的{% set fragment= model.table('fragment').getOne(1) %}
。获取多条记录可以使用getAll()
方法。
推荐使用getOne()
和getAll()
,因为该方法封装了缓存,当后台开启缓存后会自动缓存数据。
第一个参数与findFirst
和find()
参数一致,支持主键id、字符串条件和数组。getOne()
和getAll()
还有第二个参数,第二个参数是languageId,即当前语言的id,不过不用传递,系统会自动识别。当不需要languageId时,可以传false
。有的表没有language_id字段,所以调用此类表需要传false
model.table('fragment')
会返回一个phalcon的模型对象,调用的是fragment
表,可以使用phalcon模型的大部分方法。