Our blog contains the activity stream of Orchard Dojo: general news, new resources or tutorials are announced here.

Centralize the Indexing process, Remove Media files for a removed tenant when using Azure Blob Storage - This week in Orchard (20/06/2025)

This time, you can see a demo about centralizing the Indexing process and having a unified UI for managing Indexes and the Search Settings! But first, let's look at our other topics, like removing Media files for a removed tenant when using Azure Blob Storage, and adding RouteEndpoint cache. Don't forget that you can still fill out our Orchard Core Admin UI experience renewal survey to help shape the future of Orchard Core!

Latest tutorials

Featured tags

IIS
API
SMS
SEO
MCP
All tags >

Extending ISetupEventHandler with new events, your DotNest site (almost) never goes down - This week in Orchard (22/09/2023)

Extending ISetupEventHandler with new events, do not specify placement position in the content field/part display drivers, and a blog post about the reliability of your DotNest sites! Let's see the details in our post! Orchard Core updates Extending ISetupEventHandler with new events We have an ISetupEventHandler interface in Orchard with a method called Setup. When there is a setup on a new tenant, we call this method. Now this method is marked as an obsolete one and will be removed in future releases. If you rebuild your Orchard Core solution in the future, it will tell you to use the new SetupAsync instead. If you have an implementation of this interface, it will still work because the newly added FailedAsync and SucceededAsync methods have default implementations. It means you don't need an abstract base class. Do not specify placement position in the content field/part display drivers Content elements or fields can be attached to a content type. Their UI placement should follow the subsequent guidelines. So, if the first step defines a position, we use that position and look no further. DisplayDriver. A placement is defined on the UI using the OrchardCore.Placements. The placements.json file. Default Position in the content type. Otherwise, it should fall back to the physical placement of the object in the content definition. For this logic to work as expected, the ContentPartDisplayDriver or the ContentFieldDisplayDriver should define a placement location by default, but not a placement position. This way, we can allow to change the order using Steps 2-5 as needed. In the following drivers, we seem to be defining a placement position that prevents the user from being able to change that position at all. FacebookPluginPartDisplayDriver BagPartDisplayDriver FlowPartDisplayDriver HtmlBodyPartDisplayDriver LiquidPartDisplayDriver MarkdownBodyPartDisplayDriver TaxonomyPartDisplayDriver TitlePartDisplayDriver For example, today if you use HtmlBodyPart, there is no easy way to change its placement because the HtmlBodyPartDisplayDriver defines a position 5. Meaning if you have a placement in the driver, there is no easy way to override it from the UI. If we leave these positions, blank it will fall back to the user settings. News from the community Your DotNest site (almost) never goes down Orchard Core and Orchard 1.x sites you host on DotNest almost never go down, with 99.99% availability in the last 3 months. Check out the details in our latest blog post here. If you haven't done it already and want to host your sites on the hugely reliable DotNest, create your site here! We also guarantee reliability in our Terms of Service. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 505 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Support more searchable file types in Elasticsearch, having a community manager - This week in Orchard (15/09/2023)

