Git Product home page Git Product logo

siteserver / cms Goto Github PK

View Code? Open in Web Editor NEW
3.6K 215.0 1.2K 181.36 MB

SS CMS 基于 .NET Core,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。

Home Page: https://sscms.com

License: GNU Affero General Public License v3.0

JavaScript 66.71% HTML 7.40% CSS 1.47% C# 24.42% Dockerfile 0.01%
cms siteserver content-management-system c-sharp siteserver-cms dot-net sscms ss-cms

cms's Introduction

SSCMS



SSCMS 基于 .NET Core,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。

版本

项目发布的正式版本存放在 master 分支

编译状态 版本号 发布日期
Build status Nuget version master last commit

开发文档

《SSCMS 使用指南》

《SSCMS 系统更新》

《SSCMS STL 语言》

《SSCMS 插件开发》

《SSCMS 官方插件》

《SSCMS 命令行》

《SSCMS REST API》

《SSCMS 数据结构》

SSCMS 源码结构

│ sscms.sln                  Visual Studio 项目文件
│
├─docker                      Docker 配置文件
├─src/Datory                  数据库基础类
├─src/SSCMS                   接口、基础类
├─src/SSCMS.Cli               命令行工具
├─src/SSCMS.Core              CMS核心代码
├─src/SSCMS.Web               CMS App
└─tests                       测试

发布跨平台版本

Window(x64):

npm install
npm run build-win-x64
dotnet build ./build-win-x64/build.sln -c Release
dotnet publish ./build-win-x64/src/SSCMS.Cli/SSCMS.Cli.csproj -r win-x64 -c Release -o ./publish/sscms-win-x64
dotnet publish ./build-win-x64/src/SSCMS.Web/SSCMS.Web.csproj -r win-x64 -c Release -o ./publish/sscms-win-x64
npm run copy-win-x64

Note: 进入文件夹 ./publish/sscms-win-x64 获取最终发布版本

Window(x32):

npm install
npm run build-win-x32
dotnet build ./build-win-x32/build.sln -c Release
dotnet publish ./build-win-x32/src/SSCMS.Cli/SSCMS.Cli.csproj -r win-x32 -c Release -o ./publish/sscms-win-x32
dotnet publish ./build-win-x32/src/SSCMS.Web/SSCMS.Web.csproj -r win-x32 -c Release -o ./publish/sscms-win-x32
npm run copy-win-x32

Note: 进入文件夹 ./publish/sscms-win-x32 获取最终发布版本

Linux(x64):

npm install
npm run build-linux-x64
dotnet build ./build-linux-x64/build.sln -c Release
dotnet publish ./build-linux-x64/src/SSCMS.Cli/SSCMS.Cli.csproj -r linux-x64 -c Release -o ./publish/sscms-linux-x64
dotnet publish ./build-linux-x64/src/SSCMS.Web/SSCMS.Web.csproj -r linux-x64 -c Release -o ./publish/sscms-linux-x64
npm run copy-linux-x64

Note: 进入文件夹 ./publish/sscms-linux-x64 获取最终发布版本

Linux(arm64):

npm install
npm run build-linux-arm64
dotnet build ./build-linux-arm64/build.sln -c Release
dotnet publish ./build-linux-arm64/src/SSCMS.Cli/SSCMS.Cli.csproj -r linux-arm64 -c Release -o ./publish/sscms-linux-arm64
dotnet publish ./build-linux-arm64/src/SSCMS.Web/SSCMS.Web.csproj -r linux-arm64 -c Release -o ./publish/sscms-linux-arm64
npm run copy-linux-arm64

Note: 进入文件夹 ./publish/sscms-linux-arm64 获取最终发布版本

在 Docker 中运行

拉取最新版本的 SSCMS 镜像

docker pull sscms/core:latest

运行 SSCMS 容器

docker run -d \
    --name my-sscms \
    -p 80:80 \
    --restart=always \
    -v volume-sscms:/app/wwwroot \
    -e SSCMS_SECURITY_KEY=e2a3d303-ac9b-41ff-9154-930710af0845 \
    -e SSCMS_DATABASE_TYPE=SQLite \
    sscms/core

贡献代码

项目编译需要使用 Visual Studio 2022,你可以从这里下载 Visual Studio Community 2022

代码贡献有很多形式,从提交问题,撰写文档,到提交代码,我们欢迎任何形式的贡献!

系统更新

SSCMS 产品将每隔两月发布新的正式版本,我们将在每次迭代中对核心功能、文档支持、功能插件以及网站模板四个方面进行持续改进。

