.NET5 and .NET6 has no concept of output caching, and neither does Optimizely Content Cloud 12. When adding output cache, there are a few things to consider - visitor groups are one of them.
.NET 5 has reached end of support - you should update to .NET 6 today!
In Optimizely CMS 12 the admin mode is given a real facelift. There are graphs and stuff! But is it still the same under the hood...?
Wave goodbye to the EPiStateMarker cookie!
.NET5 and .NET6 has no concept of output caching, and neither does Optimizely Content Cloud 12. Don't let that stop you from caching your output!
Optimizely CMS 12 can finally convert pages from one page type to another! Great! But what about blocks and media...?
In Optimizely DXP, you can't access the live production environment directly. However, you can still download the database and blobs!
Is it possible to upgrade an add-on to support .NET 5 and Optimizely CMS 12 in just three minutes? Hold my beer!
Sanity has launched a new feature called field groups. Field groups work almost as tabs. Learn how to make them work exactly like tabs!
Learn how to renew your Optimizely Content Cloud developer certification for free!
The Content Delivery API adds headless capabilities to your traditional Optimizely Content Cloud CMS. Get started smoothly, without doing the same mistakes as I did...
Optimizely Content Manager is a lightweight editing UI that aims to make publishing content easier, as it takes away some of the complexity. I like the idea, but here are still some major issues!
The time zone for a Windows-based Azure WebApp can be set using the WEBSITE_TIME_ZONE app setting. If you try the same with a Linux-based WebApp you may find yourself in trouble. Read how to do it!
The newly released GROQ-powered webhooks for Sanity unlock some interesting new possibilities. Use the query language GROQ to define which documents should trigger a webhook and what its payload should be. See how to post messages directly to Slack!
Sanity recently launched their GROQ-powered webhooks, and they are really powerful! But there is a bug...
Using Sanity Studio, you can delete documents one by one. What if you want to delete hundreds of documents? Do it the easy way, with Sanity CLI, GROQ CLI and xargs!
Using Sanity Studio, you can delete documents one by one. What if you want to delete hundreds of documents? Do it the hard way, with Sanity CLI, Notepad++ and regex!
When Episerver rebranded to Optimizely, the World website lost its developer focus and the community updates are not as easy to find anymore. Learn where to find them now!
The Optimizely (formerly Episerver) user interface has a link to the User Guide, you can update this link if you want to.
By default, all pages in your Optimizely page tree look the same. With custom icons, you can add your personal touch, and make it easier to visually separate the different types of pages.
When upgrading Optimzely Content Cloud, the database schema might need updating too. Confused? Let me explain...
A scheduled job is Episerver's/Optimizely's way of running some piece of code at a configurable interval. If there is a chance that code could change in the future, you should add a GUID when you create it!
Episerver Forms submission data older than 30 days can be unexpectedly deleted, even if the form is configured to keep submissions forever. If you are using version 4.30.1 or 4.30.2 - I would recommend upgrading ASAP!
Yesterday Optimizely announced the addition of 11 new Most Valuable Professions - OMVPs! Congrats and welcome!
Content Manager is finally updated, and it's now possible to create and publish content without going through a bunch of meaningless steps.
Increase web performance by lazy loading images! With native browser support it's easier than ever!
Cross-Origin Resource Sharing (CORS) can be blocked (default), or easily be enabled for a single domain, or all domains. But, what if you want to enable CORS for a list of domains?
No! Optimizely Content Manager is a lightweight editing UI that aims to make publishing content easier, as it takes away some of the complexity. I like the idea, but here are two main issues left before Content Manager could be used in a production environment.
Do you ever find yourself switching from on-page editing view to all-properties editing view to access basic information about the current page in Episerver CMS? You don't have to do that! Just scroll upwards!
I enjoy poking around in the Episerver database, so I made an addon to make it easier! Enjoy autocomplete, save your favorite queries for later - but be careful!
If you are doing manual updates directly to your Episerver database, or performing an upgrade that updates the database schema it could be a good idea to have a backup from the exact time right before the change is made. In Azure, you always have!
Det er ofte snakk om ny teknologi, men man kan også finne løsninger ved å se langt, langt tilbake i historien. Til og med hakkespettboken skrevet for over 2000 år kan løse dagens sikkerhetsutfordringer!
For noen måneder siden var det ikke fritt frem for å opprette SQL-databaser i Azure-regionen Norway East - men nå er det! Jeg viser hvordan man kan flytte en Azure SQL-database på tvers av regioner.
If you are faced with this error message when you log into Episerver Edit mode, do not fear. It can be easily fixed.
If someone deletes a page from an Episerver site, you can figure out what happened by looking at the changelog. What if someone changes access rights? I show how to locate pages that have their access rights set explicitly.
Files uloaded to an Episerver Form, can not be accessed without logging in. Unless...
When deploying your site to Episerver DXP, there are so many options. Some are quite fast, some are super slow. I show how to deploy to the Integration environment the fast way, using Azure DevOps.
When deploying your site to Episerver DXP, there are so many options. I show how to deploy using Azure DevOps, the deployment API, and Epinova's DXP deployment extension.
With Update 346, released today, the product name has finally been changed from «Episerver Find» to «Episerver Search & Navigation» in the user interface. Upgrade now, and get a free Server Error!
If you write code that is likely to fail, it is good practice to wrap that section of code in a try-catch-clause and handle the exception. For scheduled jobs, it's the opposite! If something fails, be sure to throw that exception!
Have you ever wondered what your long-running scheduled job is doing right now? Are you waiting for it to finish, and considering if you have time for a coffee? Make your jobs give feedback!
Have you ever wanted to kill a long-running scheduled job? You can! Also, make sure the job restarts if the hosting environment shuts down.
Episerver is perhaps not the most used platform for developer blogs, but adding code snippets can be useful in other scenarios too. Adding syntax highlighting to TinyMCE is easy, using the Code Sample plugin. It works well with both Prism.js and Highlight.js, two popular syntax highlighters.
After completing part 1, setting up syntax highlighting with the bare minimum, it's time to let your code shine. Highlight.js has 95 different styles, or themes. Find one that you like, and go for it! Also, customize the list of available programming languages.
I would like to display the name of the programming language in the top right corner of my code snippets. One problem with this is, that I do not want to add any extra markup. I want to use the unmodified Code Sample plugin, I want to be able to change or reposition the label in the future.
Descriptive alt texts on images are important, but in TinyMCE the field is called «Image Description». You can change that!
When publishing images online, it's important with good alt-texts. Episerver has a bug that, by default, creates very unhelpful alt-texts. I explain, and present a workaround.
Tidssonen for en Azure WebApp vil være UTC som standard, men dette kan endres med en AppSetting.
After disappearing in Episerver.CMS.UI 11.21.0, the globe is finally back in Episerver.CMS.UI 11.30.0.
A few missing pieces of localization configuration could stop «My Settings» from working. Let's fix it!
When creating Episerver tools, editors and plugins, maintaining a consistent look and feel is a good thing. See what icons are available!
Reading the documentation, Episerver Social Reach sounds like a nice tool, being able to post to multiple social media from the same user interface. I'm sorry, but Episerver Social Reach is dead!
Når egenskapene i Episerver blir for mange, kan det lett oppleves kaotisk. Jeg viser hvordan vi kan rydde og gruppere, så det blir enklere å finne frem.
You can have multiple pages with the same name, you can even have a block and an image with the same name. When we are communicating about content, the name is not always the best.
The search bar above the page tree in edit mode makes it easy to locate content without browsing the page tree. If you want to search for the page id, we should make some improvements!
Content in Episerver CMS is organized using pages and blocks. If you by accident create the wrong page type, Episerver provides a feature for converting pages to a different page type. But what about blocks? Can they be converted? No! I had a look, and I was able to convert blocks too!
See how to modify the global Episerver menu!
After the introduction of TinyMCE editor v2, creating an initialization module is the recommended way of configuring TinyMCE in Episerver. This works well when you want the same configuration for all your XhtmlString properties, but that is not always the case.
Safely rename an Episerver property, and retain the value it had before it was renamed, using a migration step.
Until the release of EPiServer.CMS.Core 11.14.0 renaming a custom property was not that easy, now we can just add a GUID to our PropertyDefinitionTypePlugIn-attribute!
I made a module for Episerver CMS that uses Microsoft Azure Cognitive Services Computer Vision API to generate automatic metadata for uploaded images.
Using UIHint you may choose if a string property should be displayed as a single-line or a multi-line editor. But why is the multi-line editor so wide, and the single-line editor so narrow? We can fix that!
Using an EditorDescriptor, it is possible to add a property count to each tab in edit mode. Now, we can easily see how many properties that reside in each tab.
With the introduction of the GDPR storing personal information is not something that should be taken lightly. Using Azure Cognitive Services it is possible to identify what's in the images that editors, or users, upload to your site. You may then choose to take action, based on the identified content and your policy.
Have you ever published a meaningless change to a Episerver page, just to make sure the Find index is up to date? Have you struggled with the Find UI to figure out what’s indexed for the page you just had opened in edit mode? One simple addon solves both problems!
When upgrading both Episerver CMS and Episerver Find at the same time. Do not trust Episerver to handle updating both database schemas, things might blow up!
After upgrading to Episerver.Find Episerver.Find 13.2, queries started to fail. Adding an undocumented setting introduced in 13.2.4 is necessary for on-premise installations.
After upgrading from CMS 10 to CMS 11, I was puzzled by this exception occurring on all pages. It turned out it was quite an easy fix, and also documented in the list of breaking changes.
I’ve previously described how you can move built-in Episerver properties to a different tab. This will only work perfectly if the destination tab already contains another property for the same page. If not, the title will look strange, the sort order will be missing, etc. Today we will move a property to a non-existing tab!
There are several methods that will give you an URL to a Episerver content, but they do not all work the same. I dive into the details
In Episerver CMS, you are probably familiar with the concept of grouping properties into tabs. I show how you may move Episerver's built-in properties, and even tamper with the special tab PageHeader.
Episerver has several built-in property types you may add to your content types, including DateTime that displays a date and time picker. Sometimes you do not want the time, only the Date!
Do not confuse your editors. If they do not use the property, the do not need to see it!
When the new and refreshed editor UI was released, the search box above the page tree in edit mode broke! I show you how to fix it, using a custom search provider.
Preventing broken links is an important part of maintaining a website. Episerver's Link Validating job tries to help us, but unfortunately, it has its shortcomings.
Episerver Find could make your website unusable in China. I explain why this happens, how you can fix it.
MediaData, the base class for files and images in Episerver, does not implement ILocalizable and thus does not have the option to include culture-specific properties. I present a workaround.
Editing image properties would be more intuitive if we could see both the image and the properties at the same time! Let's add image preview to All properties view!
The attributes [SelectOne] and [SelectMany] can be used in combination with a SelectionFactory to create Episerver properties in the form of DropDownLists and CheckBoxLists. Let's make them work in one-page edit!
The texts in the Episerver UI can sometimes be confusing for the editors. Luckily, we can override all texts stored in Episervers language files, in two easy steps.
See how to replace the language code in the Episerver page tree with the full language name.
You can add a placeholder, watermark, or (as Episerver calls it) a prompt to some properties. See how it's done!
How to fix a Configuration Error after upgrading to Episerver CMS 11.
Jeg sjekker ut de nye egenskapene til Episerver, ser hvordan de fungerer, og hvordan vi kan gjøre tilpasninger.
Livet som nettredaktør kan være vanskelig. Led dem på rett vei!
A form with more than a handful form elements can get incredible slow, if you use the element «Rich text (with placeholder)». I came across a form that took 25 seconds to load, resulting in over 700 calls to the database. Some rewriting got the loading time down to 256 milliseconds!