Add support for multiple media files in Elasticsearch and support more searchable file types in Elasticsearch! Let's see the details in our post and jump into a discussion about having a community manager! Orchard Core updates Add support for multiple media files in Elasticsearch We support searching PDF files in Elasticsearch. We do this by reading the text of the PDF file found in Media Field and saving the text from the PDF file into a custom index in Elasticsearch. This is great, because now anytime a user searches for a text found in the PDF file, we return the content items where the PDF belongs. The problem is that we only store the text of the first attached PDF file, not all of it. The solution is when trying to index a Text/String-based field, we should add all the values to the same index key. This will allow the content of multiple files to be indexed as expected. Support more searchable file types in Elasticsearch And while we are talking about improving Elasticsearch, here comes another goodie again by Mike Alhayek! Until this improvement, we only supported searching in PDF files in Elasticsearch, but we should be able to search .doc, .docx, .txt, .rtf, .ppt, .pptx. We can easily use Open XML SDK to add this support. The Open XML SDK provides tools for working with Office Word, Excel, and PowerPoint documents. If you navigate to Configuration -> Features, you will find a new feature called Media Indexing, which extends the media indexing capability to also encompass searching within files with the following extensions .txt, .md, .docx, and .pptx. If you check the files under the Indexing folder of the OrchardCore.Media library, you will find three new ones called PresentationDocumentMediaFileTextProvider, TextMediaFileTextProvider, and WordDocumentMediaFileTextProvider allowing you to index the content of the mentioned file types. News from the community Having a community manager The community had a discussion last week about having a community manager. There is no person in the Orchard world who would pretty much deal with marketing and design for Orchard, like doing that for a product. Things that a marketing manager or a product owner or something like that does for a paid product. Orchard Core is not like that but for open-source projects and communities, a community manager is the person who does such things. Get the word out, and evangelize Orchard, not just in word-of-mouth but in a systematic way. Make marketing in general and shepherd the project, so it follows the requirements and the needs of the community, and the manager responds to what happens in the world and does things that developers don't really like to do. Let's have this discussion in detail! Do you agree, do you have people you think would be suitable? What do you think about this? Chime into the following discussion and tell us your opinion! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 521 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Orchard Core 1.7, customizable user display name and avatar - This week in Orchard (08/09/2023)

We are thrilled to announce that Orchard Core 1.7 is now available! Check out this post to know everything about the latest release of Orchard Core. In the upcoming weeks, we will check out the newest features and additions of Orchard Core 1.7. Let's get started! Orchard Core updates Add GraphQL types to the SEO module The SEO module of Orchard Core provides Search Engine Optimization (SEO) features: Meta description, keywords, robots, and custom meta tags Canonical URL Open Graph metadata Twitter Card Tags Google schema If you enable the SEO module, you can attach the SeoMeta Part to your content type that allows SEO meta descriptions to be applied to a content item. Let's enable this module and attach the SeoMeta Part to our sample Blog Post content type! Now, if we edit the predefined blog post, we will have a SEO tab, where we can provide the SEO-related settings. The issue was all the Seo meta fields should appear in the GraphiQL interface and be queriable. To test out this fix, we have to navigate to Configuration -> GraphiQL and run a query where we want to check out the SEO meta-related fields. Here you can see that we printed the page title, the canonical URL, and the meta description too. Fix the admin UI sort When you import many contents with the same ModifiedUtc, the pager logic will not work correctly and some items will be skipped when trying to paginate. With this fix, we add a sort by ID after the sorted value to ensure no records are skipped due to the identical value. Demos Customizable user display name and avatar We wanted a way to be able to change how the user name is displayed because the user name itself is too technical. We really don't have a way to change the displayed user name, so the CrestApps.Components.Users NuGet package contains a feature called User Display Name, that provides a way to change how the user name is displayed. The other feature of this package, User Avatar, provides a way to display an avatar for each user. Let's add this package to our Orchard site and enable both features under the Configuration -> Features screen! Now if you head to Security -> Users and edit a user, you will find a way to upload an avatar. If you do that and hit Save, you can see your avatar in the top-right corner and in the content items list if you navigate to Content -> Content Items. The other feature is about changing the whole name. First of all, let's navigate to Configuration -> Settings -> User Display Name! Here you can change how you want the name to be displayed using the Display Name Format select list. Here we specified the First Middle and Lastname format but you can say that you want to use a custom format (if the predefined ones are not suitable for your needs) and use Liquid to define your own format. We also say that you have to specify the first name and the last name for every user (if you edit a user, these values will be required) but the middle name is optional. We will not need the display name text box on the user editor, we will generate it using the display name format. If we edit an existing user, we will have the First Name, Middle Name, and Last Name text boxes. If we enter some values inside, you will see that the format of the user name has been changed in the top-right corner (and in the content items list if you navigate to Content -> Content Items) based on the format we have just set up earlier. If you would like to know more about these features along with some technical details and more goodies, head to YouTube for a recording! News from the community Orchard Core 1.7 The community recently released the latest 1.7 version of Orchard Core with several new features and additions! There's a new SMS and SMS Notifications module that provides a way to send SMS messages and notifications to users using SMS services. And by utilizing the new two-factor SMS Method feature, you can also transmit a two-factor authentication code to the user via SMS. And yes, this means that starting with version 1.7, Orchard Core is shipped with everything you need to secure your app with two-factor authentication. The Lucene and Elasticsearch features are capable of searching within PDF files because PDF files are indexed by default. As an enhancement, we added a new feature called Media Indexing which extends the media indexing capability to also encompass searching within files with the following extensions .txt, .md, .docx, and .pptx. And we have a lot more to cover! Here are all the details of the release. Orchard Core is available as a NuGet package which you can easily add to your ASP.NET Core solution. Here’s how you can get started with Orchard Core. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 547 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

