在这个系列中,我们将共同经历从头开始构建一个Orchard模块的过程!

虽然Orchard是一个了不起CMS(内容管理系统),有着强大的功能和令人振奋的架构,可以无限的扩展,但它可能需要花费一定时间,以充分了解它的架构,并能够定制您自己的主题的各个方面或甚至创造整个模块来集成Orchard所有的可扩展性点。

我希望,你将受益于我前进的道路上所获得的知识,你会看到Orchard及其架构之美。它不仅只是在简单或高级的网站和博客方面表现很出色,同时它也是一个非常基础的平台,用于创建各种基于Web的应用,如电子商务后端,  CRM的投票系统,项目管理,社区网站,学习管理系统等等。基本上你打算从头创建的任何应用都应考虑使用Orchard创建。Orchard实际上是一个可扩展的框架,它不仅仅“只是”一个CMS。你可以通过插件方式做任何常规ASP.NET MVC应用可以做的事,同时Orchard还拥有一套丰富的功能和兼容概念,你可以获得额外的好处。

本播客系列主要面向刚刚接触Orchard的ASP.NET MVC开发人员,在开始深入这前,如果您还没有阅读过下面文章,我强烈建议您先阅读以下文章:

http://www.orchardch.com/Document

网上商店功能

我们的网上商店模块将启用以下功能:

  • 管理员将能够将任意ContentType(内容类型)通过附加到ProductPart上,从而把它变成产品。
  • 网站访客(顾客)将能够把产品添加到购物篮,通过网站注册,并成为注册用户。
  • 用户将能够进行结算和通过在线支付服务提供商(PSP)支付(在我们的演示,我们将使用Ogone模拟PSP)选定的产品。
  • 在客户被重定向到PSP之前,系统将创建一个Order(订单)记录,及其OrderDetail (订单明细)记录。
  • 在客户支付订单后,我们需要处理的产品交付。在实物产品的情况下,我们可能要通知一些航运伙伴。在虚拟产品的情况下,我们可能要产生类似于票据,或其他近似的产品。为了这种灵活性,我们将实现某种接口IShippingProvider,我们将创建两个简单的实现:一个是发送电子邮件通知托运人,另一个会产生票据。
  • 管理后台,使管理员能够管理客户以及订单。

创建Orchard.Webshop模块项目

这是从头开始编写一个新的Orchard模块的教程,实际上原文里前面还有两篇关于介绍如何安装Orchard,因为网站里有很多文章已经介绍如何安装,这里就不再重复了。
Orchard模块是一个真正的ASP.NET MVC的Area类库,同时遵循了ASP.NET MVC和Orchard的特定的规范。
Orchard 规范提升了您的ASP.NET MVC Area,因此,它可以集成到Orchard中。
现在,我们可以使用Orchard命令行应用程序为我们生成一个基本结构,但是让我们使用Visual Studio从头开始,使我们充分理解,一个模块可以简单到一个空类库加一个module.txt文件,作为模块清单。
最后,我们的模块将包括:

  • A Module Manifest
  • Models & ViewModels
  • Views
  • Controllers
  • Drivers
  • Service classes
  • Handlers
  • Shapes
  • Javascript
  • Css
  • A Migration
  • A ResourceManifest
  • Routes
  • Helpers methods

我们将进行过程中讨论每一项。
首先,我们将由简单的创建一个新的类库项目开始。
在Visual Studio中,在模块的解决方案文件夹下创建一个新的类库项目,并确保该项目位于物理位置\src\Orchard.Web\Moduels:

Orchard需要您的模块位于存在物理位置Modules目录下。
下一步,我们将创建模块的Manifest文件,这是一个简单的文本文件,说明我们的模块,如我们的模块的名称,描述,版本号,公司网址等
让我们的开始给Module.txt输入以下信息:

Name: Orchard.WebShop
AntiForgery: enabled
Author: Sipke Schoorstra
Website: http://skywalkersoftwaredevelopment.net
Version: 1.0
OrchardVersion: 1.3.10
Description: Orchard Webshop Module Demo
Category: Webshop


然后,我们就有了一个基本的Orchard模块,但它什么功能也没有。
但是,这就是我们下面要作的。
让我们确认Orchard识别了我们的模块。按Ctrl + F5启动网站。
网站启动后,导航到管理页面。
可以通过,敲入网址http://localhost:30320/OrchardLocal/admin直接进入管理页面,或点击网站页脚上的”Dashboard”连接进入。
一旦进入管理页面,选择Modules,启用我们的Orchard Webshop Module:
 


这样我们就创建了一个模块的骨架!接下来,让我们使它能做一些有用的事。
我们要的是,使管理员可以定义各种产品:书籍,光盘,DVD光盘,手机等
所有这些产品至少有两个共同的特点:一个单位的价格和一个SKU属性。
在Orchard的核心,每一部分内容事实上都是由Content Parts组成。
例如,管理员可以定义一个新的内容类型:
Book。Book的内容类型是由它的Content Parts定义的。
管理员可以挑选他喜欢的Content Parts(内容部分),如:BodyPart,CommentsPart,RoutePart等。
为了Book变成一个产品,我们需要先创建一个自己的自定义Part(部分):ProductPart。

