发布基于Orchard Core的友浩达科技官网
2018.9.25 日深圳市友浩达科技有限公司发布基于orchard core开发的官网 。 本篇文章为你介绍如何基于orchard core开发一个公司网站。orchard core是一个免费和开源的社区交流项目,致力于在asp.net core平台开发应用程序和可重用性组件。它将创建用于asp.net core应用和扩展的共享组件,以及修改这些组件以便使其应用于终端用户,脚本人员和开发者。如果您现在是.net core 跨平台的爱好者,想找一个基于asp.net core开发的开源框架,orchard core是一个很不错的选择,orchard core是一个基于asp.net core构建的可扩展与模块化设计的开源cms系统,全部代码在github上已开源,其中使用了很多框架和最佳实战,它的架构设计值学习 。
官方文档介绍:
github: https://github.com/orchardcms/orchardcore
orchard core是全新一代的asp.net core cms。支持模块化和多租户。整个orchard core就是通过一个个模块module组成的,整个网站由主题和业务模块组成。基于orchard core开发网站主要分为2项任务:开发自定义主题和自定义模块。具体到友浩达的官方网站来说,我们需要自定义主题和自定义 微信公众号和新闻管理模块。
首先需要安装.net core sdk开发包,推荐微软最新的稳定的.net core 2.1 版本。同时推荐安装visual studio 15.8,如果安装了最新版本的visual studio 也就安装了最新的稳定版本.net core sdk。
打开vs2017 新建一个saasapp的asp.net core web应用程序,
然后选择空模板
安装orchardcore包
选择诸如 .net 这种成熟的生态系统,其最大的优势之一,就是第三方软件包和插件的量非常庞大。正如其它的软件包系统一样,你可以下载并安装 .net 软件包,以获取协助,来完成几乎任何能想到的任务和难题。
nuget 即是包管理工具,也是官方的软件包仓库( )。你可以在网页上检索 nuget 软件包,并在自己的机器上使用终端(或者 visual studio 里的图形界面)安装它们
nuget包命令 目前预览版需加 -pre
install-package orchardcore.application.cms.targets -pre
或者在nuget搜索 orchardcore.application.cms.targets
项目开发
打开startup.cs ,在configureservices加入
然后删除configure 中的
app.run(async (context) =>
{
await context.response.writeasync("hello world!");
});
加入
app. useorchardcore();
最终如下:
namespace saasapp
{
public class startup
{
// this method gets called by the runtime. use this method to add services to the container.
// for more information on how to configure your application, visit https://go.microsoft.com/fwlink/?linkid=398940
public void configureservices(iservicecollection services)
{
services.addscoped<iresourcemanifestprovider, resourcesbuilder.resourcemanifest>();
services.addorchardcms();
services.configure<identityoptions>(options =>
{
options.password.requiredigit = false;
options.password.requirelowercase = true;
options.password.requireuppercase = true;
options.password.requirenonalphanumeric = false;
options.password.requireduniquechars = 3;
options.password.requiredlength = 6;
});
}
// this method gets called by the runtime. use this method to configure the http request pipeline.
public void configure(iapplicationbuilder app, ihostingenvironment env)
{
if (env.isdevelopment())
{
app.usedeveloperexceptionpage();
}
app.useorchardcore();
}
}
这里要和大家说一下的resourcesbuilder.resourcemanifest,我们用我们bootstrap中文网的cdn资源替换了内置的google cdn资源,解决我们伟大的那堵墙所阻止的jquery库,如果不替换,进入到orchard core 的管理后台,你就会发现无法点开管理菜单。
然后运行程序,打开浏览会看到初始化安装界面。输入对应信息,然后完成安装。
注意密码必须包含大小写数字和字符才能成功提交。如上图中出现红色是不行的。安装好后配置一下,最终如下:
后台为/admin ,可以进入查看相关设置
为orchard core创建自定义模块
我们将创建一个自定义模块来扩展orchard core。你需要一个已经安装了orchard core的web项目,上一章我们已经完成了这个工作。我们使用visual studio 2017打开项目。我们将添加一个新的.net core class library项目来包含我们的模块:
orchard core需要从web项目到每个模块或主题的引用。所以让我们继续现在添加引用,这样我们就不会忘记了。单击web项目上的“添加引用”,然后将web项目中的引用添加到新模块:
安装模块要求
一旦我们有了一个项目,我们就需要为项目添加一些东西,以便orchard core将其识别为一个模块。打开nuget包管理器,并安装 orchardcore.module.targets包。这个包包括(除其他外)我们需要能够添加扩展点的抽象。如果您要创建主题,请安装orchardcore.theme.targets
我们要添加的第一件事是我们的startup 类。这个类允许我们挂钩orchard core的启动管道; 这是我们做注册依赖项或路由等事情的地方。最基本的启动类看起来像这样:
using microsoft.extensions.dependencyinjection;
using orchardcore.modules;
namespace cvmdesktop
{
public class startup : startupbase
{
public override void configureservices(iservicecollection services)
{
}
}
}
再添加一个清单文件manifest.cs
每个模块和主题都需要有一个清单,它是一assembly:module 标签。清单存储orchard用于描述系统模块和主题的元数据,例如名称,版本,描述,作者和标签。下面是我们的清单样例:
using orchardcore.modules.manifest;
[assembly: module(
name = "cvmdesktop",
author = "weyhd",
website = "http://weyhd.com",
version = "0.0.1",
description = "cvm manage",
category = "infrastructure"
)]
此时,我们可以构建并运行。登录站点的管理面板,您将看到模块显示在“模块”页面中:
自定义模块添加admin菜单以及配置permission
1.在自定义模块项目中安装nuget包 orchardcore.environment.navigation
2.新建adminmenu.cs类
继承inavigationprovider并实现buildnavigation方法。
在builder中可设置多级菜单,在最后一级可以设置菜单请求路径以及权限。
3.新建permission.cs类
继承ipermissionprovider并实现getdefaultstereotypes以及getpermissions方法。
4.启动项目,进入后台启用模块
在左侧菜单即可看到新增的菜单
自定义模块中添加数据库curd操作
根据github上的issues#2248
1.新建index类引用yessql.indexes命名空间,继承mapindex类
此index包含实体中部分字段,亦可全部一致。
2.新建indexprovider类,继承indexprovider<t>
t表示数据操作实体类
3.重写describe方法
4.在map()中映射index类与实体类相关字段。
5.新建migrations类
继承datamigration,需要引用orchardcore.data.migration命名空间。需要安装nuget包orchardcore.data.abstractions。
6.添加create方法
注意名称必须是create,返回类型为int
在create方法中创建表
7.在想实现curd操作的地方注入yessql.isession,使用yessql中的isession进行相关curd操作即可
8.可使用imemorycache配合isession进行相关操作,如
上一篇: php的4种常见运行方式