New Catch Workflow Fault Event, interactive mode in the Lombiq UI Testing Toolbox - This week in Orchard (01/09/2023)

New Catch Workflow Fault Event, add additional text info to the Content Picker Field, and a demo about adding an interactive mode to the Lombiq UI Testing Toolbox! Check out our post for the details! Orchard Core updates New Catch Workflow Fault Event If you have the Workflows feature enabled, you can create workflows by clicking on the Workflows option from the admin menu. Here, you can create workflows and add events to your workflows by clicking on the Add Event button. In the list of available events, you will find a new one, called Catch Workflow Fault Event, that triggers and captures exception information when an exception occurs in any other workflow. If you select this event, you will find a text area called Trigger Condition, and the code inside it is automatically generated when you open the editor of the Catch Workflow Fault Event for the first time. Add additional text info to the Content Picker Field Let's play around a little bit with a site that we set up using the Blog recipe. First of all, we want to have an option where users can assign pages to blog posts, like "if you need more info, check out this page, or click here for this related content, and so on.". To do that, we can utilize the Content Picker Field. If we navigate to Content -> Content Definition -> Content Types and hit Edit near the Blog Post content type, we can find the Add Field button. By clicking on it, we can set the display name (let it be Related pages in this case) and select the field type (Content Picker Field). Now we can click the Edit button near our new Related pages Content Picker Field and do the magic here. We set up this field to allow multiple elements to be selected and said that we only want to choose from Page content types when working with this field. But the new stuff is the Title Pattern editor. Here, you can define the pattern used to render the title with Liquid support. Here, you can see that this field renders the Display Text of the content items by default (keeping the current behavior), but you can modify this as you want. This can be a huge help for other users because, for example, using only the display name has become a problem for multilingual sites with pages named "blog" in multiple languages. Here, we modified the pattern to include the display URL too, not just the display text of the content items. And now, the last step is to try this out in action! We will just simply edit the predefined blog post and click on the Related pages Content Picker Field to see what will happen. As you can see, we have two Page content items on our site where we used the sample display name. It's hard to distinguish the content items but by seeing the URL too, we have an idea which Page could be which one. OK, maybe we are not using the best URLs for illustration, but I think you get the point here. :) Demos Interactive mode in the Lombiq UI Testing Toolbox Maybe you have already heard about the Lombiq UI Testing Toolbox, our web UI testing toolbox mostly for Orchard Core applications. Everything you need to do UI testing with Selenium for an Orchard app is here. We wrote about it several times here as well, first when we open-sourced it, when we added some Orchard Core Features tests to it when we added the automated monkey testing feature to it, and when we introduced the Visual verification testing. At the end of last year, we showed you the latest updates about integrating UI testing into Orchard Core and the way you can use WebApplicationFactory or a fake video capture source. This time, we will check out a slightly different topic! Basically, the Orchard Core process and the UI testing process are running together, you can't actually do testing and continue running the web application itself. So, for that, we have a new method called SwitchToInteractiveAsync, which enables the interactive mode for debugging the app while the test is paused. If you run the test, you are able to pause at that point, like hitting a breakpoint when debugging the code. So, sometimes you want to debug the test session, and assuming direct control would be nice. But you can't just drop a breakpoint in the test, since the Orchard Core web app and the test are the same process so it would pause both. The SwitchToInteractiveAsync extension method opens a new tab with info about the interactive mode and, then causes the test thread to wait until you've clicked on the "Continue Test" button in this tab. During that time, you can interact with OC as if it was a normal execution. If you open up the InteractiveModeTests.cs file, you will find a demo of the feature with two tests: SampleTest and EnteringInteractiveModeShouldWait that illustrates how you can use the new SwitchToInteractiveAsync extension method. If you want to know more about this feature, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 535 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Add support for user phone number, SMS support and two-factor authentication using SMS service - This week in Orchard (25/08/2023)

