Skip to content

adwardliu/OrchardCore

 
 

Repository files navigation

brochard MyGet Build Status

Orchard 2

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.

Join the chat at https://gitter.im/OrchardCMS/Orchard2

Orchard CMS

Orchard is a free, open source, community-focused Content Management System built on the ASP.NET MVC platform.

Getting Started

  • 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 the master 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.

Using Kestrel

  • Call dnx web.
  • Then open the http://localhost:5001 URL in your browser.

Using Console

  • Call dnx run.
  • From here you can now execute commands in a similar fashion as before.

Using Orchard 2

Creating a host

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 module locations

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);
        });
    });
}

Tenant Configuration

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.

Releases

No releases published

Packages

No packages published

Languages

  • C# 44.1%
  • CSS 36.0%
  • JavaScript 19.8%
  • Other 0.1%