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这个类了.这个类给了我们临时管理图片内存的能力. 前言 假如说我们要写一个通用的网络框架,除了必备的请求数据的方法外,必须提供一个下载器来 ...
随机推荐
- Hadoop 中的 ArrayWritable
虽然ArrayWritable不是接口,但貌似必须要子类去extends ArrayWritable,不能直接用ArrayWriable 否则会报下面的错误?(不是很确定) java.lang.Exc ...
- Python中运算符与while初识
一.运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.位运算: 注: ~ 举例: ~5 = -6 解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = ...
- lua学习笔记(六)
(2012-04-12 23:32:35) 转载▼ 函数 定义 function mytest(a,b,c) <函数体> end mytest = function( ...
- linux设备驱动的分层设计思想--input子系统及RTC
转自:linux设备驱动的分层设计思想 宋宝华 http://blog.csdn.net/21cnbao/article/details/5615493 1.1 设备驱动核心层和例化 在面向对象的程序 ...
- 浅析Apache中RewriteCond规则参数的详细介绍
RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始.基础的功能,为了方 ...
- Elasticsearch5.X IN Windows 10 系列文章(1)
系统类型:windows10 64位家庭版 ElasticSearch版本: 5.5.1 (最新稳定版为5.5.2),由于用到IK中文分词插件,最新版本没有5.5.2 ,所以使用5.5.1 日期:2 ...
- redis php 执行命令时,单引号和双引号的区别。
#今天遇到一个坑爹的问题,写成单引号就不行,被原样输出了. /** *判断key是否存在 */ function exists_key($key){ return $this->cmd('EXI ...
- 002android初级篇之ViewPager及PagerSlidingTabStrip listview的使用
002android初级篇之ViewPager及PagerSlidingTabStrip listview的使用 ViewPager ViewPager类直接继承了ViewGroup类,所有它是一个容 ...
- Pell方程(求形如x*x-d*y*y=1的通解。)
佩尔方程x*x-d*y*y=1,当d不为完全平方数时,有无数个解,并且知道一个解可以推其他解. 如果d为完全平方数时,可知佩尔方程无解. 假设(x0,y0)是最小正整数解. 则: xn=xn-1*x0 ...
- POJ1942
Paths on a Grid Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 24236 Accepted: 6006 ...