Add support for user phone number; add styling to Pager in TheAdmin theme, and a demo about SMS support and two-factor authentication using SMS service! Check out our post for the details! Orchard Core updates Add support for user phone number Currently, we do not support PhoneNumber in the UserStore, which is supported in the default identity implementation, and it's a nice feature to have if you are implementing an application that requires the user to enter and confirm their cell phone number, similar to the way email verification works. The latter is easy since UserStore implements IUserEmailStore, but when using UserManager.GenerateChangePhoneNumberTokenAsync, the call fails with a NotSupportedException: Store does not implement IUserPhoneNumberStore<TUser> exception. From now on, UserStore implements IUserPhoneNumberStore, updating User accordingly by adding a Phone property. This means a phone number is now supported in the UserStore and the User object. Let's see what the new field looks like in the user's profile! If you navigate to Security -> Users and hit the Add User button, you will find the new Phone Number field there. You may notice a black exclamation icon at the end of the editor, meaning that the phone number for this user is unverified. Add styling to Pager in TheAdmin theme This change is about improving the look and feel of the Pager across the admin UI. New views in TheAdmin theme were added to style the pages at the theme level, no base shapes were altered. The pager looked like this: And after this change, it looks like this: Demos SMS support and two-factor authentication using SMS service In this demo, you can see a brand-new feature for Orchard Core, the SMS module. This module provides you with a way to have SMS services on your site, and then you can do whatever you want with them. There are actually three features around it, and we will check out all. SMS: Provides settings and services to send SMS messages. Two-Factor SMS Method: Provides users a two-factor authentication method through an SMS service. SMS Notifications: Provides a way to send SMS notifications to users. Let's enable all of them, and after that, you will find a new option under Configuration -> Settings, called SMS. Here you can configure your provider. You can choose from Log and Twilio. If you select the Log one, any message that is sent through the SMS provider will be just printed in the log files, like: "A message with the body {body} was set to {phoneNumber}". You can implement your own provider, but by default, we provide you with Twilio. Twilio is probably the most commonly used service. If you select it, you can configure it with the information that is coming from your Twilio account. So, this is the SMS module, and to build more on top of it, here comes the Two-Factor SMS Method feature. If you enable it, you can navigate to the Security settings, and add the new SMS authentication as a new two-factor authentication method. To do that, you have to verify your phone number, and you will get a verification code that you have to apply. The third feature is called SMS Notifications. With this module, you can actually deliver notifications through SMS. If you enable this and you can go to your user profile (Security -> Users), you will see another notification method here which is called SMS Notifications. And if you have the Workflows feature enabled, you can utilize a new task, called Send SMS, meaning you can send SMS messages directly from the workflow. If you want to know more about this feature, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 520 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Improve workflows page load time, Cloudflare CDN and protection for all DotNest sites - This week in Orchard (18/08/2023)

