If you have ever wondered where to start when it comes to Episerver, this website will answer all of your questions. You are never too old or too young to learn a new CMS and it is not as hard as you think. If you work for a company and you’re being forced to learn Episerver then I’d recommend reading these articles to understand why learning a CMS can benefit your career:🚀 Qubit 🚀 🚀 Stylized Components 🚀 🚀 Redux 🚀 🚀 Storybook 🚀
Whether you’re learning Episerver, Umbraco or other CMS systems for that matter, there are core website concepts that are central to learning how to use Episerver correctly and that’s what we’re going to go through today.
In this programming primer, we’re going to start at the very beginning and assume that you don’t have any knowledge of working with Episerver. This section won’t cover any code, but, will introduce the concepts you need to understand.
In this section, you will learn about MVC within Episerver. MVC for anyone living under a rock, stands for Model, View and Controller. MVC separates an application into three components - Model, View and Controller. Model: Model represents the shape of the data and business logic. It maintains the data of the application. Model objects retrieve and store model state in a database.
Getting content in and out of Episerver is one of the most frequent tasks you will do on every project. This section I’ll cover APIs like the IContentRepository, used to get content from Episerver. My guides cover the APIs you’ll need to use the most, Episerver also has full SDK documentation here which is worth reading.
Getting to grips with Episerver and understanding all the different config files and settings can be very daunting at first. This section will help you to understand how you can configure Episerver to do things like enabling multi-language, setting permissions etc...
When it comes to development, Episerver is easily hands down one of the easiest CMS systems for dot net developers to work with. This definitely extends to creating templates within Episerver to allow content editors to build pages. If you have some experience with MVC then you will already know most of the process. Like MVC you will need a controller, a view model, and a view.
The main difference with Episerver is that you need to inherit from slightly different things and you will also need to define a page type. The tutorials in this section will help you to define a page type in code, write a very basic display for it and then configure Episerver to set the page as the homepage.
Setting up Visual Studio correctly can make your life a lot more enjoyable. I don’t think there’s anything more frustrating than not being able to understand your project, find code quickly and figuring out how things work. Getting your Episerver website structured correctly, is pretty simple, it just takes some conscious effort and thought at the start of your project. This section covers battle proved advice to make your experience hopefully more enjoyable.
The term ‘best practice’ is something every developer reading this should want to aim for. A Google search of ‘coding best practices’ returns over 1.5 million results, which shows what a hot topic it is. I’ve been building CMS websites for over a decade and in that time I’ve seen some really well-architected websites and I’ve seen other project that has been scrapped immediately.
The difference between those projects is usually based on how well it was built in the first place. Now that you know the basics of building an Episerver website before you leave I’m going to tell you some tips to make sure the code you write is something you can be proud of.
This section covers creating custom admin plug-ins in the Episerver backend. If you need some custom functionality that only administrators should have access to then this is the area where you will create your pages.
If you have never created an admin plug-in, I recommend you start with 'How To Create A Custom Admin Plug-in in Less Than 5 Minutes'
In this section, you will learn about blocks. What they are. What you can use them for. Shared Blocks. Local Blocks. All of it
Being able to split your page designs into reusable components that content editors can then manipulate how they want tom is one of Episerver's best-selling points, These components in Episerver language are called ‘Blocks’.
Every website is accessible to anyone in the world. Unfortunately, some of those people might want to malicious mess with your website. Some people might want to steal financial data, others might just want to damage your companies brand. This section discusses the threats that people might use to target your website and how to configure Episerver to prevent anyone doing anything you don’t want them to.
A content area is a specialised Episerver property type that allows content editors to add dynamic components (like blocks) into CMS pages. It is very common that you may need to customise this property, say to add integration with the bootstrap framework. This section describes content areas in more details and covers some techniques to customise it.
Episerver is extremely customisable and the backend is no exception. This section covers some tutorials to help you customise Episerver so it works how you want it to. Some ways of customising Episerver, include creating custom mark-up for properties, how to change the log-in page, how to add custom menu items into the main Episerver menu etc…
This section covers event handling in Episerver. Event handling within your website can cover many aspects, you can hook into page events, so when you publish a page you may want something to happen. On the flipside of the coin, you may want to create a real-time application feature on your website that will require third-party libraries to be integrated within Episerver.
This section covers implementing inversion of control within Episerver. If you want to create a well tested and flexible website, you need to read and understand the principles in this area. Out-of-the-box Episerver uses Structure Map. The tutorials in this section will help you to become a Structure Map wizard.
Initialization modules are Episerver equivalent of adding code in Application_Start within your Global.asax. Writing your own initialization modules allows you to trigger custom code on application startup. This section covers how to create an initialization module as well as several code examples of useful modules you might want to consider integrating into your website.
If you have worked with .NET for a few years, odds are, you have touched a few projects that used log4net. Log4Net is the go-to logging provider for all the major NET CMS systems, Episerver, Sitecore, and Umbraco all included. With close to 6 million downloads now, no other logging provider comes close to popularity.
I still find it hard to believe how many people who work on custom projects who don’t use any sort of C# logging framework, or, who don't really how to use Log4Net correctly with Episerver. Having a good knowledge of Log4Net is important because with a little knowledge you can make your life a lot less painful for when things undoubtedly go wrong.
Simply writing a few bits of configuration, you can do things like split your logs into different files, or, write your logs to a database, a log management system or potentially dozens of other places, all without changing your code.
I think most people reading this will understand the concept of a template to create content. A page type is the building block Episerver uses to construct a template for content editors. As you would expect page types are very customizable. This section covers the fundamentals of page types, how you can create some and how you can extend them.
Episerver properties are similar to the. NET equivalent, it can be of any type that is declared directly in your templates/blocks. Some examples of Episerver properties that come out of the box include strings, rich text, content areas. If out the box properties don’t meet your needs, then you can create your own custom properties fairly easy. This section covers any questions you might have about properties, what properties are available, how to implement them in your templates/blocks and how to create custom ones.
A lot of people starting Episerver struggle to get their head around how it works. If your website is based on the MVC then understanding how the Episerver pipeline works, how pages are loaded, what parameters are passed around behind the scenes, etc… will make your life a lot easier. This section will hopefully help you gain this understanding.
Episerver has a great development community who built modules that you can integrate with Episerver. Below lists the modules that I recommend you use in your Episerver project.
Robots.txt allows you to update your websites robots.txt file within the Episerver admin.
Having a Sitemap in your website is a good practice to help search robots to index your website. I recommend using the Geta Sitemap package, available here. The plugin is split into two parts. First, you will need to configure about what content you want to be included in your sitemap, the second step is enabling a scheduled task to ensure it gets updated.
To configure the plug-in, load up your Episerver website, and again you will need to visit the admin section. From here you will see a new section,
‘Search engine sitemap settings’.
From the settings page, you will need to create a new Sitemap. Configuring the plug-in is fairly straightforward and all the instructions are on the page. I usually create a Sitemap that indexes everything so I tend to leave everything blank After saving the content, you will need to enable the scheduled task to update it.
In the admin pages, ‘Scheduled Jobs’ section, click on the ‘Generate search engine sitemaps’ section. Click the ‘Start Manually’ button and your Sitemap will be generated.
After triggering the scheduled task, when you type in /sitemap.XML onto your website’s URL in a browser, you should now see an XML file that contains all your website’s content.
As content is changing the site will need a way to deal with 301 redirects. Asides, from the IIS Url Rewrite module, I recommend the BVN redirect module is installed to allow content editors/admins the ability to create redirect rules without needing to deploy code.
After the plugin is installed it has two functions. First 301 re-directs. Setting the 301 redirect is done via the dashboard gadget.
Creating a redirect is simple, in the ‘Custom Redirects’ tab, add the old URL and the URL you want the 301 to point to, click ‘Add’ and off you go. From previous project experience, I would say it’s good practice to manage this list. If the list gets too large it can affect performance a little. In most cases, after 6 months you can kill off any new/old re-directs.
This section explains how to set-up Episerver to work with multiple languages.
Caching is an important aspect of any project, if after caching your website still loads slowly you will need to use some profiling software to identify bottlenecks and refactor your code to make it more performant. This section covers some of the tips and techniques to help identify these issues.
This section links to some of the Episerver sample sites I have built over the years, which are available to download.
An Episerver scheduled task is a mechanism within Episerver that you can use run specific code at a specified interval. If you’re looking for a way to execute a certain command several times a day, at a certain time of day, week or, month, then this is what you use. You can create a scheduled Jobs/Tasks by creating a C# class and inheriting the correct attribute to it, like so:
csharp [ScheduledPlugIn(DisplayName="***",Description="***")]Your custom code will then be run as a background at a specified frequency, time, date etc… One important thing to note is that when the code runs within a scheduled task, it won’t have the same HTTP Context as a normal user. Scheduled tasks will be run by your application pools identify and not a web user, so things like HTTPContext won’t exist. I’ve definitely wasted a few hours wondering why a task worked when I tested it manually (which will cause the HTTPContext to exist) and why it failed when it was scheduled
Search is always a key topic for clients. This section will help you to understand what options are available to you and how you can implement search within an Episerver website.
This section discusses the threats that people might use to target your website and how to configure Episerver to prevent anyone doing anything you don’t want them to.
Every website is accessible to anyone in the world. Unfortunately, some of those people might want to maliciously mess with your website. Some people might want to steal financial data, others might just want to damage your companies brand.
This section covers selection factories. A selection factory, can be thought of as a drop-down that can be added to templates to allow content editors to select single/multiple selections from a list of predefined values. Selection factories are a little bit more in-depth than out-of-the-box properties as you need to write custom code in order for them to work, which is I’ve dedicated a whole section to it. If you want to learn more about Episerver properties, I suggest looking here, Episerver Properties.
One of the most fundamental aspects of any project is making sure your website is easy for both users to find from Google. Part of this involves making sure search engine robots can read your website and spider it correctly.
Designing an Episerver project so that it can empower content editors to manage SEO and improve search engine results page (SERP) ranking will dramatically increase traffic to the site. IIn this section you will learn best practices to help you smash SEO within your project.
This section covers some of the techniques to configure TinyMCE. If you are new to Episerver, TinyMCE is the rich text editor that content editors use to add and style content on your Episerver webpages.
As developers, we all hit hurdles from time to time. This section covers advice and battle proved techniques to help you figure out what’s gone wrong in your website. If you are sat in front of your PC now with a broken build and you are unsure what to do. I would recommend reading the articles in the Recommend Reading section to try and get some inspiration of what to try and where to look.
You can also ask me, I get emailed every week by people from all over the world and I generally respond to every request. If you are still stuck, or can’t be arsed to email a complete stranger, you can also ask your question on the Episerver forums, as the Episerver community is generally pretty good and someone may answer for you. Stackoverflow is always available.
Visitor groups allow you to create personalized content with Episerver. If you want to display different content based on what country the person is from, if they have ever bought a product from you before, or, even simply if they have logged in or not, then you will need to know about visitor groups.
This section explains how to write unit tests within Episerver. Tests are essential in asserting that the actual system works as expected. These assertions must all pass, or the unit test will fail.
A lot of Episerver newbies struggle to get work with Episerver. This section covers some job interview questions and some advice about how to look for Episerver work.
- Episerver Getting Started With Episerver Development
- Episerver Core Concepts
- Episerver MVC
- Episerver Api Explained
- Creating Your First Episerver Page
- Episerver Structuring Your Project
- Episerver Best Practices, Tips and Tricks
- Episerver Admin Plugins
- Episerver Blocks
- Episerver Caching
- Common Web Page Component Tutorials
- Episerver Content Areas
- Episerver Customizing Episervers UI
- Episerver Event Handling
- Episerver Dependency Injection
- Episerver Deployments
- Images, Files, Assets And Media Within Episerver
- Importing Content Into Episerver Programmatically
- Episerver Initialization Module
- Episerver Logging
- Episerver Page Types
- Episerver Properties
- Episerver Routing
- Episerver Modules
- Episerver Multilingual Websites
- Episerver Performance Tips
- Episerver Projects
- Episerver Sample Sites
- Episerver Scheduled Tasks
- Episerver Search
- Episerver Security
- Episerver Selection Factories
- SEO Tips
- Episerver and TinyMCE
- Episerver Troubleshooting Tips
- Episerver Visitor Groups
- Episerver Unit Testing
- Episerver Getting An Episerver Job
- Episerver CMS Tutorials
- Episerver News
- Frontend Episerver Development