3.4. CMS主题教程

未匹配的标注

CMS主题教程

快速创建主题

安装模块开发助手

模块开发助手可以极大效率的提高模块开发效率,在后台安装 模块开发助手

创建主题模块

使用 模块开发助手 可以快速的创建主题主题模块。

通过 系统管理 → 模块开发助手 → 新建CMS主题模块 可以完成主题模块的快速创建。

完成主题模块代码开发

第二步会根据填写的主题模块基本信息完成模块的创建,并且生成一些示例代码,通过修改和完善模块代码,完成模块的功能开发

模块示例代码

主题模块的开发请参照 CmsThemeDemo,该示例中涵盖了主题模块开发的示例。

开发示例程序会不断更新,请随时查看最新的开发示例程序。

模板开发语法

主题使用了 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') }}

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') }}

导航

轮播图片

友情链接

站点地图

当前栏目

适用范围:在列表页或详情页使用

可用变量

变量 说明
$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'); ?>

可用变量

变量 说明
$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

可用变量

分页条

适用范围:列表页

输入分页条

<?php $pageHtml ?>

当前列表分页HTML数据


<div class="pages">
    <a href="?page=1">1</a>
    <span>2</span>
    <a href="?page=1">3</a>
</div>

如果使用系统完整分页条,则以上样式名称在输出的HTML代码中都带,可以直接使用对应名称在自己的css中定义具体样式即可。

可用变量

变量 说明
$page 当前页数
$pageSize 分页大小
$pageNextUrl 下一页URL
$pagePrevUrl 上一页URL

内容详情

适用范围:内容页

标题:{{ $record['title'] }}
内容:{{ $record['content'] }}

可用变量

指定内容

适用范围:任意页面

// 根据ID获取内容
<?php $record = \MCms::get(1); ?>

可用变量

留言本

适用范围:所有页面

<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>

留言本使用了通用模型 id = 7 的内容模型,如过手动调整过内容模型,请自行修改代码。

表单详情

适用范围:表单页

@foreach($cat['_model']['_customFields'] as $customField)
    @if($customField['fieldType']==\Module\Cms\Type\CmsModelFieldType::TEXT)
        <!-- 文本字段 -->
        <div>
            {{$customField['title']}}
            :
            <input class="form" type="text" name="{{$customField['name']}}" />
        </div>
    @else
        <!-- 其他字段 -->
    @endif
@endforeach

具体可参照 通用表单模板

可用变量

变量 说明
$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

可用变量

变量 说明
$_memberUserId 用户ID,可以判断该变量是否为空来判断用户是否登录
$_memberUser['id'] 用户ID
$_memberUser['username'] 用户名
$_memberUser['avatar'] 头像

可用地址

地址 说明
/login 登录页面
/register 注册页面
/member 用户中心

更多使用可参考 Member

字段显示

适用范围:任意页面

单行文本、多行文本、单选按钮、下拉选择、日期、日期时间、文件、视频、音频

{{ $record['_data']['xxx'] }}

标签显示

@foreach($record['_tag'] as $tag)
    {{ $tag }}
@endforeach

多选按钮

@foreach($record['_data']['xxx'] as $item)
    {{ $item }}
@endforeach

图片

<img src="{{ $record['_data']['xxx'] }}" />

多图

@foreach($record['_data']['xxx'] as $item)
    <img src="{{ $item }}" />
@endforeach

富文本

<?php $record['_data']['xxx'] ?>

手机主题

主题默认主题为响应式主题。

电脑端主题默认路径为 module/Xxx/View/pc/cms/ 中,如需要启用独立的手机端,只需要将所有视图文件按照该相同的结构放置在 module/Xxx/View/m/cms/ 中即可。

API接口

新窗口查看接口文档

CMS操作方法

获取内容 get

根据内容ID获取单条内容信息

<?php $record = \MCms::get($recordId); ?>

可用变量

列表 listCatByUrl

根据栏目URL获取内容列表(不包含副表字段),包含子栏目

<?php $records = \MCms::listCatByUrl($catUrl, $page = 1, $pageSize = 10, $option = []); ?>

可用变量

列表 listCat

根据栏目ID获取内容列表(不包含副表字段),包含子栏目

<?php $records = \MCms::listCat($catId, $page = 1, $pageSize = 10, $option = []); ?>

可用变量

列表 pageCat

根据栏目ID获取内容列表(不包含副表字段),包含子栏目

<?php $paginateData = \MCms::pageCat($catId, $page = 1, $pageSize = 10, $option = []) ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>

基本属性变量

变量 说明
$total 总页数

内容记录变量

列表 pageCatByUrl

根据栏目URL获取内容列表(不包含副表字段),包含子栏目

<?php $paginateData = \MCms::pageCatByUrl($catUrl, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>

基本属性变量

变量 说明
$total 总页数

内容记录变量

列表 pageCatWithData

根据栏目ID获取内容列表(包含副表字段),不包含子栏目

<?php $paginateData = \MCms::pageCatWithData($catId, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>

基本属性变量

变量 说明
$total 总页数

内容记录变量

列表 pageCatWithDataByUrl

根据栏目URL获取内容列表(包含副表字段),不包含子栏目

<?php $paginateData = \MCms::pageCatWithDataByUrl($catUrl, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>

基本属性变量

变量 说明
$total 总页数

内容记录变量

列表 pageCatsWithData

根据多个栏目ID获取内容列表(包含副表字段),不包含子栏目,多个栏目必须为相同的模型

<?php $paginateData = \MCms::pageCatsWithData($catIds, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>

基本属性变量

变量 说明
$total 总页数

内容记录变量

列表 pageCatWithDataByUrl

根据多个栏目URL获取列表(包含副表字段),不包含子栏目,多个栏目必须为相同的模型

<?php $paginateData = \MCms::pageCatsWithDataByUrl($catUrls, $page = 1, $pageSize = 10, $option = []); ?>
<?php $records = $paginateData['records']; ?>
<?php $total = $paginateData['total']; ?>

基本属性变量

变量 说明
$total 总页数

内容记录变量

列表 latestCat

根据栏目ID获取最新内容列表(不包含副表字段),包含子目录,

<?php $records = \MCms::latestCat($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'],
    ]
];

栏目上一条内容 prevOne

获取上一条记录

<?php $record = \MCms::prevOne($catId, $recordId); ?>

可用变量

栏目下一条内容 nextOne

获取下一条记录

<?php $record = \MCms::nextOne($catId, $recordId); ?>

可用变量

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
发起讨论 只看当前版本


暂无话题~