Rename Microsoft Azure Active Directory to Microsoft Entra ID; improve workflows page load time, and announce Cloudflare CDN and protection for all DotNest sites! Let's see the details in our post! Orchard Core updates Rename Microsoft Azure Active Directory to Microsoft Entra ID A few weeks ago, Microsoft announced significant milestones for identity and network access, including the news that Microsoft Azure Active Directory (Azure AD) is becoming Microsoft Entra ID. We have Azure AD integration in Orchard Core, and in order to authenticate users with Azure AD, you must enable and configure the OrchardCore.MicrosoftAuthentication.AzureAD and the OrchardCore.Users.Registration features. You can read more about the details here. So, due to Microsoft's recent rebranding, Azure AD has been renamed to Microsoft Entra ID. This only concerns UI labels and documentation, but technical identifiers remain, so you shouldn't expect anything breaking. Improve workflows page load time It takes several seconds to load the /Admin/Workflows/Types and /Admin/Workflows/Types/{TypeId}/Instances pages when there are a fairly large number (testing size: 500_000) rows in WorkflowIndex. There is a line in WorkflowTypeController that goes through the whole table of WorkflowIndex to then calculate (group by) in the code how many workflows are there per each type. In WorkflowController line 124 with the await query.CountAsync() it is for the same purpose but for only one workflow type, but this uses some additional joins which makes it even slower. You can easily reproduce this by having a fairly large number of finished workflows. Load the workflows page, or the type-specific workflow item list page and see that it takes several seconds to load. This issue has been fixed by removing the counting of each workflow type on the workflows listing page. And on the workflow instances list page changed to only fetch the document table for the workflows that are on the current page. News from the community Cloudflare CDN and protection for all DotNest sites Last week you could read that we published a case study about migrating the content of an old version of an Orchard Core website with a custom theme and modifications in the business logic of the Orchard Core Commerce module to DotNest. You can check out the case study here about how we achieved this with Ik wil een tart, a confectionery in the Netherlands! And now all DotNest sites are protected and sped up by Cloudflare! Head to the DotNest blog and check out the details here! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 505 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

IClientIpAddressAccessor interface, new Orchard Core site case study - This week in Orchard (11/08/2023)

Add a thumbnail to stereotype filter; IClientIpAddressAccessor an interface for accessing the client IP Address, and check out a case study of a new Orchard Core site using Orchard Core Commerce! Let's get started! Orchard Core updates Add thumbnail to stereotype filter In some cases, we want to create a menu item that would allow the user to manage content items of a specific stereotype. Currently, we only support single content types but not stereotypes. The goal of this change was to add a query parameter stereotype that would allow us to manage only content items that share the same given stereotype. We already mentioned this change a few weeks ago but from now on, this feature is more user-friendly because you can see a thumbnail about this filter inside the available filters list on the Manage Content page. You can reach this list if you click on the Filters icon near the Search textbox and select the Filter syntax from the drop-down menu. Add IClientIpAddressAccessor interface for accessing the client IP Address It can happen that you need to know the IP address of the client. For example, Orchard Core can save the client IP Address when logging events using the Audit Trail feature. From now on, you will see a new IClientIPAddressAccessor interface with a default implementation called DefaultClientIPAddressAccessor, which you can use to easily get the IP address of the client. News from the community Case study of a new Orchard Core site using Orchard Core Commerce DotNest is a SaaS provider that provides hosted Orchard Core and Orchard 1 web applications (think Wordpress.com for Orchard). This basically means that after registration you can create Orchard websites on DotNest without having to worry about hosting or maintenance. Orchard is always kept up-to-date and in good working order for you, you just have to use it. Several custom modules and themes are available for you on all Orchard Core DotNest sites. One of these is the Orchard Core Commerce module, which is the commerce module for the CMS containing features like handling taxation, shopping cart, and checkout. We published a case study about migrating the content of an old version of an Orchard Core website with a custom theme and modifications in the business logic of the Orchard Core Commerce module to DotNest. Check out this case study here to read more about how we achieved this with Ik wil een taart, a confectionery in the Netherlands! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 499 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Full-Text Search for Admin UI, Orchard Harvest recordings - This week in Orchard (04/08/2023)

