SiteServer CMS 5.0 源码入门
二次开发
提示:文档中心正在完善中,我们将不断发布新文档,敬请期待...
SiteServer CMS 5.0 源码入门
一、准备开发环境
想学习SiteServer CMS的或者想利用SiteServer CMS源码进行项目定制开发的程序员,需要提前准备好开发环境。具体要求如下:
1、.net framework 4.5.2或以上版本;
2、Visual Studio 2015或以上版本;
3、SQLServer 2008及以上版本或MySql 5.0 及以上版本;
4、NodeJS 最新版(可选);
说明:如果需要修改用户中心的前台页面代码,或者需要重新制作安装包或升级包,才需要安装NodeJS。
二、获取代码
官方在GitHub上提供的源码,地址为:https://github.com/siteserver/cms

通过Git命令或者从上图页面直接下载最新源码。
产品使用文档或开发文档,请关注官方的开发者中心:http://developer.siteserver.cn/

三、源码结构初析
1、解压源码压缩包

注意:如果只修改SiteServer CMS后台功能或后台界面的话,只需要关注source文件夹里的代码即可。
2、Visual Studio 打开C#代码

注意:
SiteServer.API 项目对应源代码解压出来的文件夹是source文件夹下的SiteServer.Web文件夹,并没有一个名叫SiteServer.API的文件夹。
SiteServer.API 并不是提供给第三方系统与SiteServer数据交换用的,而是SiteServer系统内部使用的一些API接口,比如用户中心现在前后端完全分离,前端用ReactJS来实现,和后端的数据交换就是通过SiteServer.API来实现的。
SiteServer.Plugins才刚刚开始,标准格式还没完全定下来,现在官方已经开发了第一个插件:阿里云存储插件,即站点文件可以支持云存储。具体源码在:https://github.com/siteserver/Plugin.Oss
四、安装SiteServer CMS
1、新建空数据库,设为启动项目
在Sql Server Management Studio中新建名为cms5.0的空数据库。在Visual Studio中把SiteServer.API设置为启动项目。

2、安装SiteServer CMS
如果是下载完源码第一次运行程序,则会需要进入安装SiteServer CMS的流程。具体是在Visual Studio中按F5开始调试,出现如下空白界面:

然后在浏览器地址中后面加入/siteserver,再回车,即地址变成:
http://localhost:58059/siteserver,则会出现如下安装界面:

按界面提示点下一步即可完成安装。具体安装说明可参考:http://docs.siteserver.cn/getting-started/index.html
安装完成之后点击进入后台管理,需要新建站点,如下图:

输入站点名称即可以创建一个空的新站点,并自动进入后台站点管理界面:

五、开始修改调试源代码
经过前面的操作,我们已经把SiteServer CMS运行起来了,并已经经入了调试状态。现在我们就以一个具体例子来演示一下如何进行代码修改并调试。
任务:把下图中的红框内容部分改成“欢迎使用SiteServer CMS 管理后台”

1、找到对应前台页面文件
运行程序,登录后台,进入到主界面。然后在红框位置按鼠标右键,点击“查看框架源代码”,弹出如下图:

通过上图可以看到,本页面路径是在siteserver文件夹里的pageRight.aspx文件,好对应源代码解压出来的位置就是:source\SiteServer.Web\SiteServer\pageRight.aspx。此时我们可以通过Visual Studio、Visual Studio Code或Atom编辑器打开此文件:

通过上图两个黄框,我们可以找到两个重要信息:
一个是控制pageRight.aspx文件业务逻辑的CS代码文件类:SiteServer.BackgroundPages.PageRight;
另一个是显示欢迎信息的asp.net服务器控件ID为LtlWelcome。
2、找到前台页面对应的后端c#代码文件
通过前一步找到控制pageRight.aspx文件业务逻辑的CS代码文件类是SiteServer.BackgroundPages.PageRight,这很清楚就是在SiteServer.BackgroundPages项目中,在Visual Studio中很容易就找到PageRight.cs文件:

在Visual Studio中打开PageRight.cs文件:

很清楚就看到了控制显示欢迎信息的服务器控件LtlWelcome。
3、修改并调试代码
在修改代码之前需要停止调试,然后把代码进行如下修改,并设置断点(F9),然后启动F5运行程序并进入调试状态,登录之后会是这样:

点击继续之后,出来的结果就是这样:

至此,我们就完成了开始提出的修改任务,并也能断点进行调试。
SiteServer CMS 5.0 源码入门的更多相关文章
- [图解tensorflow源码] 入门准备工作附常用的矩阵计算工具[转]
[图解tensorflow源码] 入门准备工作 附常用的矩阵计算工具[转] Link: https://www.cnblogs.com/yao62995/p/5773142.html tensorf ...
- Vue.js 2.0源码解析之前端渲染篇
一.前言 Vue.js框架是目前比较火的MVVM框架之一,简单易上手的学习曲线,友好的官方文档,配套的构建工具,让Vue.js在2016大放异彩,大有赶超React之势.前不久Vue.js 2.0正式 ...
- Spring源码入门——DefaultBeanNameGenerator解析 转发 https://www.cnblogs.com/jason0529/p/5272265.html
Spring源码入门——DefaultBeanNameGenerator解析 我们知道在spring中每个bean都要有一个id或者name标示每个唯一的bean,在xml中定义一个bean可以指 ...
- AFNetworking 3.0 源码解读 总结(干货)(下)
承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...
- AFNetworking 3.0 源码解读(十一)之 UIButton/UIProgressView/UIWebView + AFNetworking
AFNetworking的源码解读马上就结束了,这一篇应该算是倒数第二篇,下一篇会是对AFNetworking中的技术点进行总结. 前言 上一篇我们总结了 UIActivityIndicatorVie ...
- AFNetworking 3.0 源码解读(十)之 UIActivityIndicatorView/UIRefreshControl/UIImageView + AFNetworking
我们应该看到过很多类似这样的例子:某个控件拥有加载网络图片的能力.但这究竟是怎么做到的呢?看完这篇文章就明白了. 前言 这篇我们会介绍 AFNetworking 中的3个UIKit中的分类.UIAct ...
- AFNetworking 3.0 源码解读(九)之 AFNetworkActivityIndicatorManager
让我们的APP像艺术品一样优雅,开发工程师更像是一名匠人,不仅需要精湛的技艺,而且要有一颗匠心. 前言 AFNetworkActivityIndicatorManager 是对状态栏中网络激活那个小控 ...
- AFNetworking 3.0 源码解读(八)之 AFImageDownloader
AFImageDownloader 这个类对写DownloadManager有很大的借鉴意义.在平时的开发中,当我们使用UIImageView加载一个网络上的图片时,其原理就是把图片下载下来,然后再赋 ...
- AFNetworking 3.0 源码解读(七)之 AFAutoPurgingImageCache
这篇我们就要介绍AFAutoPurgingImageCache这个类了.这个类给了我们临时管理图片内存的能力. 前言 假如说我们要写一个通用的网络框架,除了必备的请求数据的方法外,必须提供一个下载器来 ...
随机推荐
- nginx日志统计流量
cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}' $10是nginx字段bytes_sent 字段,根据自己的日志格式修改 ...
- memcache原理和实际应用
Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的.眼下全世界不少人使用这个缓存项目来构建自己大负载的站点,来分担数据库的压力. 它能够应 ...
- Android Studio 默认的快捷键
参考资料: 1.http://stormzhang.com/devtools/2014/12/09/android-studio-tutorial3/ Action Mac OSX Win/Linux ...
- 图论——Dijkstra+prim算法涉及到的优先队列(二叉堆)
[0]README 0.1)为什么有这篇文章?因为 Dijkstra算法的优先队列实现 涉及到了一种新的数据结构,即优先队列(二叉堆)的操作需要更改以适应这种新的数据结构,我们暂且吧它定义为Dista ...
- ios 深入讲解iOS键盘一:控制键盘隐藏显示
在iOS的开发中,我们一般使用UITextField.UITextView处理文字输入等操作,大部分情况下我们只需要一两行代码去手动管理键盘的显示隐藏:让UITextField或UITextView成 ...
- C语言基础知识【函数】
C 函数1.函数是一组一起执行一个任务的语句.每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数.您可以把代码划分到不同的函数中.如何划分代码到不同的函数 ...
- C#获取当前时间的各种格式
C#获取当前时间的各种格式 DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now; dt.ToString();//2005 ...
- MySql存储过程及MySql常用流程控制语法
/* 该代码是创建了一个名叫"p4"的存储过程并设置了s1,s2,s3两个int型一个varchar型参数,还可以是其他数据类型,内部创建了x1,x2两个变量 DELIMITER是 ...
- Spring标签@Aspect-实现面向方向编程(@Aspect的多数据源自动加载)——SKY
从Spring 2.0开始,可以使用基于schema及@AspectJ的方式来实现AOP.由于@Aspect是基于注解的,因此要求支持注解的5.0版本以上的JDK. 环境要求: 1. mybit ...
- WCF基础之数据协定
数据协定最重要的当然就是DataContract和DataMember.这两个特性能应用到类.结构和枚举.这个两个特性跟服务契约的特点是一样的,只有被DataContract标记的类和类中被标记Dat ...