Ajax support for the pluggable EPiServer Find UnifiedSearch implementation

This article is based on work described in A way of consolidating EPiServer Find Unified Search over multiple websites as well as Example: Pluggable EPiServer Find UnifiedSearch for selected types. If you want to use ajax to retrieve more search hits, apply hit filtering or the like, you would need to pay some extra consideration to the API. Since the ajax call from the frontend …

Example: Pluggable EPiServer Find UnifiedSearch for selected types

In this example on how the pluggable EPiServer Find UnifiedSearch may be implemented we will look at simple type filtering. Previously we did this using TypeSearch, but since we moved to UnifiedSearch in my current project, it had to be reimplemented. For more information, please see the previous article A way of consolidating EPiServer Find Unified Search over multiple websites. You may also be interested …

A way of consolidating EPiServer Find Unified Search over multiple websites

At my current client’s we are building a common platform containing shared code between several EPiServer multisite installations. Due to reasons the way we implemented searches with EPiServer Find had diverged to a point where it was necessary to take a step back and refactor it. This is what we came up with. For an implementation of the specific search class, please see article Example: …

EPiServer Find UnifiedSearch conventions causing ReflectionTypeLoadException to be thrown

At my current client’s we are building a large platform serving several EPiServer multisite installations with common code. Consolidating how we work with EPiServer Find, we ran into a bit of trouble. My collegue Svante Seleborg did all of the heavy lifting on this one (I’m just taking the credit). While attempting to add simple UnifiedSearchRegistry conventions, as the kind shown in below code snippet, …

Fault tolerant file blob provider for EPiServer websites

We have been using EPiServer’s blob storage for saving large chunks of JSON data to disk (please see Storing your own data in EPiServer’s blob store). As these JSON blobs takes a relatively long time to write, chances are the writing is interrupted causing broken JSON blobs. This is especially prone to happen in develop environments where a process may be interrupted suddenly. If you …

EPiServer simple address with injected URL slug in multi language website

So you have successfully injected a custom slug at the start of the URL, and gotten it to work in an EPiServer installation with multiple languages. However, now the simple address feature is broken. It only returns 404 Not Found errors. In this article we will continue the example with the injected region slug from the previous posts. I worked on simple address support together …

Injecting slugs in EPiServer URL for multi language websites

My current client has a need to inject region information at the start of the URL’s path in one of their EPiServer websites. For the Stockholm region, this may look like /Stockholm/path/to/page. However, the website is also in multiple languages causing EPiServer to inject it’s own slugs for language management: /so-SO/Stockholm/path/to/page (Somali). My collegue Svante Seleborg has been deeply involved in developing this functionality. Edit: …

Virtual pages in EPiServer using partial routing

As mentioned in a previous article about storing data in EPiServer’s blob storage, we had the need to create around 18k worth of virtual pages. Using the ID-slug mappings talked about in the article, we implemented a partial router. The virtual pages are retrieved from a third party system, and their titles occasionally changes. When this happens, a new URL is created to match the …

Useful safety check for the property and content type subset functionality

In the articles Different subsets of properties in different EPiServer multi sites using same content type model and Different subsets of content types in different EPiServer multi sites with all types in one assembly you can read about adding subsets of properties and content types to different EPiServer installations that run on the same code. Here is a quick safety check that will save debugging …

Different subsets of content types in different EPiServer multi sites with all types in one assembly

As I explained in my previous article Different subsets of properties in different EPiServer multi sites using same content type model my current client is building a common platform for 7 websites spread over 3 EPiServer installations. As the platform grew the need for restructuring grew as well. It was no longer viable to keep all content types in separate assemblies in order to add …

Different subsets of properties in different EPiServer multi sites using same content type model

For my current client we are building 7 websites spread over (at least) 3 EPiServer multi site installations. Rather than seeing each of them as separate entities, they all consume the same base code from a common platform (such as infrastructure, EPiServer content types, and so on). An issue that you’re facing when using the same block or page type on several EPiServer installations is …

Page instance based EPiServer Output Cache

For a client’s website there was a need to implement EPiServer‘s output cache with different expire times not based on PageType, but rather page instance. After weighing pros and cons we decided on a solution with a number of ContentArea properties on the website’s settings page. Pages dropped in each area would then get different cache timeouts depending on property. Also, thanks to Svante Seleborg …

EPiServer Content Delivery Api only returns 404 NotFound

Lately I spent some time investigating 404 NotFound responses from an EPiServer Content Delivery Api installation. While the SiteDefinition Api URL worked just fine, the problem was that the API returned 404 NotFound for all contents requested. Here are some pointers to determine possible reasons. Thanks to Svante Seleborg for helping out with debugging. EDIT: Matthew Mols have written an useful article for Getting started …

React and EPiServer: Removing properties from output in EPiServer.ContentDeliveryApi

If you read my previous article React and EPiServer: Aggregated output with EPiServer.ContentDeliveryApi you saw a way of including your own aggregated data through properties in the content model classes. Since the JOS Content Serializer also has a very useful ignore attribute, ContentSerializerIgnoreAttribute, I’d love the EPiServer Content Delivery Api to have one as well. Removing superfluous properties from EPiServer ContentDeliveryApi output Since the EPiServer …

React and EPiServer: Aggregated output with EPiServer.ContentDeliveryApi

If you read my previous article on React and EPiServer: Moving to EPiServer Headless (EPiServer.ContentDeliveryApi) with friendly URLs – Quick POC, you’ll know I wanted to output EPiServer Content information by friendly URL to a page rather than using the headless API’s own paths. This I did, but what about aggreagated information? You know, the stuff that are using for instance content from other EPiServer …

React and EPiServer: Moving to EPiServer Headless (EPiServer.ContentDeliveryApi) with friendly URLs – Quick POC

So EPiServer released a beta version of the ContentDeliveryApi. Nice. My current client uses the JOS Content Serializer for creating JSON data from EPiServer pages for view, preview and on-page-editing with React, as described in previous articles. However, sooner or later it will be neccessary to start using EPiServer’s own methods for this. I had a quick look at the API functionality, and it seems …

EPiServer’s ServiceLocator will not prevent you from doing proper unit testing

I often hear people saying things like “Don’t use the ServiceLocator, you can’t write unit tests with it”, or “EPiServer‘s ServiceLocator will really cause problems in your unit tests”. It really will not though, and it’s quite easy to set up. Simple base class for unit testing with EPiServer’s ServiceLocator Quite often the argument is that the ServiceLocator’s container and your mocking framework’s container are …

React and EPiServer – Generic pass-through property handler for JOS ContentSerializer

In a previous article I wrote about React and EPiServer – Custom rendering of EPiServer block in XhtmlString field without partial block controller, as we’re using the JOS Content Serializer to make JSON of our EPiServer content. This is in order to pass it to React. We were using the version 2.0.1, and it differs a bit on how things are done now (currently latest …