Adding an option to allow the user to change the full-text search behavior in the admin UI, new Helpful Shell Extensions, and announcing that the recordings of the Orchard Harvest Conference 2023 are available on YouTube! Check out our post for the details! Orchard Core updates Full-Text Search for Admin UI Currently, when searching for content we search the DisplayText property. It can happen that we want to search content items for other fields like a stock number or serial number. Currently, the only way to do this is by adding any info we want to search for to the title. This may be acceptable in some cases, but not all cases. From now on, additional options have been introduced to enable control over the behavior of the full-text search in the administration user interface for content items. Check out this documentation for details about how you can do that by implementing the IContentsAdminListFilterProvider interface and registering the custom default term name as a search option by adding it to the ContentsAdminListFilterOptions. Helpful Shell Extensions The goal of this change is to introduce various extensions related to tenant management that the contributors can utilize in the future to improve the code quality of Orchard Core instead of doing the same checks repeatedly. And of course, you can use these extensions in the future in your own custom code as well! We have three new classes (ShellContextExtensions, ShellSettingsExtensions, and ShellStringExtensions) with extension methods that tell you whether the tenant is running or not, whether or not the tenant has one of the provided URL hosts, whether or not the tenant is in use in at least one active scope, and so on. News from the community Orchard Harvest Online Recordings We had the first online Orchard Harvest, and it was great to see that we had 188 sign-ups for the conference! It was an excellent opportunity to share knowledge, talk about development plans and ideas, and foremost, meet the rest of the worldwide community. And of course, we recorded every session, which means they are now available on YouTube! Click the link to rewatch all the inspiring talks and discussions! That was a blast! Thank you again, everyone, for taking part, and thanks to the presenters for their great presentations! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 497 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

How to migrate an Orchard 1 application to Orchard Core, support login via username or email address for OpenID - This week in Orchard (28/07/2023)

Support login via username or email address for OpenID, Liquid themes shouldn't need Razor support for MVC, and don't forget to take a look at our blog post about how to migrate an Orchard 1 application to Orchard Core! Check out our post for the details! Orchard Core updates Support login via username or email address for OpenID When using the built-in OpenID feature of Orchard Core, you can get an access token by making a POST request to /connect/token endpoint. In the request, you can specify the grant_type, scope, username, password, and client_id. You can use the username in the username parameter, but if you try to use the email address of the user, it won't work. According to this discussion thread, there is a change to not allow the username = email. However, there should be a fallback to authenticate by username or email. So, the goal of this change is to be able to use a username or email to log in. As you can see, now the code utilizes the updated GetUserAsync method, which gets the user by a specified username or email address. Liquid themes shouldn't need Razor support for MVC When developing a theme, you can decide to use Razor or Liquid files. But of course, you can mix Razor and Liquid files if you want. Originally the Blog Theme was only composed of Razor files that the community migrated step by step to Liquid. And we are only using Liquid files for the Agency Theme and the Coming Soon Theme as well. So, these are themes that currently only use Liquid files. And because of that, we can remove the AddRazorSupportForMvc tags from these themes. News from the community How to migrate an Orchard 1 application to Orchard Core You may have heard about the news that we migrated from our old Orchard 1 website to Orchard Core and modernized our site's look. Our new site turned out great, and we are very happy with it. It represents who we are and what we do as a company. We hope you like it too! For our case study on building the renewed Lombiq.com, including migrating it from Orchard 1, check out How We Renewed and Migrated lombiq.com from Orchard 1 to Orchard Core in the Lombiq blog, and check out this announcement in this video. If you are also planning to migrate your Orchard 1 website to Orchard Core, and want to read more details about how you could start to migrate your website and content, search no more, we have published a detailed article on Orchard Dojo with some samples as well about how you could start and enjoy the numerous remarkable benefits by migrating to Orchard Core. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 491 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

New Meta Pixel feature, Enhance the two-factor authentication process - This week in Orchard (14/07/2023)

