CmsWing源码分析(8) 栏目
2021SC@SDUSC
栏目作为网站的条理,很重要
整个项目中有不少都是对栏目的描述,这里主要在看的是sp.js这个文件
文件位置:
基础中的基础,构造函数
使用了category_sp这个数据库中的信息
tactive为其他额外的操作,每次都会被定义,但都没有被用到的变量
module.exports = class extends think.cmswing.admin {constructor(ctx) {super(ctx); // 调用父级的 constructor 方法,并把 ctx 传递进去this.tactive = 'article';this.db = this.model('cmswing/category_sp');}
对于权限查看,分为了PC和智能手机两种情况
先来看PC中的情况
cate意为珍馐、美食,,但是这里显然是当作“栏目”的意思而存在的
当获取到的栏目id为空时,就可以直接返回错误:栏目不存在
async indexAction() {const cate_id = this.get('cate_id') || null;if (think.isEmpty(cate_id)) {const error = this.controller('cmswing/error');return error.noAction('该栏目不存在!');}
如果验证到,刚刚获取到的栏目id未被初始化,得知该用户目前没有权限查看该栏目
提示此问题
否则,获取此栏目的名称
await this.admin_priv('init', cate_id, '您没有权限查看本栏目!');const name = await this.model('cmswing/category').get_category(cate_id, 'name') || cate_id;
nav的意思或许是导航,此处应当是上级栏目
随后,获取面包屑信息,通过在category_sp这个数据库中翻找cid为本栏目ID的条目记录
而Hook是一种动态修改函数执行流程或返回结果的方法
然后得以实时展示PC单页内容
const nav = await this.model('cmswing/category').get_parent_category(cate_id);
this.assign('breadcrumb', nav);
const info = await this.db.find({where: {cid: cate_id}});
await this.hook('adminEdit', 'sp_html_pc', info.sp_html_pc, {$hook_key: 'sp_html_pc', $hook_type: '2_1'});this.meta_title = 'PC单页内容';this.assign({'navxs': true,'name': name,'info': info});
return this.display();
关于面包屑的用法:面包屑组件 — Vuetify.js
此处博客有较为详细的说明
至于手机方面
实际上并无本质区别,在此不多赘述
只是一些方法在使用时需要稍作修改
例如栏目ID的验证
if (think.isEmpty(cate_id)) {const error = this.controller('common/error');return error.noAction('该栏目不存在!');
以及很没存在意义的,网页标题的内容
this.meta_title = '手机单页内容';
最后,对于更新栏目的操作
与之前在前几篇文章中论述的角色、会员组的方法都几乎一样
其中await this.admin_priv('edit', data.cid)是在验证权限
能够成功修改数据库中的条目,就返回一个“编辑成功”
async updateAction() {const data = this.post();await this.admin_priv('edit', data.cid);const isup = await this.db.thenAdd(data, {cid: data.cid});if (isup.type == 'exist') {await this.db.update(data, {where: {cid: data.cid}});}return this.success({name: '编辑成功!'});}
CmsWing源码分析(8) 栏目相关推荐
- 01、JUL日志(JDK自带日志框架,包含源码分析)
文章目录 前言 一.JUL架构介绍 1.1.认识不同组件 1.2.Logger 1.3.Handler 二.输出日志信息 三.自定义日志级别配置 3.1.认识Level类 3.2.输出不同等级日志 3 ...
- uboot源码分析(基于S5PV210)之启动第一阶段
目录 一.start.S引入 1.u-boot.lds中找到start.S入口 2.SourceInsight中如何找到文件 3.SI中找文件技巧 二.start.S解析 1.不简单的头文件包含 2. ...
- 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...
- SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...
- SpringBoot-web开发(二): 页面和图标定制(源码分析)
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) 目录 一.首页 1. 源码分析 2. 访问首页测试 二.动态页面 1. 动态资源目录t ...
- SpringBoot-web开发(一): 静态资源的导入(源码分析)
目录 方式一:通过WebJars 1. 什么是webjars? 2. webjars的使用 3. webjars结构 4. 解析源码 5. 测试访问 方式二:放入静态资源目录 1. 源码分析 2. 测 ...
- Yolov3Yolov4网络结构与源码分析
Yolov3&Yolov4网络结构与源码分析 从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗. 文章目录 论文汇总 ...
- ViewGroup的Touch事件分发(源码分析)
Android中Touch事件的分发又分为View和ViewGroup的事件分发,View的touch事件分发相对比较简单,可参考 View的Touch事件分发(一.初步了解) View的Touch事 ...
- View的Touch事件分发(二.源码分析)
Android中Touch事件的分发又分为View和ViewGroup的事件分发,先来看简单的View的touch事件分发. 主要分析View的dispatchTouchEvent()方法和onTou ...
最新文章
- 科技竞赛:阿广带大家免费使用GPU打比赛,普通人也有机会拿奖金!
- 转:MySQL索引原理及慢查询优化
- 小学计算机课计划,小学信息技术教学工作计划
- 互联网下半场的角逐,玩转轻资产的大数据服务 | 阿里云栖开发者沙龙大数据专场(北京站)干货集锦...
- VB6实现的自动停靠窗体
- easyui tab页面关闭根据回调函数刷新父tab页
- python训练过程是什么_学了这么久,你知道Python机器学习全流程是怎样的么?
- 智慧档案库房库房一体化安全管控平台方案【转载】
- Android Studio报错提示:Excepted resource of type color
- 如何获取filecoin_分析:如何捕获Filecoin的价值?
- MySQL-V5.7 压缩包版安装教程
- 维汉在线翻译电脑版_支持汉语维吾尔语互译_维文翻译汉语和维语学习
- FFmpeg的HEVC解码器源代码简单分析:解码器主干部分
- C++ 数组作为参数传入函数 int sum_arr(int arr[], int n)
- CT图像的三维表面重建
- ReactNative开发之在原生页面调用rn控件
- c语言中的二目运算符,C语言中的三目运算符是什么
- pe不认服务器硬盘,u盘装系统进入pe后不认硬盘怎么办
- [QMT]09-下载历史行情数据到本地
- 电子邮箱注册格式是什么?电子邮箱格式怎么写?
热门文章
- 7-55 吉老师的回归 (15 分)
- 后端开发——Flask框架从入门到入坟(终章)
- 《C++程序设计语言》5.9_11输入读一系列的单词,使用quit作为输入的结束单词
- 无比强大 检查、恢复Windows还有奇招
- 原生JavaScript实现video播放器中播放/暂停/快放/慢放/慢动作功能
- 麦咖啡McAfee的规则设置
- Android 代码混淆 包名被混淆 主工程二次混淆 一站解决你的混淆
- 【已解决】IE无法上网、有道云PC客户端无连接
- python位置参数错误_python-2.7 – python:组合位置和可选参数时argparse抛出值错误...
- 用cygwin从本地向ubuntu某路径下传文件时Permission denied解决方法