# CMS主题教程
# 快速创建主题
# 安装模块开发助手
模块开发助手可以极大效率的提高模块开发效率,在后台安装 模块开发助手 (opens new window) 。
# 创建主题模块
使用 模块开发助手 (opens new window) 可以快速的创建主题主题模块。
通过 系统管理 → 模块开发助手 → 新建CMS主题模块
可以完成主题模块的快速创建。
# 完成主题模块代码开发
第二步会根据填写的主题模块基本信息完成模块的创建,并且生成一些示例代码,通过修改和完善模块代码,完成模块的功能开发
主题模块的开发请参照 CmsThemeDemo (opens new window),该示例中涵盖了主题模块开发的示例。
开发示例程序会不断更新,请随时查看最新的开发示例程序。
# 模板开发语法
主题使用了 blade 语法,具体语法可参照 视图开发
# 模板信息
# 站点基本信息
适用范围:任意页面
// 网站名称
{{ modstart_config('siteName') }}
// 网站Logo
{{ modstart_config('siteLogo') }}
// 网站副标题
{{ modstart_config('siteSlogan') }}
// 网站域名
{{ modstart_config('siteDomain') }}
// 网站关键词
{{ modstart_config('siteKeywords') }}
// 网站描述
{{ modstart_config('siteDescription') }}
// 备案编号
{{ modstart_config('siteBeian') }}
// 网站ICO
{{ modstart_config('siteFavIco') }}
// 网站主色调
{{ modstart_config('sitePrimaryColor') }}
// 网站主题
{{ modstart_config('siteTemplate') }}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# CMS基本信息
适用范围:任意页面
// 企业名称
{{ modstart_config('Cms_CompanyName') }}
// 企业邮箱
{{ modstart_config('Cms_ContactEmail') }}
// 企业电话
{{ modstart_config('Cms_ContactPhone') }}
// 企业地址
{{ modstart_config('Cms_ContactAddress') }}
// 企业传真
{{ modstart_config('Cms_ContactFax') }}
// 联系人
{{ modstart_config('Cms_ContactContactPerson') }}
// 企业联系QQ
{{ modstart_config('Cms_ContactQQ') }}
// 企业介绍标题
{{ modstart_config('Cms_HomeInfoTitle') }}
// 企业介绍图片
{{ modstart_config('Cms_HomeInfoImage') }}
// 企业介绍说明
{{ modstart_config('Cms_HomeInfoContent') }}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 导航
# 轮播图片
# 友情链接
# 站点地图
# 当前栏目
适用范围:在列表页或详情页使用
# 可用变量
变量 | 说明 |
---|---|
$cat['id'] | 栏目ID |
$cat['pid'] | 父级栏目ID |
$cat['title'] | 栏目标题 |
$cat['url'] | 栏目URL |
$cat['modelId'] | 栏目模型ID |
$cat['seoTitle'] | SEO标题 |
$cat['seoDescription'] | SEO描述 |
$cat['seoKeywords'] | SEO关键词 |
$cat['icon'] | 栏目图标 |
$cat['cover'] | 栏目封面 |
$cat['subTitle'] | 栏目子标题 |
$cat['bannerBg'] | 栏目Banner背景 |
$cat['_model'] | 栏目模型 |
$cat['_model']['title'] | 栏目模型名称 |
$cat['_model']['name'] | 栏目模型标识 |
# 指定栏目
适用范围:任意页面
// 根据栏目ID获取栏目信息
<?php $cat = MCms::getCat(1); ?>
// 根据栏目URL获取栏目信息
<?php $cat = MCms::getCatByUrl('news'); ?>
2
3
4
# 可用变量
变量 | 说明 |
---|---|
$cat['id'] | 栏目ID |
$cat['pid'] | 父级栏目ID |
$cat['title'] | 栏目标题 |
$cat['url'] | 栏目URL |
$cat['modelId'] | 栏目模型ID |
$cat['seoTitle'] | SEO标题 |
$cat['seoDescription'] | SEO描述 |
$cat['seoKeywords'] | SEO关键词 |
$cat['icon'] | 栏目图标 |
$cat['cover'] | 栏目封面 |
$cat['subTitle'] | 栏目子标题 |
$cat['bannerBg'] | 栏目Banner背景 |
$cat['_model'] | 栏目模型 |
$cat['_model']['title'] | 栏目模型名称 |
$cat['_model']['name'] | 栏目模型标识 |
# 内容列表
适用范围:列表页
循环输入内容列表
@foreach($records as $record)
<a href="{{$record['_url']}}">{{$record['title']}}</a>
@endforeach
2
3
# 可用变量
# 分页条
适用范围:列表页
输入分页条
<?php $pageHtml ?>
当前列表分页HTML数据
<div class="pages">
<a href="?page=1">1</a>
<span>2</span>
<a href="?page=1">3</a>
</div>
2
3
4
5
6
如果使用系统完整分页条,则以上样式名称在输出的HTML代码中都带,可以直接使用对应名称在自己的css中定义具体样式即可。
# 可用变量
变量 | 说明 |
---|---|
$page | 当前页数 |
$pageSize | 分页大小 |
$pageNextUrl | 下一页URL |
$pagePrevUrl | 上一页URL |
# 内容详情
适用范围:内容页
标题:{{ $record['title'] }}
内容:{{ $record['content'] }}
2
# 可用变量
# 指定内容
适用范围:任意页面
// 根据ID获取内容
<?php $record = \MCms::getContent(1); ?>
2
# 可用变量
# 留言本
适用范围:所有页面
<form action="{{ modstart_web_url('cms/form/submit',['cat'=>7]) }}"
method="post" data-ajax-form>
手机:<input type="text" name="phone" >
姓名:<input type="text" name="name" >
内容:<input type="text" name="content" >
<button type="submit">提交</button>
</form>
2
3
4
5
6
7
留言本使用了通用模型 id = 7 的内容模型,如过手动调整过内容模型,请自行修改代码。
# 表单详情
适用范围:表单页
@foreach($cat['_model']['_customFields'] as $customField)
@if($customField['fieldType']=='text')
<!-- 文本字段 -->
<div>
{{$customField['title']}}
:
<input class="form" type="text" name="{{$customField['name']}}" />
</div>
@else
<!-- 其他字段 -->
@endif
@endforeach
2
3
4
5
6
7
8
9
10
11
12
具体可参照 通用表单模板 (opens new window)
# 可用变量
变量 | 说明 |
---|---|
$customField['modelId'] | 模型ID |
$customField['title'] | 字段名 |
$customField['name'] | 字段 |
$customField['fieldType'] | 字段类型 |
$customField['fieldData'] | 字段数据 |
$customField['isRequired'] | 必填 |
$customField['placeholder'] | 输入提示 |
# 用户
适用范围:所有页面
@if(\Module\Member\Auth\MemberUser::isLogin())
欢迎,{{$_memberUser['username']}}
@else
请登录
@endif
2
3
4
5
# 可用变量
变量 | 说明 |
---|---|
$_memberUserId | 用户ID,可以判断该变量是否为空来判断用户是否登录 |
$_memberUser['id'] | 用户ID |
$_memberUser['username'] | 用户名 |
$_memberUser['avatar'] | 头像 |
# 可用地址
地址 | 说明 |
---|---|
/login | 登录页面 |
/register | 注册页面 |
/member | 用户中心 |
更多使用可参考 Member (opens new window)
# 字段显示
适用范围:任意页面
# 单行文本、多行文本、单选按钮、下拉选择、日期、日期时间、文件、视频、音频
{{ $record['_data']['xxx'] }}
# 标签显示
@foreach($record['_tag'] as $tag)
{{ $tag }}
@endforeach
2
3
# 多选按钮
@foreach($record['_data']['xxx'] as $item)
{{ $item }}
@endforeach
2
3
# 图片
<img src="{{ $record['_data']['xxx'] }}" />
# 多图
@foreach($record['_data']['xxx'] as $item)
<img src="{{ $item }}" />
@endforeach
2
3
# 富文本
<?php $record['_data']['xxx'] ?>
# 手机主题
主题默认主题为响应式主题。
电脑端主题默认路径为 module/Xxx/View/pc/cms/
中,如需要启用独立的手机端,只需要将所有视图文件按照该相同的结构放置在 module/Xxx/View/m/cms/
中即可。
# API接口
# CMS操作方法
# 获取内容 getContent
根据内容ID获取单条内容信息
<?php $record = \MCms::getContent($recordId); ?>
可用变量
# 列表 listContentByCatUrl
根据栏目URL获取内容列表(不包含副表字段),包含子栏目
<?php $records = \MCms::listContentByCatUrl($catUrl, $page = 1, $pageSize = 10, $option = []); ?>
可用变量
# 列表 listContentByCat
根据栏目ID获取内容列表(不包含副表字段),包含子栏目
<?php $records = \MCms::listContentByCat($catId, $page = 1, $pageSize = 10, $option = []); ?>
可用变量
# 列表 pageContentByCat
根据栏目ID获取内容列表(不包含副表字段),包含子栏目
<?php $paginateData = \MCms::pageContentByCat($catId, $page = 1, $pageSize = 10, $option = []) ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>
2
3
基本属性变量
变量 | 说明 |
---|---|
$total | 总页数 |
内容记录变量
# 列表 pageContentByCatUrl
根据栏目URL获取内容列表(不包含副表字段),包含子栏目
<?php $paginateData = \MCms::pageContentByCatUrl($catUrl, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>
2
3
基本属性变量
变量 | 说明 |
---|---|
$total | 总页数 |
内容记录变量
# 列表 pageContentWithDataByCat
根据栏目ID获取内容列表(包含副表字段),不包含子栏目
<?php $paginateData = \MCms::pageContentWithDataByCat($catId, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>
2
3
基本属性变量
变量 | 说明 |
---|---|
$total | 总页数 |
内容记录变量
# 列表 pageContentWithDataByCatUrl
根据栏目URL获取内容列表(包含副表字段),不包含子栏目
<?php $paginateData = \MCms::pageContentWithDataByCatUrl($catUrl, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>
2
3
基本属性变量
变量 | 说明 |
---|---|
$total | 总页数 |
内容记录变量
# 列表 pageContentWithDataByCats
根据多个栏目ID获取内容列表(包含副表字段),不包含子栏目,多个栏目必须为相同的模型
<?php $paginateData = \MCms::pageContentWithDataByCats($catIds, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>
2
3
基本属性变量
变量 | 说明 |
---|---|
$total | 总页数 |
内容记录变量
# 列表 pageContentWithDataByCatsUrl
根据多个栏目URL获取列表(包含副表字段),不包含子栏目,多个栏目必须为相同的模型
<?php $paginateData = \MCms::pageContentWithDataByCatsUrl($catUrls, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>
2
3
基本属性变量
变量 | 说明 |
---|---|
$total | 总页数 |
内容记录变量
# 列表 latestContentByCat
根据栏目ID获取最新内容列表(不包含副表字段),包含子目录,
<?php $records = \MCms::latestContentByCat($catId, $limit = 10); ?>
可用变量
# 列表条件检索
列表带查询条件时,需要自定义 $option
参数,对所有列表获取方法均适用
// 精确匹配
$option = [
'where' => [
'title' => '阿里巴巴',
'source' => '网络',
],
];
// 复杂匹配
$option = [
'whereOperate'=>[
// 模糊匹配
['title','like','%阿里巴巴%'],
// 范围
['postTime','>=','2021-01-01 00:00:00'],
]
];
// 自定义排序
$option = [
'order'=>[
['id','desc']
]
];
// 列表默认按照以下排序
$option = [
'order'=>[
['isTop', 'desc'],
['isRecommend', 'desc'],
['postTime', 'desc'],
]
];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 栏目上一条内容 prevContent
获取上一条记录
<?php $record = \MCms::prevContent($catId, $recordId); ?>
可用变量
# 栏目下一条内容 nextContent
获取下一条记录
<?php $record = \MCms::nextContent($catId, $recordId); ?>
可用变量