用pageadmin cms系统进行网站制作的经验总结
我所在的公司是一个大型的国企集团,经常要制作大大小小的网站,活动专题,集团下属,部分分站等等,之前一直内部完成,悲剧的是内部开发人员技术比较残,做出来的后台感觉惨不忍睹,因为后台太简单,所以制作新网站效率非常低,这时候迫切需要采购一个专业的CMS系统来替代,
当初选择pageadmin做网站是经过深思熟虑,在选cms之前研究过国内主流的几大cms系统:pageadmin、织梦、帝国、phpcms、wp等等,最后还是选择了pageadmin,并不是功能多强大,其实cms功能几乎大同小异,该有的都有,不该有的那就得定制了。
选择pageadmin主要由有两点:安全性和技术栈。
安全性这块做得不错,过安全等保的时候安全检测几乎是满分,然后就是技术栈,很多cms框架都是jquery,这里不是说jquery不行,只是前端的发展到现在,vue,react,Angular这些mvvm框架已经逐步取代了jquery,研究了那么多cms,也就pageadmin采用了vue这种新技术,其他的全都是jquery框架,就这一点,我认为一个公司能不断保持最新技术栈改进,从侧面就印证了这个公司对待产品的态度,废话有点多,下面就说我们采用pageadmin时候的一些坑。
1、模板中获取数据库中字段时,字段的第一个字母要大写,不管字段名是不是大写。
@foreach (var item in Html.InfoDataList(new{Table="news",ShowNumber=10}))
{
var title = item.Title; //读取标题字段,注意字段第一个字符要大写,也可以直接在html中写@(item.Title)
<span>@title</title>
}
这段代码我想搞前端的都大致能看懂,就是一个循环读取,title是news表的一个字段,循环读取时候一定要大写,如果你写成item.title,不好意思肯定报错了。
如果你在后台给news表添加了一个字段,比如作者字段:author,那么调用时候一定要按下面方式调用。
var author = item.Author
我感觉pageadmin为了调用的的统一性,统一大写了,所以大家后台添加自定义字段时候,最好用驼峰式命名,比如创建日期字段可以用createDate,而不要用create-date或create_date这种方式,要不搞前端的调用起来会感觉很奇怪,不符合标准。
2、网站不用设置默认文档,但是.NetFrameWork一定要安装4.5以上版本。
这个我刚开始也无法理解,之前也配置过很多网站,也用过很多cms,基本都会有一个默认主页,比如index.html,default.php类似页面,但是pageadmin根目录下就一个配置文件,后来网上看了一下mvc介绍,大致明白了,这个模式开发的系统对NetFrameWork要求比较高,如果服务器是win7的,必须去微软下载.NetFrameWork4.6版本才能运行,否则会报:HTTP 错误 403.14 - Forbidden 这个错误,所以大家如果出现这个错误,不用你设置什么主页,那基本就是NetFrameWork的版本低了。
3、公共模板文件要放在templates/模板目录/views/shared目录下。
做网站模板时候,可以把一些公共地方提出来,比如顶部,底部,侧边栏等等,凡是有共用的地方都可以把html提出来放到shared目录下,一定要放这里,后缀必须改成cshtml,这个和我们之前模板经常做成html后缀有点区别,比如底部公用文件:footer.cshtml。
在其他页面可以采用下面方式加载:
@Html.Partial("Footer")
4、重装大法。
之前在另外一台电脑上安装过pageadmin系统了,然后把项目复制到新服务器后,死活就不能正常运行,因为pageadmin安装的参数不一样,所以需要重新安装,把Web.config中的这段的value改为空值即可。
<add key="InstallEnabled" value="" />
这个方法对于很多情况很好用,比如后台不记得了,后台初始密码不记得,更换了新域名打不开了等等,都可以用这个方式解决。
上面是我本人使用pageadmin时候的一些总结,希望对大家有点用处。
- Python基础原理:FP-growth算法的构建
- MFC中如何画带实心箭头的直线
- 非域环境下使用证书设置数据库镜像
- velocity模板引擎学习(3)-异常处理
- Oracle Coherence应用部署到Jboss EAP 6.x 时 NoClassDefFoundError: sun/rmi/server/MarshalOutputStream 的解决办法
- 推荐Visual Studio 2010新功能-IntelliTrace(智能跟踪)
- 搭建consul 集群
- Windows更新清理工具 (winsxs 清理工具)
- Windows NLB搭配IIS的ARR搭建高可用环境
- hadoop: hbase1.0.1.1 伪分布安装
- InstallShield 脚本语言学习笔记
- C++服务器开发之笔记三
- 分布式服务注册和发现consul 简要介绍
- ZooKeeper 笔记(3) 实战应用之【统一配置管理】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 飞桨Tracking目标跟踪库开源!涵盖业界主流的VOT算法,精准检测动态目标轨迹
- 基于react的组件库主题设计方案
- Xilinx MPSoC PS/PL之间的数据交互和外设设计
- 基于Res-Unet网络实现肝脏肿瘤分割任务
- golang判断map中key是否存在的方法
- 迁移实战:一次AntDB(基于pgxl分布式架构的数据库)数据库迁移经验分享
- 看完这篇文章,99%的人都会使用Mysql Explain工具
- 浅析MySQL存储引擎序列属性
- 详述MySQL Using intersect交集算法
- 案例:强制开库遭遇ORA-16433的处理过程
- 叮~AutoML自动化机器学习入门指南,来了
- 注意:ORACLE 11G ADG RAC 这个情况下并不能高可用
- Nginx转发指向数据库端口并对外开放访问权限
- Python手写了 35 种可解释的特征工程方法
- Geant4--G4ParticleGun定义射线源的发射能谱