New Meta Pixel feature, in progress indicator for the Attached Media field, and a demo about enhancing the two-factor authentication process and making the UI extensible. Check out our post for the details! Orchard Core updates New Meta Pixel feature We have multiple integrations with Meta. But we do not have a way to enable Meta Pixel like we do for Google Analytics. But what is Meta Pixel? The Meta pixel is a piece of code for your website that lets you measure, optimize and build audiences for your ad campaigns. You can think of this as an analytics tool that allows you to measure the effectiveness of your advertising by understanding the actions people take on your website. So, from now on a new feature called Meta Pixel was added to allow you to easily enable Meta Pixel tracking into your website. Due to Facebook's recent rebranding, all of the Facebook features have been renamed to Meta. This only concerns UI labels and documentation, but technical identifiers remain, so you shouldn't expect anything breaking like classes and project names still say Facebook to prevent breaking change. But how can you use this new feature? First of all, navigate to the admin UI of your site and enable the Meta Pixel feature under Configuration -> Features. This will show you a new option under Configuration -> Settings, called Meta Pixel, where you can provide the Pixel ID found on the Meta Data Sources portal. In progress indicator to the Attached Media field When you add a file to an attached media field, it uploads the file once you select it, but it does not indicate that it is uploading, so if you have a large file like audio or video that takes some time to upload, it looks like it just didn't add the file. This change introduces a progress bar showing you the current progress of the file, that you would like to upload. This PR also fixes an error about messages not showing in this editor, like the "This file exceeds the maximum upload size". To try out this feature, we just simply modified the content definition of the built-in Blog Post content type by adding a new Media Field to it. After we set the editor type of this field to Attached, instead of Standard. Finally, we edited the predefined blog post content item and tried to upload a file utilizing the newly added Media Field. Demos Enhance the two-factor authentication process and make the UI extensible A few weeks ago, we showed you a demo about adding the two-factor authentication feature to Orchard Core. This time we will see some improvements related to the 2FA feature. The first issue was the UI was not extensible, and we only have an authenticator app to use as a 2FA. Sometimes you might not want to use the authenticator app, you might want to authenticate users with other methods like email or SMS. From now on, we have a way to extend the 2FA in a way where we can say I want to enable the app authenticator, I want to enable an email authenticator, but you can implement your own authenticator, whatever the case might be. Let's see this in action! After you set up your site, head to Configuration -> Features and search for the two-factor keyword. This will list 3 features related to 2FA. Two-Factor Authentication Services: Provides Two-factor core services. Two-Factor Authenticator App Method: Provides users with a two-factor authentication method through any Authentication App. Two-Factor Email Method: Provides users with a two-factor authentication method through an Email service. For this demo, we will enable all of these features. Now, let's create another user in the system with the Contributor role for example. When we login with that user, we can navigate to the Security page (which you can reach under the /TwoFactor URL or by clicking on the Security option using the drop-down, which you can see if you click on the user icon on the top-right corner. Here you can see the site says two-factor authentication is not enabled yet, in order to enable it, you have to add a two-factor method. You can allow email authentication by clicking on the Verify Email button. You see this button here because this user hasn't verified their email address yet. If you click on this button you have to request a code, and this user will get a code via email, which they can paste here. After verification, the email address of this user has been confirmed, and the site displays the recovery codes to log in with. If you go back under the same screen under Security, you will see that the email is verified and 2FA is enabled because we have just enabled it. Let's quickly add a second method, which is the authenticator app. If you do that, you will have two authentication methods, and using the Preferred Two-Factor Method drop-down, you can select your preferred method. Let's select the Email one, for example. Now, let's log off and try to log in again to see what will happen. The first thing that you can see here is it's asking to authenticate via email. If for some reason, we don't have access to that email, there is a new option here called Sign in another way. You can also log in with your recovery codes if you have them. If you click on the Sign in another way link, it's prompting me to use the other method, which is the (non-default) app authenticator. The reason why we can use both methods is that we enabled the Two-Factor Authenticator App Method and Two-Factor Email Method features. And as we mentioned, from now on, you can implement your own method (SMS, for example) and can extend the list of the two-factor methods. And that's not nearly all of the improvements! If you want to know more about this feature, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 474 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!