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) 栏目相关推荐

  1. 01、JUL日志(JDK自带日志框架,包含源码分析)

    文章目录 前言 一.JUL架构介绍 1.1.认识不同组件 1.2.Logger 1.3.Handler 二.输出日志信息 三.自定义日志级别配置 3.1.认识Level类 3.2.输出不同等级日志 3 ...

  2. uboot源码分析(基于S5PV210)之启动第一阶段

    目录 一.start.S引入 1.u-boot.lds中找到start.S入口 2.SourceInsight中如何找到文件 3.SI中找文件技巧 二.start.S解析 1.不简单的头文件包含 2. ...

  3. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  4. SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...

  5. SpringBoot-web开发(二): 页面和图标定制(源码分析)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) 目录 一.首页 1. 源码分析 2. 访问首页测试 二.动态页面 1. 动态资源目录t ...

  6. SpringBoot-web开发(一): 静态资源的导入(源码分析)

    目录 方式一:通过WebJars 1. 什么是webjars? 2. webjars的使用 3. webjars结构 4. 解析源码 5. 测试访问 方式二:放入静态资源目录 1. 源码分析 2. 测 ...

  7. Yolov3Yolov4网络结构与源码分析

    Yolov3&Yolov4网络结构与源码分析 从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗. 文章目录 论文汇总 ...

  8. ViewGroup的Touch事件分发(源码分析)

    Android中Touch事件的分发又分为View和ViewGroup的事件分发,View的touch事件分发相对比较简单,可参考 View的Touch事件分发(一.初步了解) View的Touch事 ...

  9. View的Touch事件分发(二.源码分析)

    Android中Touch事件的分发又分为View和ViewGroup的事件分发,先来看简单的View的touch事件分发. 主要分析View的dispatchTouchEvent()方法和onTou ...

最新文章

  1. 科技竞赛:阿广带大家免费使用GPU打比赛,普通人也有机会拿奖金!
  2. 转:MySQL索引原理及慢查询优化
  3. 小学计算机课计划,小学信息技术教学工作计划
  4. 互联网下半场的角逐,玩转轻资产的大数据服务 | 阿里云栖开发者沙龙大数据专场(北京站)干货集锦...
  5. VB6实现的自动停靠窗体
  6. easyui tab页面关闭根据回调函数刷新父tab页
  7. python训练过程是什么_学了这么久,你知道Python机器学习全流程是怎样的么?
  8. 智慧档案库房库房一体化安全管控平台方案【转载】
  9. Android Studio报错提示:Excepted resource of type color
  10. 如何获取filecoin_分析:如何捕获Filecoin的价值?
  11. MySQL-V5.7 压缩包版安装教程
  12. 维汉在线翻译电脑版_支持汉语维吾尔语互译_维文翻译汉语和维语学习
  13. FFmpeg的HEVC解码器源代码简单分析:解码器主干部分
  14. C++ 数组作为参数传入函数 int sum_arr(int arr[], int n)
  15. CT图像的三维表面重建
  16. ReactNative开发之在原生页面调用rn控件
  17. c语言中的二目运算符,C语言中的三目运算符是什么
  18. pe不认服务器硬盘,u盘装系统进入pe后不认硬盘怎么办
  19. [QMT]09-下载历史行情数据到本地
  20. 电子邮箱注册格式是什么?电子邮箱格式怎么写?

热门文章

  1. 7-55 吉老师的回归 (15 分)
  2. 后端开发——Flask框架从入门到入坟(终章)
  3. 《C++程序设计语言》5.9_11输入读一系列的单词,使用quit作为输入的结束单词
  4. 无比强大 检查、恢复Windows还有奇招
  5. 原生JavaScript实现video播放器中播放/暂停/快放/慢放/慢动作功能
  6. 麦咖啡McAfee的规则设置
  7. Android 代码混淆 包名被混淆 主工程二次混淆 一站解决你的混淆
  8. 【已解决】IE无法上网、有道云PC客户端无连接
  9. python位置参数错误_python-2.7 – python:组合位置和可选参数时argparse抛出值错误...
  10. 用cygwin从本地向ubuntu某路径下传文件时Permission denied解决方法