Next Pluralsight Course

Topics: Announcements, General
Oct 6, 2011 at 2:27 PM

Hey Everyone,

I'm starting to think about plans for my next Orchard course for Pluralsight. If you haven't seen the first one, it's a fundamentals course which assumes no knowledge of Orchard to start and walks through a lot of the core concepts and features needed to build a site with it. Other than making some changes in theme templates and writing a little bit of code in those, I deliberately stayed away from looking at or writing any module code.

So I think that's where I'd like to start for the next course. I might call it "Extending Orchard" or something like that. Start with looking at the anatomy of a module and walk through how to build one. I'm interested to hear what topics you'd like to see covered, or if you're an experienced Orchard dev what topics you think make the most sense to cover. Of course, I can't promise to cover everything, but any and all suggestions are welcome!  :-)


Oct 6, 2011 at 5:06 PM
Edited Oct 6, 2011 at 5:09 PM


The first course was a great introduction. Knowing how to write modules, widgets, etc. in depth would be a big plus. Connecting to external sources of data (datasets, different types of web services) and consuming/posting data to ones...

How can we use MVC extention-based 3rd party UI libraries (like DevExpress "gridview", etc. for example?).

I would like to see the 'Advanced" topics in Orchard course. The ones are based mainly on "writing code" to consume by Orchard and vice versa (how to work with Orchard gallery of widgets, for example, from outside Orchard and at run-time - is it possible at all?)



Oct 6, 2011 at 5:32 PM

I think part of the course could also be to focus on some common APIs in Orchard: IEncryptionService, ILock, Caching, lifetime scopes ...

Also, how to organize, host, and publish a module, and its unit tests.

Nov 25, 2011 at 1:22 AM

Loved the course on pluralsight.

1-M and M-M relationships between content types would be really helpful

- both from within the orchard interface and from code.


Nov 25, 2011 at 7:56 AM

rick, I don't know if you're aware of my Mechanics module which delivers just that. You create relationships by building "connector" content types, so it's all highly extensible and skinnable. You can configure 1:1 1:N and N:N. You can also add extra parts to the connectors themselves if you need to store metadata across the connection. The source code is at - if you use it make sure you get the 1.2 or 1.3 compatible branch, I'm working on some big improvements in other branches but they're not stable.

Nov 25, 2011 at 12:55 PM

Hi pete, I have read about your module, and I want to use it, but when I went to get it, I'm getting 404 errors from the gallery. When that is cleared up, I hope to download and use it.


Nov 25, 2011 at 1:51 PM

The version on the gallery is severely outdated in any case, and even when the gallery is fixed and I update the package, it's still tricky gathering all the dependencies (not to mention that updates will be a pain because you have to update several modules one after another, and breaking changes could take down your Orchard instance). For these reasons I recommend cloning the whole source from Codeplex because it gives you everything in one package and it's very easy to stay up-to-date.

Either way, in a day or two I should have completed this big batch of changes, which will make the module(s) perform better and be more configurable. After that, I'm working on an Ajax content picker / search popup, which I hope to have ready in the next week :)

Feb 10, 2012 at 8:17 PM

Due to other work commitments, all Orchard related fortunately :-), I wasn't able to start on this course as soon as I hoped. However, it looks like I'm going to be able to begin soon. I'll post my tentative outline as soon as I have it ready. I definitely plan to cover the core concepts involved with building a module with custom content parts. It will probably cover most of the bullet points in @JasperD's comment above.

My goal is to come up with a scenario for a module that I can work on throughout the course. Start with creating an empty module, build out the features throughout the course, and publish it to the gallery at the end.

Feb 11, 2012 at 9:20 AM

looking forward to the new course.

Feb 23, 2012 at 4:19 PM
JasperD wrote:

Hi, this is great news.

Some things I (as someone who is still new to Orchard) would like to see covered:

  •  Basics/Core:
    • all that content stuff (types, parts, fields, records)
    • filters and handlers
    • routing
    • services
    • drivers
    • templating (views)
    • processing user input (forms + validation + persistence)
  •  Other/advanced:
    •  authorisation
    • search indexing
    • handling complex DB queries (UPSERT, complex joins etc.)
    • caching & performance
    • tokens & autoroute
    • overwriting default behaviour
    • ViewModel or not
    • creating the necessary backend pages

Several of this topics overlap each other and some are more important than others (I guess no one want to see you writing the 3000th view ;)) but at least me will be grateful if you outline the specifics of Orchard (in comparison to an usual MVC app).

great topics dear :)

Mar 9, 2012 at 3:00 PM
Edited Mar 9, 2012 at 3:01 PM

