二次开发

提示:文档中心正在完善中,我们将不断发布新文档,敬请期待...

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 源码入门的更多相关文章

  1. [图解tensorflow源码] 入门准备工作附常用的矩阵计算工具[转]

    [图解tensorflow源码] 入门准备工作 附常用的矩阵计算工具[转] Link: https://www.cnblogs.com/yao62995/p/5773142.html  tensorf ...

  2. Vue.js 2.0源码解析之前端渲染篇

    一.前言 Vue.js框架是目前比较火的MVVM框架之一,简单易上手的学习曲线,友好的官方文档,配套的构建工具,让Vue.js在2016大放异彩,大有赶超React之势.前不久Vue.js 2.0正式 ...

  3. Spring源码入门——DefaultBeanNameGenerator解析 转发 https://www.cnblogs.com/jason0529/p/5272265.html

    Spring源码入门——DefaultBeanNameGenerator解析   我们知道在spring中每个bean都要有一个id或者name标示每个唯一的bean,在xml中定义一个bean可以指 ...

  4. AFNetworking 3.0 源码解读 总结(干货)(下)

    承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...

  5. AFNetworking 3.0 源码解读(十一)之 UIButton/UIProgressView/UIWebView + AFNetworking

    AFNetworking的源码解读马上就结束了,这一篇应该算是倒数第二篇,下一篇会是对AFNetworking中的技术点进行总结. 前言 上一篇我们总结了 UIActivityIndicatorVie ...

  6. AFNetworking 3.0 源码解读(十)之 UIActivityIndicatorView/UIRefreshControl/UIImageView + AFNetworking

    我们应该看到过很多类似这样的例子:某个控件拥有加载网络图片的能力.但这究竟是怎么做到的呢?看完这篇文章就明白了. 前言 这篇我们会介绍 AFNetworking 中的3个UIKit中的分类.UIAct ...

  7. AFNetworking 3.0 源码解读(九)之 AFNetworkActivityIndicatorManager

    让我们的APP像艺术品一样优雅,开发工程师更像是一名匠人,不仅需要精湛的技艺,而且要有一颗匠心. 前言 AFNetworkActivityIndicatorManager 是对状态栏中网络激活那个小控 ...

  8. AFNetworking 3.0 源码解读(八)之 AFImageDownloader

    AFImageDownloader 这个类对写DownloadManager有很大的借鉴意义.在平时的开发中,当我们使用UIImageView加载一个网络上的图片时,其原理就是把图片下载下来,然后再赋 ...

  9. AFNetworking 3.0 源码解读(七)之 AFAutoPurgingImageCache

    这篇我们就要介绍AFAutoPurgingImageCache这个类了.这个类给了我们临时管理图片内存的能力. 前言 假如说我们要写一个通用的网络框架,除了必备的请求数据的方法外,必须提供一个下载器来 ...

随机推荐

  1. OSX: 命令行制作U盘Recovery HD

    使用命令行操作,非常easy,可是操作不当非常危急! 免责声明:假设操作不当造成的数据丢失,本人概不负责. 为什么? 不是有OSX恢复磁盘助理嘛?是的.假设仅仅想使用GUI的软件.能够去苹果官方站点: ...

  2. android dp 和 px 的相互转换

    在开发中,可能须要动态设置控件的大小 比如为一个gridview设置宽度: LinearLayout.LayoutParams linearParams2 = (LinearLayout.Layout ...

  3. 2d-Lidar 点云多直线拟合算法

    具体步骤: EM+GMM(高斯模糊模型) 点云分割聚类算法的实现. 基于RANSAC单帧lidar数据直线拟合算法实现. 多帧lidar数据实时直线优化算法实现. 算法实现逻辑: Struct lin ...

  4. Spring Security三种认证

    Spring Security: 1.用户名+密码认证 2.手机号+短信认证 Spring Social: 1.第三方认证, QQ登录等 Spring Security OAuth: 1.把认证之后的 ...

  5. php里面用魔术方法和匿名函数闭包函数动态的给类里面添加方法

    1.认识  __set  (在给不可访问属性赋值时,__set() 会被调用) 也就是说你再访问一个类里面没有的属性,会出发这个方法 class A{ private $aa = '11'; publ ...

  6. quartus2 13.0+modelsim联合开发环境搭建(win10)

    quartus2用于硬件设计代码的综合,检查是否有语法错误:modelsim用于对硬件设计代码进行仿真,观察波形是否与需求一致,需要编写xxx_tb.v才能仿真 一.quartus2安装见这篇文章ht ...

  7. Swift中文教程(七)--协议,扩展和泛型

    Protocols and Extensions 协议(接口)和扩展 Swift使用关键字protocol声明一个协议(接口): 类(classes),枚举(enumerations)和结构(stru ...

  8. Angular1.0 在Directive中调用Controller的方法

    Controller中定义了$scope.method = function(){} Directive中需要引入$scope http://stackoverflow.com/questions/2 ...

  9. os模块,sys模块

    # os模块 # os模块是与操作系统交互的一个接口 ''' 和工作目录相关: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径(在什么地方执行就是那个文件的路径) os ...

  10. 【BZOJ2466】[中山市选2009]树 树形DP

    [BZOJ2466][中山市选2009]树 Description 图论中的树为一个无环的无向图.给定一棵树,每个节点有一盏指示灯和一个按钮.如果节点的按扭被按了,那么该节点的灯会从熄灭变为点亮(当按 ...