问题与建议

如果发现任何 BUG 以及对产品使用的问题与建议,请提交至 Github Issues 或者 Gitee Issues

关注最新动态

qrcode

特别声明

SSCMS 项目已加入 dotNET China 组织。

dotnetchina

License

GNU Affero General Public License v3.0

Copyright (C) 2003-2023 SSCMS

cms's People

Contributors

braceyx avatar codepassportgit avatar dependabot[bot] avatar lbhnrg2021 avatar player2135 avatar reynardsong avatar siteserverekun avatar sscmscom avatar starlying avatar wang11268440 avatar wxjv99 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cms's Issues

注释

代码没注释,可怜我基础差吧

栏目链接类型问题

栏目的链接设置为链接到第一条内容,栏目下有多篇内容,第一条内容状态为未审核,生成之后此栏目链接会为待审核内容的链接,应该判断一下链接到已审核的第一篇内容的链接。

siteserver.exe 多线程版本的尝试。

站点内容太多,全站生成一次耗时太长了,自行修改了一下。
原来8核心CPU只有前两个核心有运算量,现在8核全开。生成时的CPU负载从6-7%(我自己改的降低负载版本)提高到30-60%,生成时间大约降低到原来的1/5。

贴出主要部分代码
ExecutionManager.cs

/批量获取生成任务/

public static List<CreateTaskInfo> GetPendings(int count)
{
    List<CreateTaskInfo> infoList = new List<CreateTaskInfo>();
    var sqlString = SqlUtils.GetTopSqlString("siteserver_CreateTask", "ID, CreateType, PublishmentSystemID, ChannelID, ContentID, TemplateID", "ORDER BY ID", count);

    using (IDataReader reader = WebConfigUtils.Helper.ExecuteReader(WebConfigUtils.ConnectionString, CommandType.Text, sqlString))
    {
        while (reader.Read())
        {
            var i = 0;

            CreateTaskInfo info = new CreateTaskInfo(GetInt(reader, i++),
                SiteServer.CMS.Model.Enumerations.ECreateTypeUtils.GetEnumType(GetString(reader, i++)),
                GetInt(reader, i++),
                GetInt(reader, i++),
                GetInt(reader, i++),
                GetInt(reader, i));

            infoList.Add(info);
        }
        reader.Close();
    }
    return infoList;
}

/原ExecutePendingCreate函数部分中关于生成的部分单独提出来/

public static void F(CreateTaskInfo taskInfo)
{
    try
    {
        var start = DateTime.Now;
        var fso = new FileSystemObject(taskInfo.PublishmentSystemID);
        fso.Execute(taskInfo);
        var timeSpan = DateUtils.GetRelatedDateTimeString(start);
        CreateTaskManager.Instance.RemovePendingAndAddSuccessLog(taskInfo, timeSpan);
    }
    catch (Exception ex)
    {
        CreateTaskManager.Instance.RemovePendingAndAddFailureLog(taskInfo, ex);
    }
}

/修改了原 ExecutePendingCreate/

public static bool ExecutePendingCreate()
{
    try
    {
        if (!ServiceManager.IsPendingCreateTask())
        {
            return false;
        }


        while (true)
        {
            var taskInfo = CreateTaskManager.Instance.GetLastPendingTask();
            if (taskInfo == null)
            {
                ServiceManager.ClearIsPendingCreateCache();
                return true;
            }
           //并行执行
            List<CreateTaskInfo> list = GetPendings(200);
            Parallel.ForEach<CreateTaskInfo>(list, i => F(i));
        }
    }
    catch (Exception ex)
    {
        LogUtils.AddAdminLog(string.Empty, "服务组件生成失败", ex.ToString());
    }

    return false;
}

功能建议

增加全文检索
增加FTP服务器配置,把附件上传到远程文件服务器。
增加动态页开启设置以便调试模板。
增加同一页面多屏适配,开启后首页、栏目、内容页等可绑定PC和手机平板模板。
增加插件管理功能和制作规范以便与核心平台分离和独立管理。
增加数据互通,主站可以下发文章给子站,子站可上报给主站。
增加配套模板,演示网站所有功能,会员中心模板、前台PC和手机模板。

5.0版本发现Stl:SqlContents标签疑似BUG一枚

需求:需要使用SiteServer获取其它数据库中的内容,并生成HTML。
首先已经在Web.Config中定义好连接字符串,修改后的代码如下
 //<add key="IsProtectData" value="False" />