原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-part-3

翻译:瑞雪年

http://skywalkersoftwaredevelopment.net/Tags/orchard

http://www.orchardch.com/Blog/20120425073505

Orchard是一个了不起CMS(内容管理系统)的更多相关文章

  1. 30 个很棒的 PHP 开源 CMS 内容管理系统

    本文汇集了30个优秀的开源CMS建站系统,采用PHP开发.以下列表不分先后顺序. 1. AdaptCMS AdaptCMS Lite 是一个开源的CMS系统,主要特点是易用,而且可以轻松和其他系统接驳 ...

  2. 基于thinkphp3.2.3开发的CMS内容管理系统(二)- Rbac用户权限

    基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --商品管理 --用户管理 --角色管理 --权限管理 --友情链接管 ...

  3. 新能力 | 云开发CMS内容管理系统,5分钟搞定小程序管理后台

    小程序·云开发的云调用能力,让用户可以免鉴权快速调用微信的开放能力,极大节约了开发成本.现在,大家期待已久的云开发 CMS 内容管理系统,终于上线啦!顺便提示,接下来还可以二次开发哦! 云开发 CMS ...

  4. 贝云cms内容管理系统(thinkphp5.0开源cms管理系统)

    byCms包含文章,图片,下载,视频模型,基于thinkphp5.0.9,可无缝升级至thinkphp.1.0,是一套简单,易用的内容管理系统,旨在帮助开发者节约web应用后台开发时间和精力,以最快的 ...

  5. 基于thinkphp3.2.3开发的CMS内容管理系统 - ThinkPHP框架

    基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --用户管理 --友情链接管理 --系统设置 目前占时这些功能,更多功 ...

  6. 推荐八款.Net优秀的开源CMS 内容管理系统

    1,老牌内容管理系统SiteServer CMS  推荐指数:5 SiteServer CMS 是.NET平台的CMS系统,也是一款拥有十年历史与广泛知名度的CMS系统,2017年5月初迈出了自成立以 ...

  7. 八大CMS内容管理系统推荐

    cms系统哪个好 感谢 64320 的投递 时间:2015-03-05 来源:http://www.iisp.com/ztview/ID_16129.html?s=bios 耐思尼克 很多新手站长初次 ...

  8. .Net Core 3.0开源可视化设计CMS内容管理系统建站系统

    简介 ZKEACMS,又名纸壳CMS,是可视化编辑设计的内容管理系统.基于.Net Core开发可跨平台运行,并拥有卓越的性能. 纸壳CMS基于插件式设计,功能丰富,易于扩展,可快速创建网站. 布局设 ...

  9. 开源丨CloudBase CMS 内容管理系统!简单易用企业内容管理流

    背景 云开发CloudBase CMS 是云开发推出的一站式云端内容管理系统,助力企业的数据运营管理工作. 开发者可以直接在云开发扩展能力中一键安装 CloudBase CMS,免费使用 CloudB ...

随机推荐

  1. java_windows下修改eclipse的默认编码

    windows下修改eclipse的默认编码   windows下一般系统编码为 GB2312(中文版的windows), 由于我比较喜欢utf8格式的编码,现将修改方式和大家分享 如果要使新建立工程 ...

  2. 开源 java CMS - FreeCMS2.3员

    原文地址:http://javaz.cn/site/javaz/site_study/info/2015/28375.html​ 项目地址:http://www.freeteam.cn/ 会员注冊 打 ...

  3. 【高德地图API】如何获得行政区域?如何制作行政规划图?

    原文:[高德地图API]如何获得行政区域?如何制作行政规划图? 什么是行政规划图?如何获得每个行政区域的边界轮廓图?举例:重庆市 江北区.如图: 官方类参考:http://developer.amap ...

  4. FindBugs:Compiler output path for module can not be null. check your module/project settings问题原因

    这可能是很多人在使用Android studio 该插件会发现此错误信息:Compiler output path for module can not be null. check your mod ...

  5. pinyin4j新手教程

    Pinyin4j新手教程 pinyin4j是一个支持将简体和繁体中文转换到成拼音的Java开源类库,作者是Li Min (xmlerlimin@gmail.com). 下面是一些详细的介绍和使用方式. ...

  6. Swift入门教程:基本语法(二)

    数字格式 数字可以增加额外的格式,使它们更容易阅读 可以增加额外的零 0 let money = 001999           // 1999 let money2 = 001999.000   ...

  7. Struts2和Struts1的主要区别(完整版)

    Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Act ...

  8. C# 编译器选项 /platform(指定输出平台)32位程序运行到x64平台的问题

    如果说你编译的exe运行时报错: “尝试读取或写入受保护的内存.这通常指示其他内存已损坏” 这很有可能是你是以非托管的方式错误地引用了64位的API中去. 为什么会这样? 那你就要考虑VS的编译器选项 ...

  9. NET Socket服务编程

    smark https://github.com/IKende/ .NET Socket服务编程之-高效连接接入编 在.NET上编写网络服务深入都有2,3年了,而这些时间时如何在.NET里实现网络服务 ...

  10. js 监控浏览器关闭事件

    代码如下: <!DOCTYPE html> <html> <head> <title>监控浏览器关闭事件</title> </head ...