Orchard 2 is the implementation of Orchard CMS in ASP.NET vNext (also known as DNX). You can check out the Orchard 2 presentation from the last Orchard Harvest to get an introductory overview of its features and goals.
Orchard is a free, open source, community-focused Content Management System built on the ASP.NET MVC platform.
- First off, follow the instructions here in order to install DNVM, then install Visual Studio 2015, or what ever you flavour of editor is.
- Next you want to clone the repository using the command
git clone https://github.com/OrchardCMS/Orchard2.git
and checkout themaster
branch. - Run the
build.cmd
file included in the repository to bootstrap DNX and build the solution. - Next navigate to "D:\Orchard2\src\Orchard.Web" or where ever your retrospective folder is on the command line in Administrator mode.
- Call
dnx web
. - Then open the
http://localhost:5001
URL in your browser.
- Call
dnx run
. - From here you can now execute commands in a similar fashion as before.
When running Orchard 2, you need a client. The default implementation is to have a client talk to a host.
The client can be any project that creates the host.
To create the host in a web project you would do:
public class Startup {
public IServiceProvider ConfigureServices(IServiceCollection services) {
return services
// AddHostSample is where the magic is done. This extension method lives in the Host (Orchard.Hosting.Web)
.AddHostSample()
.BuildServiceProvider();
}
}
The host has a small wrapper:
public static IServiceCollection AddHostSample(this IServiceCollection services) {
// This will setup all your core services for a host
return services.AddHost(internalServices => {
// The core of the host
internalServices.AddHostCore();
//... All extra things you want registered so that you don't have to touch the core host.
});
Additional locations for module discovery can be added in your client setup:
public class Startup {
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddWebHost();
// Add folders the easy way
services.AddModuleFolder("~/Core/Orchard.Core");
services.AddModuleFolder("~/Modules");
services.AddThemeFolder("~/Themes");
// Add folders the more configurable way
services.Configure<ExtensionHarvestingOptions>(options => {
var expander = new ModuleLocationExpander(
DefaultExtensionTypes.Module,
new[] { "~/Core/Orchard.Core", "~/Modules" },
"Module.txt"
);
options.ModuleLocationExpanders.Add(expander);
});
});
}
All tenant configuration lives in src\Orchard.Web\App_Data\Sites\Default
within settings files, e.g. Settings.txt
:
State: Running
Name: Default
RequestUrlHost: localhost:5001
RequestUrlPrefix:
However, you can override these values within a .json or .xml file. The order of precendence is: Settings.txt -> Settings.xml -> Settings.json
You can also override the 'Sites' folder in your client setup
public class Startup {
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddWebHost();
// Change the folder name here
services.ConfigureShell("Sites");
});
}
###Testing
We currently use XUnit to do unit testing.
###Contributing
We currently follow the these engineering guidelines.