//<add key="DatabaseType" value="SqlServer" />
//<add key="ConnectionString" value="server=(local);uid=SA;pwd=ABC;database=SiteServer" />
//<add key="EIS" value="server=(local);uid=sa;pwd=ABC;database=EIS" />


使用ConnectionStringName="EIS"语句时不生效,且生成HTML后标记为 <!-- stl:sqlcontents error:对象名 '表名称' 无效。 -->,多次测试后均报此错误。

使用ConnectionString="server=(local);uid=sa;pwd=ABC;database=EIS"时可正常使用SQL语句获取内容。
但是由于第二种方式中数据库连接信息都写在模板里,安全性太低,期待能修复此问题。
感谢!!!



用户中心投稿审核问题

管理员审核用户投稿件选择终审退稿,后台显示是终审退稿状态,但是用户中心稿件管理中还是待审核状态。

siteserver.exe CPU负载太高了

Windows Server 2016 E74820 - 8核心
无生成任务时siteserver.exe的CPU占用达到了13%左右,是不是有点太高了。它在做什么工作啊?

内容编辑器问题

服务器上测试复制带图片的内容到内容编辑器,图片路径错误,图片保存到了/api/files/ueditor/upload/image目录下,导致图片不显示;本机测试显示的是站点的upload文件夹下的图片。

短信功能有60字的限制

在使用提交表单功能时,设置了短信提醒, 短信服务商是云片,短信长度有60字限制,请解决,谢谢。

第一个吃螃蟹,希望添加对于 PostgreSQL 数据库的支持。

简单浏览下代码。
后面要往跨平台方向弄的话,希望你们可以考虑 PostgreSQL 数据库。
数据层方面,可以考虑换用 EntityFramworkCore ,这个现在也支持 PostgreSQL 数据库,也支持 MySQL 数据库。这样就不用不同的数据库需要不同的访问 SQL 实现了。(不同数据库还是会有微小差异,但真的是“微小”)
应用程序构建在 ASP.Net Core 上。
这样跨平台就完美了。

stl:search机制有问题

stl:search
stl:loading等待信息</stl:loading>
stl:yes成功信息</stl:yes>
stl:no失败信息stl:no
</stl:search>

现有的是把所有信息全部输出前端,js判断显示,问题是:
当loading/yes/no包含js时都会执行,无法正确区分状态。
如果加载慢loading/yes/no所有html内容也都会出现,用户体验差。

内容无法插入视频错误解决问题

editor_config和ueditor.all.js经过修复后,再次发现添加视频后台成功前台不显示,后面奇葩的发现。视频:这个位置放视频地址进去前天奇迹般出现视频了!求解释和为什么?无法传图片上来!不知道时候能懂!

stl:search中的{request.word}不解析

功能问题:stl:search应该是只返回一种结果!现在是服务器直接返回yes、no两个子标签,在客户端用js隐藏方式处理,不合理而且局限性太大!!
比如:我在搜索不到结果后要执行自己的js,如果一起返回就会一起执行,yes、no无法去分了。

源码无法运行呀 好多错误

是步骤不对吗
解决方案需要手动添加web站点 ,
然后运行web提示SiteServe.API Global不存在
重新引用之后,又提示SiteServer.BackgroundPages下面好多文件不存在

我fork下来的源码很有好多处@符号变成了$符号,是我的打开姿势不对吗

  private static string GetValidateCheckMethod(string attributeName, string displayName, InputValidateInfo validateInfo)
        {
            if (validateInfo != null)
            {
                return
                    $"checkAttributeValue('{attributeName}', '{displayName}', {validateInfo.IsRequire.ToString().ToLower()}, {validateInfo.MinNum}, {validateInfo.MaxNum}, '{validateInfo.RegExp}', '{validateInfo.ErrorMessage}');";
            }
            return string.Empty;
        }

增强互动和会员权限功能建议

改进前台投稿功能
1、栏目配置里可以设置哪些会员组有前台投稿权限,是否允许投稿,哪些会员组允许投稿,可配置匿名会员组或其它会员组有录入权限。
2、字段配置里可以设置该字段对哪些会员组前台投稿时不显示。
3、后台添加投稿页管理,用于定制不同的投稿页,与会员中心里的投稿页独立,可绑定对应模板,有独立的投稿页链接,模板里通过标签调用要录入的栏目里的字段的显示名称、字段录入框、验证。
4、后台添加批量修改栏目会员组录入权限
增加会员模型功能
1、可以对不同的会员组应用不同的模型
增加管理员关联前台会员功能

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.