I have created an Orchard module/site which demonstrates many of these concepts. I'm going to show how I built it piece-by-piece. I plan to start recording next week and the goal is to have it all recorded and published by the end of this month. One thing which I already knew, but becomes even more clear when doing something like this, is that Orchard is big. :-)

There is so much ground to cover, that I'm surely not going to be able to cover everything that has been mentioned in this thread. The good news is that means there will probably be room for an "Advanced Orchard Part 2" course later on. Here is a list of topics that I plan to cover in this course:

  • Getting started with customizing Orchard (cloning the source code, etc)
  • Brief look at the Orchard database schema with the default recipe
  • Using Orchard.exe to codegen a new module
  • Using Migrations
    • How the initial creation works
    • How to perform updates
    • Defining custom content types and parts
    • Defining database schema
    • Seeding initial data
  • Custom content types
    • Defining the models for Parts and Records (including N-N relationships between records)
    • Creating a Driver for a custom Part
    • Creating a Handler for the type
    • Creating Editor Templates for custom part (for admin dashboard)
    • Creating Display Templates for custom part (for site front-end)
  • Non-content data
    • Working with data which is not part of a content item
    • Relating non-content data to data from content parts
    • Creating custom route to display non-content data on the front-end
  • Admin Dashboard
    • Adding custom items to the Dashboard menu
    • Creating custom routes, controllers and views for the Dashboard
    • Adding custom settings to the Dashboard
  • External Data
    • Building a custom Dashboard screen for querying an external webservice
    • Pulling in data from the external service and creating Orchard content items from it
  • Authorization
    • Defining custom permissions
    • Applying authorization checks based on permissions
  • Shapes
    • Returning custom shape results from a controller (and retrieving them via jQuery/Ajax)
    • Defining shape alternates
    • Dynamically attaching shapes in a handler and dispatching them to other zones
    • Defining your own local content zones and using them with
  • Indexing
    • Defining which properties to index and how
    • Searching the index for content items
  • Other
    • Declaring dependencies and using other modules
    • Defining style/script resources
    • Using view models and validation
    • Creating a simple Query & Projection through the Dashboard
    • Creating service classes and injecting them into other classes (like controllers)
    • Running code when your module is enabled
    • Packaging a module and submitting it to the Orchard Gallery
    • Probably more that I'm forgetting ...

Some of the main Orchard classes and interfaces that are used include: IRepository<T>, IContentManager, IOrchardServices, INavigationProvider, IRouteProvider, IResourceManifestProvider, IPermissionProvider, IShapeTableProvider, IFeatureEventHandler, ContentHandler, ContentPartDriver<T>, ISiteService, IShapeFactory, Localizer, IAuthorizer, IIndexManager, ISearchBuilder

Hopefully this proves to be useful to the Orchard community and encourages more people to get involved with Orchard development.

Mar 9, 2012 at 11:51 PM

Incredible, I can't wait to watch this course (or courses)! I'm sure that many developers, especially newcomers, will be up to speed in no time after watching these videos.

Mar 9, 2012 at 11:52 PM
sebastienros wrote:

I think part of the course could also be to focus on some common APIs in Orchard: IEncryptionService, ILock, Caching, lifetime scopes ...

Also, how to organize, host, and publish a module, and its unit tests.

That would be very helpful indeed

Mar 10, 2012 at 7:04 AM

this is great. we need more of these to fully start taking advantage of orchards capabilities.

Mar 10, 2012 at 8:47 AM

I'm working my way up in Orchard (and MVC itmw) and couldn't do w/o the documentation and tutorials from sfmskywalker (thnx btw :)) 

I'm looking forward to these courses. If you ever want to do advanced courses I would be interested in the event bus system and the task scheduling mechanism too.

gr8 work :)

Apr 6, 2012 at 4:01 PM

"Advanced Orchard" is now live on Pluralsight! Here's the link to the course:

I did end up covering everything that I listed in my comment on Mar 9. The course is basically a complete progression of building one module start to finish, and I even published it to the gallery at the end. It's called Pluralsight.Movies (the subject of the module/site that I build in the course is movies).

Of course I didn't get to cover everything mentioned in this thread. The course ended up a little over 4 hours just with those topics I listed. Perhaps there will be an opportunity for an "Advanced Orchard 2" course down the road.

Apr 7, 2012 at 5:31 PM

Amazing!! Gonna check them all out over the coming week.

Apr 8, 2012 at 9:15 AM

Just finish watching all modules of the course.  course is really very helpful to jump start developing advanced modules using orchard. Great Job Kevink.

Looking forward for orchard advanced 2 which will cover up remaining topics.