Good to see you want to learn the ins and outs of Orchard Core module creation. Reading code is always a good way for this!
We'll guide you on your journey to become an Orchard Core developer. Look for "NEXT STATION" comments in the code to see where to head next, otherwise look through the code as you like.
We've invested a lot of time creating this module. If you have ideas regarding it or have found mistakes, please let us know on the project page on GitHub.
If you'd like to get trained instead of self-learning or you need help in form of mentoring sessions take a look at Orchard Dojo's trainings.
After you complete this tutorial (or even during walking through it) you're encouraged to look at Orchard's built-in modules on how they solve similar tasks. Clone the official repo and let it be your tutor :-).
Later on, you may want to take a look at Map.cs (remember, "X marks the spot!") in the project root for reminders regarding specific solutions.
FIRST STATION: First of all, let's discuss how a .NET library becomes an Orchard Module. If you look into the Dependencies of this project you will find the NuGet reference for the OrchardCore.Module.Targets
package. That's step one. Then, the module manifest file is also required. So...
NEXT STATION: Head over to Manifest.cs. That file is the module's manifest; a Manifest.cs is required for Orchard modules.
Note that the module's recipe file that you used during setup is in the Recipes folder. A lot of features included in this module are configured from there; you can check it out too.
This demo is heavily inspired by Sipke Schoorstra's Orchard Harvest session and brought to you by Lombiq Technologies.
Here's also a handy map for reminders about specific solutions, concepts, and keywords. You can use this to go directly to specific topics if you know what you're looking for.
- Module manifest
- Your first OrchardCore Controller
- Display management
- Storing data in document database and index records
- Content Item and Content Part development
- Content Item display management and querying/modifying content items from code
- Content Field development
- Indexing Content Fields in Lucene
- Content Field display and editor options
- Resource management
- Permissions and authorization
- Navigation menus (See here for for a similar tutorial about theming with Lombiq.BaseTheme.)
- Site settings and
IConfiguration
- Utilizing action and result filters
- Shape tables
- Caching objects and shapes
- File management
- Background tasks
- Event handlers
- Web API
- Middlewares
- Accessing services from other tenants
- Unit and integration testing
- GraphQL
- Workflows