<rss version="2.0">
  <channel>
    <link>https://orcharddojo-net-staging.lombiq.com/Contents/ContentItems/orcharddojoblog00000000000</link>
    <description><![CDATA[]]></description>
    <item>
      <title>Copilot Integration, Last call: Speaker application for Orchard Harvest 2026 - This week in Orchard (01/05/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/copilot-integration-last-call-speaker-application-for-orchard-harvest-2026-this-week-in-orchard-01-05-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Support static data migration methods</h3><p>Public static data migration methods are now supported for <em>Create</em>, <em>CreateAsync</em>, <em>UpdateFromX</em>, <em>UpdateFromXAsync</em>, <em>Uninstall</em>, and <em>UninstallAsync</em>, so CA1822 suppressions are no longer required for migration steps that don't use instance state. It means that all methods could now be static if we don't use services, and we can remove the warnings that say mark members as static.</p><p><img alt="Support static data migration methods" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/support-static-data-migration-methods.png"></p><h3>Make List Part pagination configurable</h3><p>From now on, for the <em>List Part</em>, you can choose to use the current <em>PagerSlim</em>, which just shows next and previous, or use page numbers as well. But don't forget that showing page numbers, too, requires an additional database query to determine the total item count. By default, we are still using <em>PagerSlim</em>. Thanks to <a href="https://github.com/ahlxjg" target="_self">Jack Liu</a> for his first contribution!</p><p>We can try this out quickly by setting up our site using the <em>Blog</em> recipe. The <em>Blog</em> recipe provides us with the <em>Blog</em> content type, which has the <em>List Part</em> attached. If we navigate to <em>Design -&gt; Content Definition -&gt; Content Types</em> and click <em>Edit</em> next to <em>Blog</em>, we can find the attached <em>List Part</em>, where we can see the new <em>Show full pager</em> checkbox.</p><p><img alt="List Part show full pager" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/list-part-show-full-pager.png"></p><p>Now, let's see the differences between using a full pager and not using one. On the left side of the screen, we can see the full pager in use. In this case, you can see the page numbers and the &lt;&lt; &gt;&gt; arrows to be able to jump to the first and the last page of the list. The right side of the screen shows you the <em>PagerSlim usage</em>, where you can only navigate to the previous and next pages.</p><p><img alt="PagerSlim and Full Pager differences" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/pager-slim-full-pager-differences.png"></p><h3>Demos</h3><h4>Copilot Integration</h4><p>Let's continue our journey with the <a href="https://github.com/CrestApps/CrestApps.OrchardCore/" target="_self">AI suite</a>, this time with the AI Copilot Orchestrator!</p><p>If you navigate to <em>Tools -&gt; Features</em> and enable the <em>AI Copilot Orchestrator</em> feature, it will provide a GitHub Copilot SDK-based orchestrator for AI chat sessions. Then, you can go to <em>Settings -&gt; Artificial Intelligence</em>, where you will see a new <em>Copilot</em> section. You can set the authentication type and choose between <em>GitHub Signed-in User</em> and <em>API Key (BYOK)</em>. The API Key can be used if you have this service hosted in Azure. For the sake of the demo, we chose the GitHub signed-in user authentication type and followed the steps mentioned to create a GitHub app.</p><p><img alt="Copilot authentication" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/copilot-authentication.png"></p><p>Now, we can go to <em>Artificial Intelligence -&gt; Chat Interactions</em>, where we can create a new chat or continue an existing one. Here you can select the orchestrator to use for this chat interaction. The orchestrator controls how tools are selected and how the AI execution loop is managed. If you select the <em>GitHub Copilot Orchestrator</em> here, the site will ask you to log in to your GitHub account. Once you have it, a new drop-down will display where you can select the Copilot model to use for this interaction.</p><p><img alt="Chat with Copilot" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/chat-with-copilot.png"></p><p>Copilot will be aware of all the capabilities that you select under the <em>Capabilities</em> tab, and it is also aware of the documents that you can attach under the <em>Documents</em> tab. And the same applies to profiles. You can reach profiles under <em>Artificial Intelligence -&gt; Profiles</em>, where you can edit/create profiles and set the orchestrator nearly the same way. Here you can <a href="https://orcharddojo.net/blog/managing-ai-models-and-profiles-reorganize-the-admin-menu-this-week-in-orchard-21-02-2025" target="_self">read more about Profiles and Chat Interactions</a>.</p><p>And as always, if you want to see this feature in action, <a href="https://www.youtube.com/watch?v=nnLqWw8e1YM" target="_self">head to YouTube for a recording</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>, and don't forget to check out the <a href="https://orchardcore.crestapps.com/docs/ai/copilot/" target="_self">official documentation about the Copilot Integration</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/nnLqWw8e1YM" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Speaker application for Orchard Harvest 2026 and Orchard Harvest 2025 recordings</h3><p>The next Orchard Core conference will take place in Vancouver, Canada, on the 10th and 11th of September.</p><p>Do you have an interesting Orchard Core-related topic that you'd like to present to the community? Development techniques, memorable case studies, and useful experiences that you'd like to share?</p><p>This year's leading themes:</p><ul><li>From CMS to content platform: where Orchard Core fits in 2026.</li><li>Automation superpowers: AI tools, recipes, and workflows in everyday projects.</li><li>Performance and reliability in Orchard Core.</li><li>Looking beyond Orchard Core 3.0: what’s next for the platform and community.</li></ul><p>Application form: <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u" target="_self">https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u</a></p><p>Apply to be a speaker by the <strong>5th of May</strong>, midnight, anywhere on Earth! We'll notify you whether your talk is selected for Harvest in 1 or 2 weeks after the application period. The chosen speakers will receive complimentary tickets for the event.</p><p><img alt="Orchard Harvest 2026 speaker application" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/orchard-harvest-2026-speaker-application.png"></p><p>The 8th Orchard Harvest Conference was held in Prague on the 11th and 12th of November, 2025. We recorded every session, and are currently publishing them on the <a href="https://www.youtube.com/@OrchardCore" target="_self">Orchard Core YouTube channel</a>. The videos are published every Monday, Wednesday, and Friday at 4:00 PM UTC. If you haven't done so yet, <a href="https://www.youtube.com/@OrchardCore" target="_blank">subscribe to this YouTube channel</a> for the Harvest videos and some inspiration if you are considering being a speaker this year! <a href="https://www.youtube.com/watch?v=_uRlR6k0OeE&amp;list=PLpCsCyd254FodB6zUxTUj7g3hGIeEotvB" target="_self">Here you can find the playlist</a> for last year's Harvest recordings.</p><h3>Bringing Orchard Core into the classroom at Óbuda University</h3><p>Ever wonder how a CMS can make university courses more practical? At <a href="https://uni-obuda.hu/en/" target="_self">Óbuda University</a>, Orchard Core did just that. Students learn ASP.NET Core by building live sites on DotNest. They go through milestones, create custom forms and workflows. We talked with our project leader, <a href="https://github.com/domonkosgabor" target="_self">Gábor Domonkos</a>, about how it started, what students build, and why it prepares them for real careers.</p><p>Students gain practical experience, the university gets a more hands-on subject, and the industry gets people who are better prepared for real projects. We believe more universities could benefit from this kind of collaboration, whether with Orchard Core or other open-source technologies. And if you are exploring something similar, we are always happy to share what has worked for us so far.</p><p>Check out <a href="https://lombiq.com/blog/bringing-orchard-core-into-the-classroom-at-obuda-university" target="_self">the full interview here</a>!</p><p><img alt="Orchard Core University interview" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260501/orchard-core-university-interview.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 419 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=GujHioQ17Bs" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 01 May 2026 09:03:41 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/copilot-integration-last-call-speaker-application-for-orchard-harvest-2026-this-week-in-orchard-01-05-2026</guid>
    </item>
    <item>
      <title>AI Chat Admin Widget and Frontend Widget, DotNest has a new look - This week in Orchard (24/04/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/ai-chat-admin-widget-and-frontend-widget-dotnest-has-a-new-look-this-week-in-orchard-24-04-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Warn against unsafe Liquid output in SQL queries</h3><p>A SQL query is actually a Liquid template. This allows your queries to be shaped based on the parameters it gets. But you could srew up with SQL and Liquid if you start by injecting Liquid in a value, as you can see below. Because in that case, you can inject any SQL and expose all your databases. So, do not inject user-provided values directly with Liquid output expressions, as this can lead to SQL injection.</p><p>Use SQL parameters (<em>@name</em> or <em>@name:default</em>) for all user-provided values, and only use Liquid templates to change the shape of the query.</p><p><img alt="Warn against unsafe Liquid output in SQL queries" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/warn-against-unsafe-liquid-output-in-sql-queries.png"></p><p>This change by <a href="https://github.com/gvkries" target="_blank">Georg von Kries</a> adds some validation, so whenever you edit a SQL query like the one we mentioned, it will tell you not to use this kind of usage in Liquid. The <em>SqlLiquidOutputExpressionDetector</em> will detect the issues based on the resolved <em>FluidParser</em>. What matters here is the <em>OutputStatementDetector</em>, which inherits from <em>AstVisitor</em> in Fluid and lets you detect specific statements. Here you can see the <em>VisitOutputStatement</em>, which checks for curly braces; when it finds them, the <em>ContainsOutputStatement</em> checks whether they contain curly braces. And in this case, we emit a warning to let users know to be careful when doing that.</p><p><img alt="SqlLiquidOutputExpressionDetector" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/sqlliquidoutputexpressiondetector.png"></p><p>And we can easily try it out by navigating to <em>Search -&gt; Queries -&gt; All Queries</em> and adding the query we mentioned above. Once we hit save, Orchard warns us that potentially unsafe Liquid output expressions (<em>'{ ... }'</em>) were detected in this query template.</p><p><img alt="Unsafe Liquid SQL Query sample" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/unsafe-liquid-sql-query-sample.png"></p><h3>Add IJSLocalizer infrastructure and framework-agnostic JavaScript localization helpers</h3><p>This is about providing localization for JavaScript files. In a nutshell, this will load the localization from the PO files and make it available in JavaScript.</p><p>When a Vue, TypeScript, or plain JavaScript component needs translated strings, it cannot call <em>IStringLocalizer</em> directly. <em>IJSLocalizer</em> bridges this gap: each module registers one implementation that knows how to map a group name to a dictionary of localized strings, which a Razor view or layout can serialize and pass into a scoped module entry point before the script runs. Check out the <a href="https://docs.orchardcore.net/en/latest/reference/modules/Localize/javascript-localization/" target="_self">documentation of the JavaScript Localization</a> to see how you can register a custom implementation, pass localizations to the browser, use localizations in JavaScript or TypeScript, and more with examples!</p><p><img alt="JavaScript localization documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/javascript-localization-docs.png"></p><h3>Demos</h3><h4>AI Chat Admin widget and Frontend widget</h4><p>Let's continue our journey with the <a href="https://github.com/CrestApps/CrestApps.OrchardCore/" target="_self">AI suite</a>, this time with the widgets!</p><p>If you head to <em>Design -&gt; Widgets</em> and hit the <em>Add Widget</em> button for one of the defined Zones, you will find a new option called <em>Artificial Intelligence Chat</em>. Once you have it, you can select whichever profile you want to use with this widget. If you are not familiar with AI profiles, you can <a href="https://orcharddojo.net/blog/managing-ai-models-and-profiles-reorganize-the-admin-menu-this-week-in-orchard-21-02-2025" target="_self">check out our previous post</a> or head to the <a href="https://orchardcore.crestapps.com/docs/ai/#ai-profiles" target="_blank">official documentation for CrestApps Orchard Core</a> to learn more. Once you select your profile and navigate to the frontend of your site, you will notice the new AI Chat widget there, and you can start a chat with it.</p><p><img alt="AI Chat Frontend Widget" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/ai-chat-frontend-widget.png"></p><p>The other new feature that we want to highlight today is called <em>AI Chat Admin Widget</em>, which provides a floating AI chat widget on every admin page, allowing users to interact with a predefined AI profile. You can enable it under <em>Tools -&gt; Features</em>. Once you enable it, you can configure it under <em>Settings -&gt; Artificial Intelligence</em>, where you will find a new section called <em>Admin Widget</em>. Here, you need to select the API Profile to use for the admin widget. Users with the appropriate permission can chat with this profile from any admin page. But you can also set the maximum number of previous chat sessions to display in the widget history panel and the primary color for the admin chat widget. After that, you will see a UI similar to the frontend, with the same capabilities.</p><p><img alt="AI Chat Admin Widget" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/ai-chat-admin-widget.png"></p><p>And it's still not all of it! If you want to see these features in action, don't forget to <a href="https://www.youtube.com/watch?v=RLi9XCISItI" target="_self">head to YouTube for a demo</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/RLi9XCISItI" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Speaker application for Orchard Harvest 2026 and Orchard Harvest 2025 recordings</h3><p>The next Orchard Core conference will take place in Vancouver, Canada, on the 10th and 11th of September.</p><p>Do you have an interesting Orchard Core-related topic that you'd like to present to the community? Development techniques, memorable case studies, and useful experiences that you'd like to share?</p><p>This year's leading themes:</p><ul><li>From CMS to content platform: where Orchard Core fits in 2026.</li><li>Automation superpowers: AI tools, recipes, and workflows in everyday projects.</li><li>Performance and reliability in Orchard Core.</li><li>Looking beyond Orchard Core 3.0: what’s next for the platform and community.</li></ul><p>Application form: <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u" target="_self">https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u</a></p><p>Apply to be a speaker by the <strong>5th of May</strong>, midnight, anywhere on Earth! We'll notify you whether your talk is selected for Harvest in 1 or 2 weeks after the application period. The chosen speakers will receive complimentary tickets for the event.</p><p><img alt="Orchard Harvest 2026 speaker application" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/orchard-harvest-2026-speaker-application.png"></p><p>The 8th Orchard Harvest Conference was held in Prague on the 11th and 12th of November, 2025. We recorded every session, and are currently publishing them on the <a href="https://www.youtube.com/@OrchardCore" target="_self">Orchard Core YouTube channel</a>. The videos are published every Monday, Wednesday, and Friday at 4:00 PM UTC. If you haven't done so yet, <a href="https://www.youtube.com/@OrchardCore" target="_blank">subscribe to this YouTube channel</a> for the Harvest videos and some inspiration if you are considering being a speaker this year! <a href="https://www.youtube.com/watch?v=_uRlR6k0OeE&amp;list=PLpCsCyd254FodB6zUxTUj7g3hGIeEotvB" target="_self">Here you can find the playlist</a> for last year's Harvest recordings.</p><h3>DotNest has a new look!</h3><p>The previous site was starting to show its age. Not just visually, but also in day-to-day site management UX. So we took a step back and rebuilt the frontend from the ground up.</p><p>The new site is built with Tailwind CSS and a much more user-friendly content management approach. Our goal was a simple, straightforward UX that stays out of the way of the content, no unnecessary fluff, just clarity and focus. Stay tuned for an in-depth case study!</p><p>Take a look <a href="https://dotnest.com/blog/dotnest-has-a-new-look-0" target="_self">at this post here</a>, and if you're curious, you can <a href="https://dotnest.com/" target="_self">create Orchard Core sites here for free</a>!</p><p><img alt="DotNest has a new look!" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260424/dotnest-has-a-new-look-post.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 419 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=Ngrl1ffZ2G4" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 24 Apr 2026 10:25:28 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/ai-chat-admin-widget-and-frontend-widget-dotnest-has-a-new-look-this-week-in-orchard-24-04-2026</guid>
    </item>
    <item>
      <title>Speaker application for Orchard Harvest 2026 and Orchard Harvest 2025 recordings - This week in Orchard (17/04/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/speaker-application-for-orchard-harvest-2026-and-orchard-harvest-2025-recordings-this-week-in-orchard-17-04-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Independent Render Liquid and Sanitize HTML settings for HTML and Markdown components</h3><p>The current <em>SanitizeHtml</em> settings' hint could be a little bit misleading, and enabling or disabling it causes potentially unwanted behavior because the hint only refers to preventing custom scripts, which is true, but it does much more by default. This, in itself, is trivial to fix. However, the <em>SanitizeHtml</em> setting also governs whether Liquid markup is rendered. If <em>SanitizeHtml</em> is <em>false</em>, that means Liquid is rendered. This prevents a simple use case where (script) sanitization is desired, but Liquid should still be rendered.</p><p>Regardless of the setting, the Liquid code is always validated. This is problematic when Liquid code is included as a code sample (in a &lt;code&gt; block) and is invalid, e.g., because it references a Liquid tag that is not available in the current system. This affects <em>HtmlBody Part</em>, <em>Html Field</em>, <em>Markdown Part</em>, and <em>Markdown Field</em>.</p><p>Let's see <a href="https://github.com/BenedekFarkas" target="_self">Benedek Farkas</a>'s solution to this issue! If you set up your site using the <em>Blog</em> recipe, you will get a predefined <em>Blog Post</em> content type with the <em>MarkdownBody Part</em> attached. If you edit the settings of the attached <em>MarkdownBody Part</em>, you will notice the new <em>Render Liquid</em> option, which lets you control whether your Liquid markup is rendered or displayed raw. Please note that the Liquid rendering support is here only for backward compatibility and will be removed in version 4.0. As you can see, both settings are <em>false</em> in our case.</p><p><img alt="New Render Liquid setting" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/new-render-liquid-setting.png"></p><p>Now, let's create a new <em>Blog Post</em> with some sample content. As you can see in the screen below, the Liquid code is not validated because the <em>Render Liquid</em> option is disabled.</p><p><img alt="Creating a Blog Post" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/creating-a-blog-post.png"></p><h3>New Data Localization Liquid filter</h3><p>And while we are talking about Liquid, let's take a look at a new Liquid filter by <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>, that localizes dynamic data string using the current culture. We fire up the blog post that we created earlier and make sure that the <em>Render Liquid</em> option is set to <em>true</em>. Then we have to make sure that our site supports multiple cultures under <em>Settings -&gt; Localization -&gt; Cultures</em>. We used the <em>Dynamic Translations UI</em> under <em>Settings -&gt; Localization -&gt; Dynamic Translations</em> to add a Hungarian translation for the <em>Blog Post</em> content type. If that UI is new to you, it's OK; that's quite a recent addition <a href="https://orcharddojo.net/blog/dynamic-translations-refactor-icontentdefinitionservice-for-improved-modularity-and-design-this-week-in-orchard-13-02-2026" target="_self">that you can read about in detail in this post</a>.</p><p><img alt="Dynamic Translations UI" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/dynamic-translations-ui.png"></p><p>Now let's see how that filter works! As you can see, we want to display the localized value of the <em>Blog Post</em> string, and the context for the string is <em>Content Types</em>. If we publish this content item and view it in the front end, we will see that the site displays the text <em>Blog Post</em> as <em>Blogposzt</em>.</p><p><img alt="New Data Localization Liquid Filter" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/new-data-localization-liquid-filter.png"></p><h3>Demos</h3><h4>AI Documents for Chat Interactions and Chat Sessions</h4><p>We will continue the demo from last week, where we discussed the <a href="https://github.com/CrestApps/CrestApps.OrchardCore/" target="_self">AI Data Source module of the AI Suite</a>, which provides AI data source management, knowledge base indexing, and RAG search capabilities for Orchard Core. If you haven't read it yet, <a href="https://orcharddojo.net/blog/ai-knowledge-base-indexing-arguments-source-generation-this-week-in-orchard-10-04-2026" target="_self">you can find it here</a>.</p><p>Let's say we don't want to have only data in the indexes; we also want to use the uploaded documents, work with them, and ask questions about them. The features called <em>AI Documents (OpenXML)</em> and <em>AI Documents (PDF)</em> extend the <em>AI Documents</em> feature by allowing PDF and OpenXML files (ie, docx, xlsx, pptx). If we enable the <em>AI Documents for Chat Interactions</em> feature, we will be able to upload documents in the Chat Interactions UI.</p><p>Now we can go to <em>Artificial Intelligence -&gt; Chat Interactions</em>, where we can start a new chat or continue an existing one. You will notice the <em>Documents</em> tab, which allows you to attach documents to chat against your own data. The content will be extracted and used as context for AI responses. But as you can see, it warns you to select an index profile for indexing documents in chat interactions.</p><p><img alt="Index not configured warning" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/index-not-configured-warning.png"></p><p>To do that, we need to navigate to <em>Settings -&gt; Artificial Intelligence</em> and select an index profile.</p><p><img alt="Select index profile for documents" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/select-index-profile-for-documents.png"></p><p>Now we can go back to the Chat Interactions UI, attach documents, and ask questions like "<em>summarize the file</em>". AI can do that because the document is processed and indexed, so we can retrieve data from the index.</p><p>There is another feature called <em>AI Documents for Chat Sessions</em>, which provides document upload and Retrieval-Augmented Generation (RAG) support for AI Chat Sessions and Widgets. The difference between <em>Chat Interaction</em> and <em>Chat Session</em> is that Chat Interaction is a playground that you can reach under <em>Artificial Intelligence -&gt; Chat Interactions</em>, the one that we showed you previously. There is nothing preconfigured.</p><p>If you want to have a Chat Session, you have to create a <em>Profile</em> first under <em>Artificial Intelligence -&gt; Profiles</em>. A Profile allows you to preconfigure system instructions, setting up an initial prompt, the Profile Type, and so on. But what's interesting for us here is the content of the <em>Documents</em> tab. If you enable the <em>AI Documents for Profiles</em> feature, you can allow Documents and Attachments in this tab, which means users can upload documents to chat sessions using this profile, as you can read. If we upload a file here and create a new chat based on the profile (which we can do by clicking on the <em>Actions</em> button and select the <em>New chat</em> from the drop-down menu near the profile under <em>Artificial Intelligence -&gt; Profiles</em>), we can chat about the content of the uploaded document without having the need to upload the given documents again and again because it's preconfigured.</p><p><img alt="Profile documents" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/profile-documents.png"></p><p>And it's still not all of it! If you want to see these features in action, don't forget to <a href="https://www.youtube.com/watch?v=bWkENl3UkCY" target="_self">head to YouTube for a demo</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/bWkENl3UkCY" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Speaker application for Orchard Harvest 2026 and Orchard Harvest 2025 recordings</h3><p>The next Orchard Core conference will take place in Vancouver, Canada, on the 10th and 11th of September.</p><p>Do you have an interesting Orchard Core-related topic that you'd like to present to the community? Development techniques, memorable case studies, and useful experiences that you'd like to share?</p><p>This year's leading themes:</p><ul><li>From CMS to content platform: where Orchard Core fits in 2026.</li><li>Automation superpowers: AI tools, recipes, and workflows in everyday projects.</li><li>Performance and reliability in Orchard Core.</li><li>Looking beyond Orchard Core 3.0: what’s next for the platform and community.</li></ul><p>Application form: <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u" target="_self">https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCICDdeeZFbXdAlSWTkdgpZAtUQzA3UzVNUERJTk4zVlEwRUtXNkM2SlI4Sy4u</a></p><p>Apply to be a speaker by the 5th of May, midnight, anywhere on Earth! We'll notify you whether your talk is selected for Harvest in 1 or 2 weeks after the application period. The chosen speakers will receive complimentary tickets for the event.</p><p><img alt="Orchard Harvest 2026 speaker application" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/orchard-harvest-2026-speaker-application.png"></p><p>The 8th Orchard Harvest Conference was held in Prague on the 11th and 12th of November, 2025. We recorded every session, and starting next Monday, we will begin publishing them on the <a href="https://www.youtube.com/@OrchardCore" target="_self">Orchard Core YouTube channel</a>. The videos will be published every Monday, Wednesday, and Friday at 4:00 PM UTC. If you haven't done so yet, <a href="https://www.youtube.com/@OrchardCore" target="_blank">subscribe to this YouTube channel</a> for upcoming Harvest videos and some inspiration if you are considering being a speaker this year! <a href="https://www.youtube.com/watch?v=_uRlR6k0OeE&amp;list=PLpCsCyd254FodB6zUxTUj7g3hGIeEotvB" target="_self">Here you can find the playlist</a> for last year's Harvest recordings.</p><h3>Event management backend for one of the largest retailers - Avastec case study by Lombiq</h3><p>When a live, high–traffic event platform needs new features urgently, you don't get the luxury of rewrites or downtime.</p><p>That was the situation when <a href="https://avastec.com/" target="_self">Avastec</a> asked us to take over and continue the development of an Orchard Core–based headless event management backend used by one of the world's largest retailers.</p><p>The system was already in production, powering a public Node.js frontend. The goals were clear:</p><ul><li>ship new functionality quickly,</li><li>improve performance and reliability,</li><li>keep upgrades safe and traceable,</li><li>all without disrupting users.</li></ul><p>Our work focused on long-term maintainability under real delivery pressure:</p><ul><li>Replacing recipe-based data migrations with code-based migrations for better traceability.</li><li>Introducing automated UI tests to protect core user journeys.</li><li>Delivering new features like ticketing, GDPR integrations, multi-brand rollout, and QR code-based entry management.</li><li>Adding observability via Azure Application Insights to support stable operations.</li></ul><p>All of this was done incrementally, without breaking the live experience.</p><p>As <a href="https://www.linkedin.com/in/stevetayloruk" target="_self">Steve Taylor</a>, CTO and Founder of Avastec, put it:</p><p><em>"They (...) delivered improvements without disrupting a live, high-traffic platform… balancing rapid feature delivery with long-term maintainability and performance."</em></p><p>This project is a good example of what Orchard Core enables when combined with disciplined engineering practices: fast change, low risk, and systems that keep improving instead of accumulating debt.</p><p>Read the <a href="https://lombiq.com/blog/event-management-backend-for-one-of-the-largest-retailers" target="_self">full case study here</a>!</p><p><img alt="Avastec case study" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260417/avastec-case-study.png"></p><p>Do you want to launch an event management platform on Orchard Core? We have actually built several more too, <a href="https://lombiq.com/contact-us" target="_self">get in touch with us</a>!</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 421 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=cL4wwcB78AM" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 17 Apr 2026 12:03:20 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/speaker-application-for-orchard-harvest-2026-and-orchard-harvest-2025-recordings-this-week-in-orchard-17-04-2026</guid>
    </item>
    <item>
      <title>AI Knowledge Base Indexing, Arguments Source Generation - This week in Orchard (10/04/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/ai-knowledge-base-indexing-arguments-source-generation-this-week-in-orchard-10-04-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>New OrchardCore.ContentFields.Core module</h3><p>Every time you want to use any content field, for example, creating your own migrations, you have to reference the <em>OrchardCore.</em><em>ContentFields</em> project. But it's unnecessary because in this case, you don't really need anything more than the class derived from <em>ContentField</em> and the corresponding settings.</p><p>Thanks to <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>, all the content fields were moved to a new <em>OrchardCore.ContentFields.Core</em> project. From now on, if you just want to use the fields, you don't need to include the entire <em>OrchardCore.ContentFields</em> module, just the core one.</p><p><img alt="New OrchardCore.ContentFields.Core module" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/new-orchardcore-contentfields-core-module.png"></p><h3>Arguments Source Generation</h3><p>This is to improve the performance. The idea is that we have a <em>From</em> method here in the <a href="https://github.com/OrchardCMS/OrchardCore/blob/main/src/OrchardCore/OrchardCore.DisplayManagement/Arguments.cs" target="_self">Arguments class</a>. When we create shapes, we can pass custom properties. These properties have to be in an instance of type <em>INamedEnumerable</em>. It lets you list arguments and also get them by name and position. And by using the <em>Arguments.From</em>, you can pass any kind of objects, including anonymous objects, and it will convert these objects to an <em>INamedEnumerable</em>. And it will do that by reflection.</p><p>The idea from <a href="https://github.com/gvkries" target="_self">Georg von Kries</a> is to use source generators. The first case is when we do <em>Arguments.From</em> and then we pass a custom class. What it will do is enhance this custom class, which has to be partial. It will return a dedicated <em>INamedEnumerable</em> instance that won't use reflection.</p><p><img alt="Source Generators Documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/source-generators-docs.png"></p><p>You can also see an <em>ArgumentsFromInterceptor</em>, which is a next-level source generator. It's when you call something like the <em>From</em> method, but it won't actually call it. It will replace the invocation of <em>From</em> with something else, such as directly instantiating an object that implements <em>INamedEnumerable</em>. And it will use the <em>From</em> method as a marker.</p><p><img alt="ArgumentsFromInterceptor" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/argumentsfrominterceptor.png"></p><p> Check out Orchard Core's <a href="https://docs.orchardcore.net/en/latest/topics/source-generators/" target="_blank">documentation for</a> real-world examples, the migration guide, architecture details, and best practices!</p><h3>Demos</h3><h4>AI Knowledge Base Indexing</h4><p>Before redesigning the UI in the <a href="https://orchardcore.crestapps.com/docs/ai/" target="_self">AI Suite</a> and integrating everything into the AI mechanism, we used multiple providers and relied heavily on the <a href="https://learn.microsoft.com/en-us/dotnet/ai/microsoft-extensions-ai" target="_self">Microsoft.Extensions.AI libraries</a>. It was a provider-driven communication, and there was no such thing as trying to understand what this user wants, or trying to give that user as much power as we can, or trying to rewrite their prompt. The whole design now looks like a standalone orchestrator. This means the prompt goes to the orchestrator, which is determined by your settings. It is not responsible for a lot more than just sending the prompt. Now we have a true orchestrator.</p><p>So, the orchestrator was redesigned to handle prompt routing, provider selection, and data retrieval, enabling the use of any index as a data source for AI interactions, and supporting document upload and retrieval-augmented generation (RAG).</p><p>How does that all work? First, don't forget to <a href="https://github.com/CrestApps/CrestApps.OrchardCore/" target="_blank">clone the CrestApps Orchard Core Modules repository</a> and run the solution. Once you are done, enter the admin area and go to <em>Search -&gt; Indexes</em>, where you will see two new sources when you click the <em>Add index</em> button. Let's focus on the <em>AI Knowledge Base Index</em>!</p><p><img alt="AI Knowledge Base Index" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/new-ai-knowledge-base-index.png"></p><p>That index automatically lets you embed any data from any index. It can become available for the orchestrator. So, it automatically chunks, embeds, and indexes source documents into a master AI Knowledge Base index for efficient vector search.</p><p>We also created another index for content, which we called <em>articles</em>. It stores the data for Article content items.</p><p><img alt="Articles index" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/articles-index.png"></p><p>We want to expose this data to AI. To do that, we navigated to <em>Artificial Intelligence -&gt; Data Sources</em> and clicked the <em>Add data source</em> button. This UI has changed a lot. Now you can select whichever index that you want to pull the data from and the knowledge base index. And then you can define whichever fields you want.</p><p><img alt="Creating a new Data Source" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/creating-a-new-data-source.png"></p><p>Now you have a data source! It means we can go to <em>Artificial Intelligence -&gt; Chat Interactions</em> and add a new interaction. Here you can see the <em>Data source</em> drop-down, which is similar to what we had in the past. And now, if you ask questions, it will look up the data in the selected index and pull it from there, too.</p><p><img alt="Chat Interactions" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/chat-interactions.png"></p><p>If you want to see this feature in action, don't forget to <a href="https://www.youtube.com/watch?v=wgabQmwbuFw" target="_self">head to YouTube for a demo</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/wgabQmwbuFw" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Helping out the builders of Ontario - RESCON case study by Lombiq</h3><p>When your homepage shows outdated content, it's not just a bug; it affects credibility.</p><p><a href="https://rescon.com/" target="_self">Residential Construction Council of Ontario (RESCON)</a> runs a headless Orchard Core backend with a separate Vue frontend. Over time, their homepage widgets started surfacing older news and posts again, even though everything looked fine right after publishing.</p><p>We investigated the architecture, traced the issue back to a search indexing inconsistency, and made a deliberate choice: Instead of endlessly hardening the setup, we simplified the system. In the case study, we walk through:</p><ul><li>The original architectural setup.</li><li>The real root cause.</li><li>Why simplify beat hardening?</li><li>What we improved beyond the immediate fix.</li></ul><p>If you're running Orchard Core in a headless or multi-layer setup, this will likely feel familiar. <a href="https://lombiq.com/blog/helping-out-the-builders-of-ontario-rescon-case-study" target="_self">Read the full case study here</a>!</p><p><img alt="RESCON case study Lombiq" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260410/rescon-case-study-lombiq.png"></p><p>If your Orchard Core application behaves unpredictably, whether it's publishing inconsistencies, performance issues, or architectural drift over time, we can help diagnose and stabilize it. <a href="https://lombiq.com/contact-us" target="_self">Get in touch</a> and let's take a look!</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 421 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=cL4wwcB78AM" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 10 Apr 2026 11:06:18 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/ai-knowledge-base-indexing-arguments-source-generation-this-week-in-orchard-10-04-2026</guid>
    </item>
    <item>
      <title>Admin Menus Localization support, MCP Prompts and MCP Resources support - This week in Orchard (03/04/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/admin-menus-localization-support-mcp-prompts-and-mcp-resources-support-this-week-in-orchard-03-04-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Remove implicit CancelAsync from ValidateAsync</h3><p>This change means the code won't cancel the current session if an issue occurs during validation in the <em>DefaultContentManager.ValidateAsync()</em> method. It's up to the caller of the validation, because this can discard unrelated pending changes from other components sharing the session.</p><p>So, session cancellation is now the caller's responsibility, matching the expected pattern in which the consumer decides how to handle a validation failure. <em>ValidateAsync()</em> only performs validation and returns the result. It no longer cancels the session on failure. The change has been mentioned <a href="https://docs.orchardcore.net/en/latest/releases/3.0.0/#content-manager-validateasync-behavior" target="_self">in the release notes of the upcoming v3 of Orchard Core</a>. There is another page in the documentation that describes how to create a new content type, adding content parts to a type, consuming content parts and fields from C#, etc. That page also <a href="https://docs.orchardcore.net/en/latest/reference/modules/ContentTypes/#consuming-content-parts-and-fields-from-csharp" target="_self">contains an example</a> of consuming your content item as your content part in a controller. And in that code, you can see that inside the <em>UpdateProductPriceAsync</em> method, we first validate the content item. If validation fails, we cancel the session to discard any pending changes.</p><p><img alt="Remove implicit CancelAsync from ValidateAsync" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/remove-implicit-cancelasync-from-validateasync.png"></p><h3>Fluent Placement Location Builder</h3><p>A new <em>PlacementLocationBuilder</em> fluent API has been added as a type-safe alternative to manually constructing placement location strings in display drivers. The builder uses a single class where all methods return the same instance for easy chaining, following the placement nesting hierarchy (Zone -&gt; Tab -&gt; Card -&gt; Column). Each method in the chain returns the same builder instance, so all methods are available at any point after <em>.Zone()</em>. Note that levels can be skipped, for example <em>.Zone().Card()</em> without a <em>.Tab()</em> is valid.</p><p>To help you better understand this change, <a href="https://github.com/MikeAlhayek" target="_blank">Mike Alhayek</a> also updated the documentation with the available methods and added <a href="https://docs.orchardcore.net/en/latest/reference/modules/Placement/#examples_1" target="_self"> some nice examples</a>!</p><p><img alt="Fluent Location API Examples" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/fluent-location-api-examples.png"></p><h3>Demos</h3><h4>Admin Menus Localization support</h4><p>The <a href="https://docs.orchardcore.net/en/latest/reference/modules/AdminMenu/" target="_self">Admin Menu module</a> allows users to create custom admin menus in the Admin UI. If you set up your site using the <em>Blog</em> recipe, you will notice that it provides an admin menu by default, which you can see under <em>Tools -&gt; Admin Menus</em>.</p><p><a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> shows the new feature here, which is about having a way to localize admin menus as well. To test this quickly, make sure your site supports at least two cultures under <em>Settings -&gt; Localization -&gt; Cultures</em>. It's also recommended to enable the <em>Admin Culture Picker</em> feature under <em>Tools -&gt; Features</em>, which provides a culture picker shape for the admin area.</p><p>Now, thanks to the <a href="https://orcharddojo.net/blog/dynamic-translations-refactor-icontentdefinitionservice-for-improved-modularity-and-design-this-week-in-orchard-13-02-2026" target="_self">Dynamic Translations feature</a> and this addition, we can easily translate admin menus by going to <em>Settings -&gt; Localization -&gt; Dynamic Translations</em>. Here, you can select the <em>Admin Menus</em> under the <em>Category</em> drop-down and add translations to the available admin menus on your site, as well as to their admin menu nodes. Let's add the Hungarian translations to these!</p><p><img alt="Admin Menus dynamic translations" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/admin-menus-dynamic-translations.png"></p><p>Now let's head to <em>Tools -&gt; Admin Menus</em> and use the admin culture picker to switch to Hungarian. And as you can see, all of the nodes will display in the selected culture for which we have added translations.</p><p><img alt="Localized Admin Menus" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/localized-admin-menus.png"></p><p>If you want to see this feature in action, <a href="https://www.youtube.com/watch?v=pYGCslhYhp4" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/pYGCslhYhp4" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h4>MCP Prompts and MCP Resources support</h4><p>Last year, <a href="https://orcharddojo.net/blog/model-context-protocol-mcp-client-feature-improve-title-part-settings-this-week-in-orchard-25-04-2025" target="_blank">we wrote about</a> the MCP Client features that you can use to connect your application to remote MCP servers using standard HTTP requests and to connect your application to MCP servers running locally, typically in containers.</p><p>Now let's talk about MCP Servers! The <em>MCP Server Feature</em> allows your Orchard Core application to expose its AI tools and capabilities to external MCP clients. This feature supports the SSE transport type, enabling real-time communication.</p><p>First of all, you need to clone the <a href="https://github.com/CrestApps/CrestApps.OrchardCore" target="_self">CrestApps - Orchard Core repository</a>, which contains the Artificial Intelligence Suite, which is a comprehensive and extensible AI ecosystem built on Orchard Core, designed to unify and streamline AI integration and management.</p><p>Now we can go to <em>Tools -&gt; Features</em> to enable the <em>Model Context Protocol (MCP) Server</em> feature. This time, we will focus on MCP Prompts and Resources, which we will find in the admin UI under <em>Artificial Intelligence -&gt; Model Context Protocol -&gt; Prompts/Resources</em>. Under the <em>Prompts</em> one, you can use the UI to add MCP Server prompts. Here you can see that we added an MCP Prompt named <em>analytics.user.activity</em> that returns a detailed activity report for a specific user within a given date range. And you can see that we defined some arguments as well, such as the user's unique identifier and the maximum number of records to return.</p><p><img alt="User Activity Report MCP Promtp" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/user-activity-report-mcp-prompt.png"></p><p>You can add MCP Server resources by hitting the <em>Resources</em> option on the menu. If you click the <em>Add Resource</em> button, you'll see a modal where you can choose from the available resource types.</p><p><img alt="Available Resource Types" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/available-resource-types.png"></p><p>For this demo, we selected the <em>Recipe Step Schema</em>, which provides a JSON schema for a specific recipe step.</p><p><img alt="Recipe Step Schema Resource Type" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/recipe-step-schema-resource-type.png"></p><p>The repository contains an <a href="https://aspire.dev/get-started/what-is-aspire/" target="_self">Aspire app</a> called <em>CrestApps.Aspire.AppHost</em>. If you run this application, it provides a sample app called <em>McpClientSample</em> that helps you to see what's available on your server. This sample app connects to the MCP server hosted by <em>CrestApps.OrchardCore.Cms.Web</em> and demonstrates listing tools, prompts, and resources.</p><p>If you hit <em>Go to Tools</em> in the navigation tabs, that will list all the MCP tools exposed by the MCP server and invoke them with custom arguments.</p><p>If you select <em>Go to Prompts</em>, the sample app will list all MCP prompts and retrieve each prompt's details. Here, you can see that the top two are the ones that we defined via the UI. The rest of those are coming from the Agent Skills project. If you haven't heard about it, <a href="https://orcharddojo.net/blog/crestapps-agent-skills-orchard-harvest-2026-survey-results-this-week-in-orchard-13-03-2026" target="_self">we wrote about this project a few weeks ago</a>.</p><p><img alt="MCP Prompts" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/mcp-prompts.png"></p><p>And if you click on <em>Resources</em>, the app will list concrete MCP resources with fixed URIs and read their content directly. All of these, again, come from the Agent Skills project.</p><p>Lastly, there is a <em>Resource Templates</em> option where you can browse parameterized resource templates, fill in variables, and read content. Here you can see the one that we defined earlier in the UI with a parameter. Here is our <em>RecipeStep</em> resource. If we provide a value for <em>stepName</em> (such as <em>feature</em>), you will actually get information about that feature. So, it just gives you information about the recipe step.</p><p><img alt="Calling our Resource Template" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260403/calling-our-resource-template.png"></p><p>And that's not all of it! As always, if you want to see more, <a href="https://www.youtube.com/watch?v=A3lD4N-S3zc" target="_self">head to YouTube for a recording</a> by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/A3lD4N-S3zc" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Harvest 2026 Location</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.</p><p>After Las Vegas in 2024 and Prague in 2025, the 2026 conference will take place in Vancouver, Canada. Why Vancouver? A few simple reasons:</p><ul><li>Last year was Europe, so repeating it would have locked out many attendees on the other side of the ocean.</li><li>As we mentioned, compared to a US location, we heard more explicit pushback this time, while Canada remained a broadly acceptable option.</li><li>Vancouver offers the best possible "in-between" choice: reachable from both North America and Europe and still a fresh destination for most of the community.</li></ul><p>So if you are building on Orchard Core, contributing to it, or evaluating it for your next platform, this is your chance to connect directly with maintainers, contributors, and fellow teams using Orchard in production.</p><p>We'll share dates and venue soon. For now, you can already start planning for 2026 September in Vancouver.</p><p>If you're considering attending, what would make Vancouver a "must go" for you: session topics, workshops, or community time? Please <a href="https://github.com/orgs/OrchardCMS/discussions/18889" target="_self">share your thoughts with us under this discussion</a>.</p><p><img alt="Orchard Harvest 2026 Vancouver" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/orchard-harvest-vancouver-2026.png"></p><p>And as always, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 422 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=cL4wwcB78AM" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 03 Apr 2026 09:07:55 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/admin-menus-localization-support-mcp-prompts-and-mcp-resources-support-this-week-in-orchard-03-04-2026</guid>
    </item>
    <item>
      <title>Orchard Harvest 2026 Location, Bulk option for attaching Localization Part to content types - This week in Orchard (27/03/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/orchard-harvest-2026-location-bulk-option-for-attaching-localization-part-to-content-types-this-week-in-orchard-27-03-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Data Protection guide</h3><p>Thanks to <a href="https://github.com/lamualfa" target="_self">Laode Muhammad Al Fatih</a>, there is now a <a href="https://docs.orchardcore.net/en/latest/guides/data-protection/" target="_blank">new guide</a> that provides information on implementing data protection in Orchard Core applications, particularly in multi-tenant and load-balanced environments. The guide also explains when you should use Distributed Data Protection and what providers do that.</p><p>For detailed information about implementing data protection with Azure Blob Storage, including configuration options and Liquid templating, <a href="https://docs.orchardcore.net/en/latest/reference/modules/DataProtection.Azure/" target="_self">see the following page</a>.</p><p>For detailed information on implementing data protection with Redis, including configuration options and persistence considerations, <a href="https://docs.orchardcore.net/en/latest/reference/modules/Redis/#data-protection" target="_blank">see this page</a>.</p><p><img alt="Data Protection guide" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/data-protection-guide.png"></p><h3>Configurable EasyMDE editor settings to Markdown WYSIWYG editors</h3><p>Currently, the EasyMDE editor used by <em>the Markdown Field</em> and <em>Body Part</em> is not customisable. The toolbar buttons, spell checker, and other editor options are hardcoded, meaning site administrators have no way to tailor the editing experience to their needs, for example, removing unused toolbar buttons, enabling the spell checker, or adjusting other EasyMDE configuration options. This contrasts with the <em>HTML Body Part</em>'s Trumbowyg editor, which already supports configurable options via a settings panel.</p><p><a href="https://github.com/buzznick" target="_self">Nick Jackson</a> added the same level of configurability to both Markdown WYSIWYG editors. That means there is a new settings panel with a CodeMirror textarea for customizing EasyMDE editor options on both the <em>Markdown Field</em> and the <em>MarkdownBody Part</em> when using the WYSIWYG editor. The custom options are validated as valid JavaScript objects using <a href="https://github.com/adams85/acornima" target="_self">Acornima</a>. Toolbar button names are automatically mapped to their full definitions from mdeToolbar, preserving media/shortcode integration, and empty/null options fall back to the default toolbar configuration.</p><p>To try this out, let's set up a site using the <em>Blog</em> recipe. The <em>Blog</em> recipe provides us a <em>Blog Post</em> content type which has a <em>MarkdownBody Part</em> attached. Head to <em>Design -&gt; Content Definition -&gt; Content Types</em> and edit the content definition of the <em>Blog Post</em> content type. If we hit <em>Edit</em> near the attached <em>MarkdownBody Part</em>, we will see a textarea, where we can provide the editor options for the WYSIWYG editor. Let's say we wanted a very simple editor with just some basic options: undo/redo, text formatting, and the ability to insert Shortcodes and Images from the Media Library.</p><p><img alt="MarkdownBody Part WYSIWYG editor options" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/markdownbody-part-wysiwyg-editor-options.png"></p><p>If we hit <em>Save</em>, we can go to the <em>Blog</em> option on the menu and edit our predefined blog post. And as you can see, the MarkdownBody text area will only show the buttons on the toolbar that we have previously defined.</p><p><img alt="MarkdownBody toolbar" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/markdownbody-toolbar.png"></p><h3>Demos</h3><h4>Bulk option for attaching the Localization Part to content types</h4><p>After enabling the <em>Content Localization</em> feature, users must manually add the <em>Localization Part</em> to each content type they want to localize. This is not immediately obvious and can lead to confusion. Once the user enables the <em>Content Localization</em> feature, they would expect that localization to work on content types. But they discover that they need to manually edit each content type and attach the <em>Localization Part</em>. Users should be guided on what to do next after enabling the <em>Content Localizatio</em>n feature, or have an easier way to enable localization for multiple content types.</p><p>In this demo, <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> provides a solution to that: a bulk attachment option. If you <a href="https://github.com/OrchardCMS/OrchardCore/pull/18899" target="_self">check out this PR</a>, you will see that he provided a settings page that lists all content types with checkboxes and allows users to add and remove the <em>Localization Part</em> to multiple content types at once. Now let's see this in action quickly!</p><p>First, make sure you have enabled the <em>Content Localization</em> module under <em>Tools -&gt; Features</em>. After, you will see a new option in the menu under <em>Settings -&gt; Localization</em>, called <em>Content Localization</em>. On this page, users can select multiple content types at once. We can say that we want to attach the <em>Localization Part</em> to the <em>Article</em>, <em>Blog Post</em>, and <em>Page</em> content types. Once you hit <em>Save</em> at the bottom of the page, the <em>Localization Part</em> will be attached to the content types you have selected. If you deselect a content type from this list, the <em>Localization Part</em> will be removed from that content type.</p><p><img alt="Content Localization Settings" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/content-localization-settings.png"></p><p>And as always, if you want to see this feature in action, <a href="https://www.youtube.com/watch?v=U14fkEKw0e4" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/U14fkEKw0e4" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Harvest 2026 Location</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.</p><p>After Las Vegas in 2024 and Prague in 2025, the 2026 conference will take place in Vancouver, Canada. Why Vancouver? A few simple reasons:</p><ul><li>Last year was Europe, so repeating it would have locked out many attendees on the other side of the ocean.</li><li>As we mentioned, compared to a US location, we heard more explicit pushback this time, while Canada remained a broadly acceptable option.</li><li>Vancouver offers the best possible "in-between" choice: reachable from both North America and Europe and still a fresh destination for most of the community.</li></ul><p>So if you are building on Orchard Core, contributing to it, or evaluating it for your next platform, this is your chance to connect directly with maintainers, contributors, and fellow teams using Orchard in production.</p><p>We'll share dates and venue soon. For now, you can already start planning for 2026 September in Vancouver.</p><p>If you're considering attending, what would make Vancouver a "must go" for you: session topics, workshops, or community time? Please <a href="https://github.com/orgs/OrchardCMS/discussions/18889" target="_self">share your thoughts with us under this discussion</a>.</p><p><img alt="Orchard Harvest 2026 Vancouver" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260327/orchard-harvest-vancouver-2026.png"></p><p>And as always, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 423 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=mugneTGE3AA" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 27 Mar 2026 09:22:21 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/orchard-harvest-2026-location-bulk-option-for-attaching-localization-part-to-content-types-this-week-in-orchard-27-03-2026</guid>
    </item>
    <item>
      <title>AI-driven theme editor on the admin UI, Available Storage indicator for the Media Library - This week in Orchard (20/03/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/ai-driven-theme-editor-on-the-admin-ui-available-storage-indicator-for-the-media-library-this-week-in-orchard-20-03-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Available Storage Indicator for the Media Library</h3><p>The idea behind this new addition is to somehow notify the user about the free space available on the local file system when storing media items. Your site can contain multiple items in the Media Library, and it's best to track available storage space directly in the admin UI.</p><p>Thanks to <a href="https://github.com/sarahelsaig" target="_self">Sára El-Saig</a> from <a href="https://lombiq.com" target="_self">Lombiq</a>, the Media Library screen now includes an <em>Available Storage</em> indicator. If the media items are stored on the local file system, it automatically shows the free disk space on the drive used for storage. The available storage is checked when uploading or copying files in the media store, providing a more informative warning when space is exhausted. If you enter the admin area of Orchard Core and select the <em>Library</em> submenu under <em>Media</em>, you will see the available storage indicator in the top-right corner. As you can see, we currently have 362.28 GB of free space on the local file system.</p><p><img alt="Available Storage indicator" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/available-storage-indicator.png"></p><p>But it's just applies when you are storing your media items on the local file system. If you use a different underlying file store (e.g., Azure Blob Storage, Amazon AWS) or want to enforce additional storage constraints (e.g., usage quotas), that's also possible. To do that, you need to create a new event handler that implements <em>IMediaEventHandler.MediaPermittedStorageAsync(MediaPermittedStorageContext)</em> method. Note that if you want to use multiple event handlers, you should update the <em>PermittedStorage</em> value using the <em>MediaPermittedStorageContext.Constrain(long)</em> method rather than manually editing the <em>PermittedStorage</em> value.</p><p><img alt="IMediaEventHandler.MediaPermittedStorageAsync method" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/imediaeventhandler-mediapermittedstorageasync-method.png"></p><h3>Anchor Tag Helper documentation</h3><p>We have had an <em>Anchor Tag Helper</em> for a while in Orchard Core, but the documentation was a bit outdated, as it only documented the <em>&lt;img&gt;</em> Tag Helpers, not the one for <em>&lt;a&gt;</em> tags. <a href="https://github.com/Manuel-dev-ing" target="_blank">Manuel Tamayo Montero</a> added some lines to <a href="https://docs.orchardcore.net/en/latest/reference/modules/Media/#razor-anchor-tag-helper" target="_blank">the documentation</a> to help developers use it.</p><p><img alt="Razor Anchor Tag Helper documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/razor-anchor-tag-helper-documentation.png"></p><p>Please don't forget that when using tag helpers in Razor, you must take a direct reference to the <em>OrchardCore.Media</em> NuGet package in each theme or module that uses the Tag Helpers.</p><h3>Demos</h3><h4>AI-driven theme editor on the admin UI</h4><p><a href="https://github.com/barthamark" target="_self">Márk Bartha</a> from <a href="https://lombiq.com/" target="_self">Lombiq</a> started building a proof of concept for an admin UI-based theme editor with AI integration. If you want custom themes, you have the option to host your theme in the Media Library using the <a href="https://github.com/Lombiq/Hosting-Media-Theme" target="_self">Media Theme feature for Orchard Core</a>. It would be great if we could edit this theme right from the admin UI. Normally, you can edit templates using the <em>Templates</em> feature, but since it's in the Media Library, you don't have the option for that. This feature is to solve this problem.</p><p>Here you can see a sample project from a conference site with some dummy data. This editor UI shows the Media Theme folder from the Media Library. Here you can see the templates and all the assets used. You can edit them just as you would in your IDE. Of course, you can also create new templates right from this IDE. After you provide a name for the template and click <em>Save</em>, the template will be saved, and the specified shape will become active. And it applies to any other allowed file types, not just to templates.</p><p><img alt="Theme editor" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/theme-editor.png"></p><p>He also started to integrate AI into this editor. If you click on the <em>AI</em> button between <em>Delete </em>and <em>Shortcuts</em>, a new <em>Theme Editor AI</em> section will open where you can enter prompts, like "<em>Please implement the detail and summary shapes of the Talk content type</em>". Here, you can see the capabilities defined for the created profile, <em>ThemeEditor.</em><em>OpenAI</em>, where you can see what features the AI can access.</p><p><img alt="Theme editor tools" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/theme-editor-tools.png"></p><p>So, it can act as an agent, create or edit files, and you can review the changes. You don't need to accept these changes right away; they will be persisted in the DB. And once you review them, you can hit the <em>Apply</em> button. It means that these files will also be available in this IDE, and you can save them; the changes will be applied automatically.</p><p><img alt="Reviewing AI made changes" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/reviewing-ai-made-changes.png"></p><p>As with Copilot, you can include specific files in the context and add content types. Once you execute a new follow-up prompt, it will include all these and give you access to them as well.</p><p><img alt="Add content types to context" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260320/add-content-types-to-context.png"></p><p>And that's still not all of it! If you want to learn more about this feature, <a href="https://www.youtube.com/watch?v=l_EzVKWV5nA" target="_self">head to YouTube for a recording</a>!</p><div class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/l_EzVKWV5nA" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></div><h2>News from the community</h2><h3>Orchard Harvest 2026 survey results</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. Please keep in mind that these are just preliminary results and haven't led to any specific outcomes yet.</p><p>It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.</p><p>During <a href="https://www.youtube.com/watch?v=t1Whd6Lrjm4" target="_self">our weekly meeting</a>, some attendees suggested that future surveys should list specific cities rather than countries to avoid ambiguity, as the size of the US and Canada makes country-level choices insufficient for planning. So, we discussed potentially creating a new questionnaire listing a limited set of candidate cities in Canada, North America, and Europe, allowing participants to rank their preferences to achieve a more democratic and actionable outcome. Whatever the next step will be, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.</p><p><img alt="Orchard Harvest 2026 survey results" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/orchard-harvest-survey-2026-results.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 424 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=AtHx-X-SRrI" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 15:03:46 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/ai-driven-theme-editor-on-the-admin-ui-available-storage-indicator-for-the-media-library-this-week-in-orchard-20-03-2026</guid>
    </item>
    <item>
      <title>CrestApps Agent Skills, Orchard Harvest 2026 survey results - This week in Orchard (13/03/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/crestapps-agent-skills-orchard-harvest-2026-survey-results-this-week-in-orchard-13-03-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Obsolete synchronous CustomSettingsService.GetSettingsType method</h3><p><a href="https://github.com/gvkries" target="_self">Georg von Kries</a> updated <em>CustomSettingsDisplayDriver</em> to use the asynchronous <em>GetSettingsTypeAsync</em> method instead of the synchronous <em>GetSettingsType</em> in both the <em>EditAsync</em> and <em>UpdateAsync</em> methods. He also updated <em>CustomSettingsService.GetSettingsAsync(string settingsTypeName, Action isNew)</em> to use <em>await GetSettingsTypeAsync</em> instead of the synchronous version, and refactored the return pattern to be fully async.</p><p>And finally, he marked <em>CustomSettingsService.GetSettingsType</em> as obsolete, with a message directing users to use <em>GetSettingsTypeAsync</em> instead. This change improves performance by avoiding blocking calls and prepares the codebase for the future removal of the synchronous API.</p><p><img alt="Obsolete synchronous CustomSettingsService.GetSettingsType method" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/obsolete-synchronous-customsettingsservice-getsettingstype-method.png"></p><h3>Refactor ShapeResult for less allocations</h3><p>This is about having an optimized storage for display type locations. Instead of always allocating the <em>_otherLocations</em> dictionary for display type/location pairs, the code now stores up to two pairs in dedicated fields (<em>_firstDisplayType</em>, <em>_firstLocation</em>, <em>_secondDisplayType</em>, <em>_secondLocation</em>) before falling back to a dictionary for additional pairs. This reduces memory allocations for common cases with only one or two display types.</p><p>As you can see in the screen below, there is a <em>Location(string displayType, string location)</em> method. Inside that method, we checked the value of the <em>_otherLocations</em> dictionary. If <em>_otherLocations</em> has no value, let's update it and use the provided location. Otherwise, if this is the <em>_firstDisplayType</em>, then we don't need to create a dictionary. We save the display type allocation again. If there is a first display type, then maybe it's the second one. So, still no dictionary. Otherwise, let's create a new dictionary with the first, with the second, and with the custom display type. It means converting the properties for the first and the second location into the <em>_otherLocations</em> dictionary and resetting the <em>_firstDisplayType</em>, <em>_firstLocation</em>, <em>_secondDisplayType</em>, and <em>_secondLocation</em> fields.</p><p><img alt="Refactor ShapeResult for less allocations" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/refactor-shaperesult-for-less-allocations.png"></p><p><a href="https://github.com/gvkries" target="_self">Georg von Kries</a> also refactored fluent API methods (e.g., <em>Prefix</em>, <em>Location</em>, <em>Displaying</em>, <em>Processing</em>, <em>Name</em>, <em>Differentiator</em>, <em>OnGroup</em>, <em>Cache</em>, <em>RenderWhen</em>) to appear before the core implementation logic, improving code organization and discoverability.</p><h3>Demos</h3><h4>CrestApps Agent Skills</h4><p>In the Model Context Protocol Server (MCP), the server provides tools, such as actions. It can also serve prompts, like the things you can reuse, and also something called resources. It means the MCP can provide resources, can provide tools, and prompts. You can ask MCP to provide you with a document, for example, and that would be a resource that it could use. For more information about the MCP integration with Orchard Core, <a href="https://orcharddojo.net/blog/model-context-protocol-mcp-client-feature-improve-title-part-settings-this-week-in-orchard-25-04-2025" target="_self">check out our blog post from last year</a>.</p><p>So, how can we take skills and provide them as part of the MCP server's resources? It means that if someone wants to connect to the MCP server, they will have access to all these skills and the resources to define their modules.</p><p><a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> created a new repository called <a href="https://github.com/CrestApps/CrestApps.AgentSkills" target="_self">CrestApps.AgentSkills</a> that contains shared AI agent skills and MCP tooling for .NET applications and Orchard Core-based projects. There are three parts to this project:</p><ul><li>CrestApps.AgentSkills.Mcp: Provides a reusable MCP skill engine for any .NET app without building custom parsers/providers.</li><li>CrestApps.AgentSkills.OrchardCore: Used for Orchard Core local development by copying skills to .agents/skills.</li><li>CrestApps.AgentSkills.Mcp.OrchardCore: Exposes Orchard Core skills as MCP prompts and MCP resources at runtime.</li></ul><p>Another project inside is a <a href="https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/src/CrestApps.AgentSkills" target="_self">non-packagable skill repository</a> that serves as the single source of truth for all agent skills in this solution. As you can see, it contains a bunch of Orchard-related skills. This package is intended for local development. Once installed in your web project, it automatically provides a wide range of Orchard Core skills out of the box. After installation, you should see an <em>.agents</em> folder at your solution root. As long as you keep the NuGet package up to date, you'll always get the latest Orchard Core skills, and your agent will automatically discover them.</p><p><img alt="CrestApps.AgentSkills" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/crestapps-agentskills.png"></p><p>If you want to learn more, <a href="https://crestapps.com/orchard-core/the-ai-agent-skills" target="_self">check out this blog post</a> from Mike about this ecosystem for more details! And as always, don't forget to <a href="https://www.youtube.com/watch?v=e_QqViJTncQ" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/e_QqViJTncQ" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><p>And while we are speaking about skills, if you remember, we showed our agent skills for Orchard Core that can also help you with many Orchard Core-related tasks, such as implementing appropriate shape templates with correct alternates. If you haven't heard about it yet, <a href="https://orcharddojo.net/blog/orchard-harvest-2026-survey-lombiq-orchard-core-agent-skills-this-week-in-orchard-27-02-2026" target="_self">check out this post</a>, where you can also see a demo of the <a href="https://github.com/lombiq/orchard-core-agent-skills" target="_self">Lombiq Orchard Core Agent Skills project</a>!</p><p>And that's still not all of it! Last week, we mentioned that <a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a> also had the idea of adding Agent Skills to Orchard Core, primarily for developers. The goal is that when you clone Orchard, you will have access to these skills. You can <a href="https://orcharddojo.net/blog/enhanced-blocks-editor-for-content-creators-last-call-orchard-harvest-2026-survey-this-week-in-orchard-06-03-2026" target="_self">read about those new skills here</a>.</p><h2>News from the community</h2><h3>Orchard Harvest 2026 survey results</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. Please keep in mind that these are just preliminary results and haven't led to any specific outcomes yet.</p><p>It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.</p><p>During <a href="https://www.youtube.com/watch?v=t1Whd6Lrjm4" target="_self">our weekly meeting</a>, some attendees suggested that future surveys should list specific cities rather than countries to avoid ambiguity, as the size of the US and Canada makes country-level choices insufficient for planning. So, we discussed potentially creating a new questionnaire listing a limited set of candidate cities in Canada, North America, and Europe, allowing participants to rank their preferences to achieve a more democratic and actionable outcome. Whatever the next step will be, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.</p><p><img alt="Orchard Harvest 2026 survey results" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260313/orchard-harvest-survey-2026-results.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 423 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=t1Whd6Lrjm4" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:24:10 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/crestapps-agent-skills-orchard-harvest-2026-survey-results-this-week-in-orchard-13-03-2026</guid>
    </item>
    <item>
      <title>Enhanced Blocks Editor for content creators, Last call: Orchard Harvest 2026 survey - This week in Orchard (06/03/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/enhanced-blocks-editor-for-content-creators-last-call-orchard-harvest-2026-survey-this-week-in-orchard-06-03-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Orchard Core - Agent Skills</h3><p>The idea here was to have <a href="https://agentskills.io/home" target="_self">Agent Skills</a> inside Orchard Core, primarily for developers. That's the reason why it's in the <em>.agents/skills</em> folder. The goal is that when you clone Orchard, you will have access to these skills. The new skills are:</p><ul><li>orchardcore-module-creator: Creates new Orchard Core modules with proper structure, manifest, startup, and patterns. Use when the user needs to create a new module, add content parts, fields, drivers, handlers, or admin functionality.</li><li>orchardcore-tester: Tests Orchard Core CMS features through browser automation. Use when the user needs to build, run, set up, or test Orchard Core functionality, including admin features, content management, media library, and module testing.</li><li>orchardcore-theme-creator: Creates new Orchard Core themes with proper structure, manifest, layouts, and assets. Use when the user needs to create a new theme, customize layouts, or set up frontend assets.</li></ul><p>This will be automatically loaded, for example, by Copilot, when developing on Orchard Core. Thanks to <a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a> for the contribution!</p><p><img alt="Orchard Core Agent Skills" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260306/orchard-core-agent-guidelines.png"></p><p>If you remember, last week we showed our agent skills for Orchard Core that can also help you with many Orchard Core-related tasks, such as implementing appropriate shape templates with correct alternates. If you haven't heard about it yet, <a href="https://orcharddojo.net/blog/orchard-harvest-2026-survey-lombiq-orchard-core-agent-skills-this-week-in-orchard-27-02-2026" target="_self">check out our post from last week</a>, where you can also see a demo of the <a href="https://github.com/lombiq/orchard-core-agent-skills" target="_self">Lombiq Orchard Core Agent Skills project</a>! Don't forget to share your experience, feedback, and contributions so we can keep refining the skills in the open and roll improvements back based on real project usage.</p><h3>Implement Result pattern</h3><p>We used to use a pattern that returns an object containing messages regarding error or success messages. For example, the <em>EmailResult</em> class was used to represent the result of sending an email, and the <em>SmsResult</em> class was used to represent the result of sending an SMS. These classes have been replaced by <em>Result</em>, which provides a more consistent and flexible way to handle operation results.</p><p>So, <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> introduced a lightweight <em>Result</em> pattern to represent operation outcomes without throwing exceptions for control flow. The new <em>Result</em> and <em>Result&lt;T&gt;</em> types indicate success/failure and may carry zero or more <em>ResultError</em> entries (supporting <em>LocalizedString</em> for localized messages).</p><p><img alt="Implement Result Pattern" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260306/implement-result-pattern.png"></p><h3>Demos</h3><h4>Enhanced Blocks Editor for content creators</h4><p>If you remember, <a href="https://github.com/buzznick" target="_self">Nick Jackson</a> introduced a new block-style editor for Flow Part and Bag Part that provides a modern, visual content type picker with thumbnail previews, category filtering, and search functionality. This enhances the content-editing experience by allowing editors to browse and select content types more intuitively. If you haven't heard about it, <a href="https://orcharddojo.net/blog/block-content-type-picker-for-flow-part-and-bag-part-christmas-in-lombiq-this-week-in-orchard-19-12-2025" target="_self">check out our corresponding post</a> with it, along with a demo. This feature was just merged to the main branch of Orchard Core a few weeks ago, but improvements are already coming!</p><p>He started his demonstration by showing the ability to insert blocks at any position within the Bag Part using a plus icon, similar to the Flow Part, eliminating the need to add blocks only at the end and then rearrange them.</p><p>The demo included new options to duplicate a block within the same page and to copy a block from one page to another, streamlining content creation and reducing repetitive manual entry. You can do this by right-clicking the block header and selecting <em>Copy</em> or <em>Duplicate</em> from the contextual menu.</p><p><img alt="Copy and duplicate blocks" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260306/copy-duplicate-blocks.png"></p><p>The <em>Duplicate</em> feature duplicates the selected block directly beneath it, creating an exact clone.</p><p>If you want to copy a block from one page to another, you have to select the <em>Copy</em> option from the contextual menu. This feature provides you with two ways to insert your block. The first one is using the <em>Paste Block</em> button under the blocks. It will add the block at the end of the list. Or if we click on the plus icon and select the <em>Paste Block</em> option, it will copy that block at the selected location (CTA (Call to Action) here is the name of the block we want to copy).</p><p><img alt="Paste a block" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260306/paste-a-block.png"></p><p>Now, let's see the concept of <em>Global Blocks</em>, which are content items that can be referenced across multiple pages. Editing a <em>Global Block</em> updates all instances, and users can detach it to create an independent copy for further customization. If you want to create a <em>Global Block</em> based on your block, you need to select the <em>Convert to Global Block</em> option from the contextual menu. It will open up a modal where you can set a descriptive name for your <em>Global Block</em>.</p><p>But how to use this <em>Global Block</em>? If you remember, there was a <em>Global Block</em> button at the bottom of the Bag Part and Flow Part editor. If you click that, we get a little modal window that lists all the available <em>Global Blocks</em> in the system. Here you have a search feature to find your <em>Global Block</em> by name, and if you hit the <em>Add</em> button, the <em>Global Block</em> will be inserted into the editor.</p><p><img alt="Adding a Global Block" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260306/adding-a-global-block.png"></p><p>If you want to edit your <em>Global Block</em>, you can do it in two ways. First, you can hit the <em>Edit</em> button within the editor of your Flow Part or Bag Part, which will redirect you to the editor of the selected <em>Global Block</em>. The other way is to select the new <em>Global Blocks</em> option under the <em>Blocks</em> menu. This page shows you all of the available <em>Global Blocks</em> you have defined in Orchard Core. And of course, you can create new <em>Global Blocks</em> here by selecting the <em>New Global Block</em> button, and hitting the <em>Edit</em> button will allow you to edit the selected <em>Global Block</em>.</p><p><img alt="Managing Global Blocks" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260306/managing-global-blocks.png"></p><p>And it's still just the surface! <a href="https://www.youtube.com/watch?v=aFixA2EIEko" target="_self">Head to YouTube for a recording</a> to see more, including the technical structure behind <em>Global Blocks</em>, like handling of content item references, and the use of local storage and custom controllers for copy-paste operations!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/aFixA2EIEko" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Last call: Orchard Harvest 2026 survey</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. Last time, it was held in Prague, and for this year, we're planning to bring it to North America.</p><p>We would like to understand what actually matters to the Orchard Core community:</p><ul><li>What's your travel budget reality?</li><li>Which locations and dates work best with your schedule?</li><li>What conference format gets you the most value?</li></ul><p>If you've ever attended Harvest, thought about attending, or are just active in the Orchard Core community, your answers would really help us shape the event. You can <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCIJKA6v6WjG9DpML1ER1pm15UMUZMMjk1TllZTE1SUklBUlhKMEQwT1FYTSQlQCN0PWcu" target="_self">fill out the questionnaire here</a> until March 9th!</p><p>We're committed to making Orchard Harvest accessible and valuable for as many community members as possible. Thanks for helping us!</p><p><img alt="Orchard Harvest 2026 survey" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260227/orchard-harvest-conference-2026-survey.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 424 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=O9d0kXg4yiY" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:24:34 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/enhanced-blocks-editor-for-content-creators-last-call-orchard-harvest-2026-survey-this-week-in-orchard-06-03-2026</guid>
    </item>
    <item>
      <title>Orchard Harvest 2026 survey, Lombiq Orchard Core Agent Skills - This week in Orchard (27/02/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/orchard-harvest-2026-survey-lombiq-orchard-core-agent-skills-this-week-in-orchard-27-02-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Allow "mailto" and "tel" links in HTML sanitizer configuration</h3><p>Imagine you have a <em>Link Field</em> where you want to enter a value like <em>mailto:someone@example.com</em>. But the field validation rejects it as an invalid URL, even though <em>mailto:</em> is a valid and commonly used URI scheme for links. So, the <em>Link Field</em> should accept <em>mailto:</em> URLs and treat them as valid links, allowing the content item to be saved. And this is caused by HTML sanitization because the HTML Sanitizer in Orchard Core does not allow <em>mailto:</em> by default.</p><p>So, the fix here, by <a href="https://github.com/gvkries" target="_self">Georg von Kries</a>, is to add <em>mailto:</em> and even <em>tel:</em> to the list of allowed URL schemes <a href="https://docs.orchardcore.net/en/latest/reference/modules/Sanitizer/#defaults-configuration" target="_self">in the HTML sanitizer</a>, enabling support for email links and phone numbers in sanitized HTML content.</p><p><img alt="Allow mailto and tel links in HTML sanitizer configuration" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260227/allow-mailto-and-tel-links-in-html-sanitizer-configuration.png"></p><h3>Allow override Reverse Proxy from configuration</h3><p>You can configure the reverse proxy settings from the admin UI by navigating to <em>Settings -&gt; Reverse Proxy</em> (if you have enabled the <em>Reverse Proxy Configuration</em> feature under <em>Tools -&gt; Features</em>, of course). The following settings are available:</p><ul><li>X-Forwarded-For: Enables forwarding of the client IP address.</li><li>X-Forwarded-Host: Enables forwarding of the original host requested by the client.</li><li>X-Forwarded-Proto: Enables forwarding of the protocol (HTTP or HTTPS) used by the client.</li></ul><p>These settings are stored in the site configuration and can be managed per tenant.</p><p>And from now on, you can use configuration values from <em>appsettings.json</em> to configure reverse proxy settings by calling the <em>ConfigureReverseProxySettings()</em> extension method on <em>OrchardCoreBuilder</em> when initializing the app. Check out <a href="https://docs.orchardcore.net/en/latest/reference/modules/ReverseProxy/" target="_blank">the Reverse Proxy module's documentation</a> to see the configuration options and configuration precedence, keeping in mind security and multi-tenant considerations. Thanks for the contributions from <a href="https://github.com/gvkries" target="_self">Georg von Kries</a> and <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>!</p><p><img alt="Allow override Reverse Proxy from configuration" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260227/allow-override-reverse-proxy-from-configuration.png"></p><h3>Demos</h3><h4>Lombiq Orchard Core Agent Skills</h4><p>We would like to show you our agent skills for Orchard Core (a simple, open format for giving agents new capabilities and expertise) that can help you with many Orchard Core-related tasks, such as implementing appropriate shape templates with correct alternates. It can update recipes and even create workflows for you. So, there are a lot of features <a href="https://github.com/lombiq/orchard-core-agent-skills" target="_blank">in our repository,</a> as you can see in the screen below, too!</p><p><img alt="Lombiq Orchard Core Agent Skills included skills" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260227/lombiq-orchard-core-agent-skills-included-skills.png"></p><p>In this demo, <a href="https://github.com/barthamark" target="_self">Márk Bartha</a> from <a href="https://lombiq.com/" target="_self">Lombiq</a> shows you how he re-implemented his own personal website using agents, but agents still can't really implement Orchard Core shapes/recipes/etc. reliably. One reason is that the documentation is still not ideal for them to consume and learn from. An option would be to let the agent explore the Orchard Core source itself and figure things out, but that would require a lot of context.</p><p>How about recreating the documentation brick by brick and optimizing it for agents? Well, that's what you will find in this solution. The heart of this solution is <a href="https://github.com/Lombiq/Orchard-Core-Agent-Skills/blob/dev/skills/orchard-core-theming/references/TASK-MAP.md" target="_self">this TASK-MAP.md file</a>.</p><p><img alt="TASK-MAP file" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260227/task-map-file.png"></p><p>This is something the agent must read and consume continuously. It provides agents with a map of scenario types the user might request. Like, create content type/part/field definitions, or use particular templates to create shapes and things like these. It can even connect to a SQLite database to retrieve content items, so you can export them to recipes without using deployment plans.</p><p>The way Márk built this is that he told the agent to implement an actual task, discover all related information (like all the Liquid filters), and put everything into an agent-optimized Markdown template. The same goes for every other piece of knowledge he needed to develop his personal site, such as Bag Parts and Flow Parts.</p><p><img alt="Márk Bartha personal site" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260227/mark-bartha-personal-site.png"></p><p>Are you curious about how Márk built his personal website that is completely generated by AI? And the showcase of our <a href="https://github.com/Lombiq/Tailwind-Agent-Skills" target="_self">Lombiq Tailwind Agent Skills repository</a>, which contains agent skills for Tailwind v4 development tasks? Then <a href="https://www.youtube.com/watch?v=ddwm-YKJFW4" target="_self">head to YouTube for a demo</a>!</p><p>Share your experience, feedback, and contributions so we can keep refining the skills in the open and roll improvements back based on real project usage.</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/ddwm-YKJFW4" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Harvest 2026 survey</h3><p>After last year, the Orchard Harvest Conference will be held again in 2026. Last time, it was held in Prague, and for this year, we're planning to bring it to North America.</p><p>To make that decision with real community input, we've put together a short questionnaire about where you'd be interested in attending Orchard Harvest in principle, and what you'd need to make it work (location, travel, budget, etc.).</p><p>If you've ever attended Harvest, thought about attending, or are just active in the Orchard Core community, your answers would really help us shape the event. You can <a href="https://forms.office.com/pages/responsepage.aspx?id=Wt6elek45kStyIVVO-uCIJKA6v6WjG9DpML1ER1pm15UMUZMMjk1TllZTE1SUklBUlhKMEQwT1FYTSQlQCN0PWcu" target="_self">fill out the questionnaire here</a>.</p><p><img alt="Orchard Harvest 2026 survey" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260227/orchard-harvest-conference-2026-survey.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 425 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=O9d0kXg4yiY" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:24:44 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/orchard-harvest-2026-survey-lombiq-orchard-core-agent-skills-this-week-in-orchard-27-02-2026</guid>
    </item>
    <item>
      <title>Secrets module, Lombiq GitHub Actions v4.2.0 - This week in Orchard (20/02/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/secrets-module-lombiq-github-actions-v4-2-0-this-week-in-orchard-20-02-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Dynamic Cache Options documentation</h3><p>The <a href="https://docs.orchardcore.net/en/latest/reference/modules/DynamicCache/#cache-options" target="_self">Orchard Core documentation</a> has been updated by <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> with some lines about the Cache Options. If you navigate to <em>Settings -&gt; General</em> on the admin UI and select the <em>Cache</em> tab, you will see four options that can be configured for Dynamic Cache:</p><ul><li>From environment: Enables the Dynamic Cache feature in the Production ASP.NET Core environment.</li><li>Enabled: Enables the Dynamic Cache feature.</li><li>Disabled: Disables the Dynamic Cache feature.</li><li>Enabled with cache debug mode: Enables the Dynamic Cache feature and activates debug mode, which logs the cache context metadata on the page as HTML comments. This is useful for troubleshooting cache-related issues.</li></ul><p><img alt="Dynamic Cache Options documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260220/dynamic-cache-options.png"></p><h3>New Content Manager Delete behavior</h3><p>Let's say you have some content items in your system that admins must never delete (e.g., because they have a specific status). But if you navigate to <em>Content -&gt; Content Items</em> and bulk delete these content items, you can't easily prevent it for a specific content item. Until now!</p><p>As you can see, the <em>IContentManager.RemoveAsync()</em> method now supports cancelable deletes and returns a <em>bool</em> indicating whether the delete operation actually occurred or was cancelled by a handler. This means that if the content handler for your content sets the <em>RemoveContentContext.Cancel</em> property to <em>true</em>, Orchard will cancel the deletion of your content item. Thanks for your first contribution, <a href="https://github.com/shivampandey0709" target="_self">Shivam Pandey</a>!</p><p><img alt="New Content Manager Delete behavior" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260220/new-content-manager-delete-behavior.png"></p><h3>Demos</h3><h4>Secrets module</h4><p>The Secrets module provides a secure, centralized way to store and manage sensitive data, including passwords, API keys, connection strings, and certificates. It addresses common challenges in managing secrets across development, staging, and production environments.</p><p>Managing sensitive configuration in web applications presents several challenges, which can be solved by using the module that provides. Some of these challenges are:</p><ul><li>Encrypted Storage: Storing passwords and API keys in <em>appsettings.json</em> or environment variables can lead to accidental exposure through source control, logs, or configuration dumps. All secrets are encrypted using ASP.NET Core Data Protection before being stored in the database.</li><li>Deployment Support: When using deployment plans or recipes to set up new tenants, secrets cannot be included directly, as this compromises security. This module provides deployment support for exporting secret metadata (not values) and importing secrets from environment variables during setup.</li><li>Centralized Management: Different environments (development, staging, production) often need different secrets, making configuration management complex. Using this module, you can use a single admin UI to view, create, update, and delete all secrets.</li></ul><p>To enable the module, head to <em>Tools -&gt; Features</em> and enable the <em>Secrets</em> feature (if you want to use Azure Key Vault to store and retrieve secrets, enable the <em>Secrets - Azure Key Vault</em> feature too). After, you can navigate to <em>Settings -&gt; Security -&gt; Secrets</em> to open the secrets management page. This page displays all stored secrets, including their names, types, stores, and last updated dates. Clicking on the <em>Add Secret</em> button lets you choose the type of secret.</p><p><img alt="Select Secret type" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260220/select-secret-type.png"></p><p>Every UI here is dynamic, every secret type is extensible, and you can define the editor for every single type. Here, we selected the <em>Text Secret</em> type to store a secret called <em>SmtpPassword</em> in the <em>Database</em>. The database store uses ASP.NET Core Data Protection to encrypt secrets before storing them.</p><p><img alt="Create Text secret" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260220/create-text-secret.png"></p><p>Secrets can have an optional expiration date. Its purpose is to track when secrets should be rotated or renewed. Expected secrets continue to work; the expiration does not automatically disable them, but on the secrets management page, you will see visual indicators in the form of badges:</p><ul><li>Expired secrets show a red <em>Expired</em> badge.</li><li>Secrets expiring within 30 days show a yellow <em>Expiring</em> badge.</li><li>The secrets list highlights expired/expiring secrets with colored backgrounds.</li></ul><p>And as you can see here, we set the expiration date to next Monday, which is within 30 days, which is why you can see the yellow <em>Expiring</em> badge.</p><p><img alt="An expiring secret" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260220/expiring-secret.png"></p><p>Now it's time to try out our secret! We called our secret <em>SmtpPassword</em>, so we will use it to set up our SMTP Provider! Before doing that, we have to make sure that the <em>SMTP Email Provider</em> and the <em>SMTP Email Secrets</em> features are enabled. The first provides an email service provider that uses Simple Mail Transfer Protocol (SMTP), and the second allows us to store SMTP credentials as secrets rather than in settings. Go to <em>Settings -&gt; Communication -&gt; Email</em> and click the <em>SMTP</em> tab. Put a tick in the <em>Enable SMTP Provider</em> checkbox and in the <em>Require credentials</em> one. To authenticate, you need to provide a username and a password. And as you can see in the screen below, now you don't have to type the password here; instead, you can use a dropdown to set the password from the secrets we set on the secrets management page previously.</p><p><img alt="Using the SMTP password secret" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260220/using-the-smtp-password-secret.png"></p><p>And as always, if you want to see this feature in action, <a href="https://www.youtube.com/watch?v=mGJd-b08Ido" target="_self">head to YouTube for a demo</a> by <a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/mGJd-b08Ido" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Lombiq GitHub Actions v4.2.0</h3><p>The <a href="https://github.com/Lombiq/GitHub-Actions" target="_self">Lombiq GitHub Actions project</a> contains extensions that make a lot of things very easy in an Orchard Core or an Orchard Core-based project. If you don't know GitHub Actions or aren't entirely clear with the terminology, GitHub actions are GitHub's automation platform or CI/CD platform. Orchard Core, of course, also uses it to run various builds. And how you define a pipeline is by creating workflows and/or composite actions. Workflows are what actually run, and actions are things you can add on your own; these are things workflows can call. A workflow is kind of like a program, and an action is like a library your program calls into. And of course, actions can be third-party as well. The point here is that you can use GitHub actions to automate a lot of things, like .NET builds, running tests, and doing various verifications on a pull request, and you can also do all kinds of modularization between these builds.</p><p>Under this project, we have workflows and actions. Workflows that you can call from your own workflows. Pretty much like one-liners, for example, to run the .NET build and execute a test. Actions are the building blocks you can use if you just want something specific. And we have quite a lot of actions and workflows here.</p><p><img alt="Lombiq GitHub Actions" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260220/lombiq-github-actions.png"></p><p>This week, we released the latest version of GitHub Actions, with several new additions and improvements, like:</p><ul><li>The Elasticsearch setup step broke on GitHub-hosted runners. This release adds a reimplemented step that works in the same way but is compatible with the current runner images, too. If you have used Elasticsearch for UI testing before, we recommend that you update to this release ASAP.</li><li>New <a href="https://github.com/Lombiq/GitHub-Actions/blob/dev/Docs/Workflows/Productivity/AssetLinting.md" target="_self">Asset Linting workflow</a>.</li><li>Indicate if a PR has breaking changes and <a href="https://github.com/Lombiq/GitHub-Actions/issues/467" target="_self">generate CompatibilitySuppressions.xml file files</a>.</li><li>Action/workflow to <a href="https://github.com/Lombiq/GitHub-Actions/issues/502" target="_self">automatically open a PR</a>.</li></ul><p><img alt="Asset Linting Lombiq GitHub Actions" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260220/asset-linting-lombiq-github-actions.png"></p><p>Visit the Lombiq GitHub Actions repository and <a href="https://github.com/Lombiq/GitHub-Actions/releases/tag/v4.2.0" target="_self">check out the new release for all the goodies</a>!</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 426 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=SirWMR1-1ME" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:25:07 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/secrets-module-lombiq-github-actions-v4-2-0-this-week-in-orchard-20-02-2026</guid>
    </item>
    <item>
      <title>Dynamic Translations, refactor IContentDefinitionService for improved modularity and design - This week in Orchard (13/02/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/dynamic-translations-refactor-icontentdefinitionservice-for-improved-modularity-and-design-this-week-in-orchard-13-02-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>DisplayedAs was renamed to WithDisplayName, and Named was renamed to WithName for consistency</h3><p>When you define the type definition for your content type, you can define its <em>Technical Name</em> and <em>Display Name</em> using the <em>ContentTypeDefinitionBuilder</em>. You can also attach content parts to it, add various settings, and more. Most method names in <em>ContentTypeDefinitionBuilder</em> start with the word <em>With</em>, which means "define my content type with this name, with this part, etc." But that was not the case when you defined the <em>Name</em> and the <em>Display Name</em>. From now on, <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> was renamed the <em>DisplayedAs</em> method to <em>WithDisplayName</em>, and the <em>Named</em> method to <em>WithName</em> for consistency. We kept the old <em>Named</em> and <em>DisplayAs</em> methods for now, but we marked them as obsolete ones.</p><p><img alt="Renamed DisplayedAs to WithDisplayName" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260213/renamed-displayedas-to-witdisplayname.png"></p><h3>Refactor IContentDefinitionService for improved modularity and design</h3><p>The <em>IContentDefinitionService</em> interface was moved from the <em>OrchardCore.ContentTypes</em> module to <em>OrchardCore.ContentTypes.Abstractions</em>: the <em>ContentDefinitionService</em> doesn't implement any methods that return view models. So, this interface was not just moved; it was also updated to remove all methods for manipulating or creating view models. These methods were moved to the <em>AdminController</em> itself, which needs the view models, so it uses the <em>ContentDefinitionManager</em> directly and creates its own view models from the business data. And we also have documentation for the <em>IContentDefinitionService</em> interface.</p><p><img alt="Refactor IContentDefinitionService for improved modularity and design" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260213/refactor-icontentdefinitionservice-for-improved-modularity-and-design.png"></p><h3>Demos</h3><h4>Dynamic Translations</h4><p>The <em>Data Localization</em> module provides a database-backed localization system for translating dynamic content that cannot be handled by static PO files, such as:</p><ul><li>Content Type and Content Field display names.</li><li>Permission names and descriptions.</li><li>Any custom dynamic strings via <em>ILocalizationDataProvider</em>.</li></ul><p>To enable this module, go to <em>Tools -&gt; Features</em> and enable the <em>Data Localization</em> module. It means that you will find a new <em>Dynamic Translations</em> option in <em>Settings -&gt; Localization</em>. For each of these data-localizable items, we have a translation editor. This editor displays all translatable strings grouped by category:</p><ul><li>Culture Selector: Choose which culture to edit translations for.</li><li>Search: Filter strings by original text or translation.</li><li>Category Filter: Focus on a specific category.</li><li>Auto-save: Toggle automatic saving (enabled by default, saves after 2 seconds of inactivity).</li><li>Save Button: Manually save all changes.</li></ul><p>Our demo site supports two cultures: English and Hungarian. We selected the Hungarian culture using the culture selector and filtered for the <em>Content Types</em> category. We already started providing translations for Content Type strings. As you can see, we translated 6 of the 16 strings.</p><p><img alt="Dynamic Translations" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260213/dynamic-translations.png"></p><p> We keep the <em>Auto-save</em> checkbox checked, which means the site automatically saves our modifications without needing to click the <em>Save</em> button at the bottom of the screen.</p><p>If we switch to Hungarian, we could see the UI and the data in Hungarian (but we have no Hungarian PO files). If we click the <em>New</em> button to create new content items based on existing content types, we can see the translated names of those content types. The <em>Taxonomy</em> is there because we haven't translated it.</p><p><img alt="Localized Content Types" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260213/localized-content-types.png"></p><p>If we go back to the <em>Dynamic Translations</em> page, we will find a button labeled <em>Statistics</em> at the bottom that opens the statistics dashboard. The statistics dashboard shows translation completion progress:</p><ul><li>Overall Progress: Total translation progress across all cultures.</li><li>By Culture: Progress bar and completion count for each supported culture.</li><li>By Category: Detailed breakdown per category for a selected culture.</li></ul><p>Progress bars are color-coded:</p><ul><li>Green (≥75%): Good progress.</li><li>Yellow (25-74%): In progress.</li><li>Red (&lt;25%): Needs attention.</li></ul><p>Here you can see that we translated 6 strings of 226, and all 6 are under the Content Types category.</p><p><img alt="Dynamic Translation Statistics" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260213/dynamic-translation-statistics.png"></p><p>And as always, if you want to see this new feature in action, <a href="https://www.youtube.com/watch?v=02qLfWoCqV4" target="_self">head to YouTube for a recording</a> by <a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/02qLfWoCqV4" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Modernizing a legacy Orchard 1 site</h3><p>Last month, we rebuilt <a href="http://hajosnep.hu" target="_self">hajosnep.hu</a>, Hungary's oldest maritime history association's website, with Orchard Core on DotNest, improving design, usability, and maintainability. <a href="https://dotnest.com/blog/modernizing-hajosnep-hu-rebuilding-an-orchard-1-website-with-orchard-core-on-dotnest" target="_self">Check out our case study</a> to learn why modernization was important, the technical details (including the use of <a href="https://github.com/Lombiq/DotNest-Core-SDK" target="_self">Lombiq's DotNest Core SDK</a> for theme development), the key challenges and solutions, and the future plans.</p><p>The renewed <a href="http://hajosnep.hu" target="_self">hajosnep.hu website</a> now provides a modern, mobile-friendly platform for the association to share content, engage with the community, and showcase Hungary's maritime history. The site is fully maintainable, accessible, and prepared for future multilingual expansion, ensuring it can evolve alongside the association's needs for years to come.</p><p>If you are considering a website renewal or migration, especially on Orchard Core or DotNest, this project demonstrates how a robust theme foundation and an automated asset pipeline can help modernize even complex legacy sites in a maintainable and future-proof way.</p><p>If you’d like to build something similar, you can <a href="https://dotnest.com/DotNest.Frontend/UserSiteManagement/EditSite" target="_self">create your own Orchard Core site on DotNest</a> and start experimenting right away. As Orchard Core grows in popularity, so does our experience with it. If you'd like to take advantage of the platform's various improvements, <a href="https://lombiq.com/contact-us" target="_self">don't hesitate to reach out to us here</a>.</p><p><img alt="Modernizing hajosnep.hu case study" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260213/modernizing-hajosnep-case-study.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 425 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=jhwLXmMZJHY" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:25:16 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/dynamic-translations-refactor-icontentdefinitionservice-for-improved-modularity-and-design-this-week-in-orchard-13-02-2026</guid>
    </item>
    <item>
      <title>IntelliSense for recipes, Orchard Core Commerce 3.1 - This week in Orchard (06/02/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/intellisense-for-recipes-orchard-core-commerce-3-1-this-week-in-orchard-06-02-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Replace dynamic ContentCard shapes with strongly typed shapes</h3><p>The dynamic shape creation using <em>_shapeFactory.New.ContentCard(...)</em> has been replaced with strongly typed shapes, <em>using CreateAsync&lt;T&gt;</em> to improve performance and type safety. It means new shape classes in the <em>OrchardCore.ContentTypes.Abstractions</em> library:</p><ul><li><strong>ContentCardShape</strong> - encapsulates all <em>ContentCard</em> properties</li><li><strong>ContentCardFieldsEditShape</strong> - for <em>ContentCard_Fields_Edit</em> shape</li><li><strong>ContentCardFrameShape</strong> - for <em>ContentCard_Frame</em> wrapper shape</li></ul><p>Here you can see an example of the updated shape creation pattern for both the controllers and the views:</p><p><img alt="Updated shape creation pattern" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260206/updated-shape-creation-pattern.png"></p><p>To see a real-life example, here you can see using the new strongly typed shape when working with <em>Bag Parts</em>.</p><p><img alt="Bag Part strongly typed shape" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260206/bag-part-strongly-typed-shape.png"></p><h3>Update UserDisplayName shape documentation</h3><p>The <em>UserDisplayName</em> shape provides a flexible way to display user information throughout Orchard Core, particularly in admin lists. This shape is commonly used when displaying content authors, audit trail users, or any user reference. The updated <a href="https://docs.orchardcore.net/en/latest/reference/modules/Templates/#customizing-user-display-in-admin-lists" target="_self">Templates page in the Orchard Core documentation</a> describes how to create the <em>UserDisplayName</em> shape, with customization examples in both Razor and Liquid. You can also see how to access the full <em>user</em> object with custom properties and content parts, how to display the full name instead of the username, or how to create a user-specific template for a particular username.</p><p><img alt="Update UserDisplayName shape documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260206/update-userdisplayname-shapes-documentation.png"></p><p>You can also <a href="https://docs.orchardcore.net/en/latest/reference/modules/Liquid/#users_by_name-filter" target="_self">read about how to use the new users_by_name filter here</a>, which loads one or more user objects from the database by username(s). The username is automatically normalized before querying.</p><p><img alt="Users_by_name filter documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260206/users-by-name-filter-docs.png"></p><h3>Demos</h3><h4>IntelliSense for recipes</h4><p>Recipes are a powerful thing in Orchard Core. It allows you to do a lot with just JSON. It's more powerful now that we have AI! So, we can just have AI-generated recipes and execute them, and things can get done. However, there are a few issues with our current recipe setup. One is that you can't register recipes the way you register a service; they have to be files, and you can't create a recipe from code, for example.</p><p>The other issue is that we just don't have a way to control the schema. We currently have no way to ask the AI to provide us with really good recipes because the recipe structure is unknown. We have documentations and AI utilizes those documents, but we don't have everything documented.</p><p>If we have a JSON schema for the recipes, we can do a lot more things with it. For example, we can try unifying the recipe and the deployment. It means that if we change the recipe's structure or schema, it will affect both the recipe and the deployment, allowing us to export and import structured data.</p><p><a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a> tried to ask the AI to do things for us and to change how recipes are handled in the code. Here you can find <a href="https://github.com/OrchardCMS/OrchardCore/pull/18742" target="_self">the PR for this feature</a>.</p><p>Now let's navigate to the admin UI and enable the <em>View Or Download Content As JSON</em> feature under <em>Tools -&gt; Features</em>. After, we can navigate to <em>Tools -&gt; Deployments</em> and select the <em>JSON Import</em> option from the menu. Here, you will notice IntelliSense. This, by itself, adds a lot of value from a UI perspective when you get that IntelliSense.</p><p><img alt="IntelliSense for recipes" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260206/json-import-intellisense.png"></p><p>And we still have a lot to cover! If you want to know more details about this feature, <a href="https://www.youtube.com/watch?v=Bag7LS0fP6o" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/Bag7LS0fP6o" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Core Commerce 3.1</h3><p>Orchard Core Commerce is an Orchard Core port and partial rewrite of the open-source <a href="https://github.com/bleroy/Nwazet.Commerce" target="_self">Nwazet Commerce</a> module that was built for Orchard CMS 1.x. Nwazet Commerce was initially built in 2012 by <a href="https://github.com/bleroy" target="_self">Bertrand Le Roy</a>, loosely based on a commerce sample by <a href="https://github.com/sfmskywalker" target="_self">Sipke Shoorstra</a>. The initial goal of Nwazet Commerce was to power the website of the hardware startup Nwazet. While Nwazet is no longer operating, the Nwazet Commerce project continued and was further developed by a group of passionate contributors who use the platform for their own and their customers' websites.</p><p>Like Orchard, Nwazet Commerce was built with extensibility in mind and, as such, includes its own extensions (typical examples include local tax and shipping modules). It's also a pure, idiomatic Orchard.</p><p>Orchard Core represents a major evolution of the Orchard design principles and is sufficiently different that running Nwazet Commerce on it will necessitate significant work. As such, the community decided that starting from a blank slate was the best approach, so they will port Nwazet Commerce piece by piece, carefully applying Orchard Core's new design principles. The community also decided to adopt a new name that will shed its now-obsolete origins and establish our ambition for the module to become the go-to commerce module for Orchard Core.</p><p>Back in 2022, <a href="https://www.youtube.com/watch?v=EVvwS1UaIk4" target="_self">we published a demo</a> that showed the module's current state. A few months later, we reached another milestone when we completed the basic implementation of the <a href="https://orcharddojo.net/blog/content-relationships-guide-orchard-core-commerce-stripe-payment-this-week-in-orchard-09-09-2022" target="_self">Stripe Payment integration</a> (without taxation, shipping, etc.). Stripe is a payment service provider that business owners can use to accept dozens of payment methods, from credit cards to buy-now, pay-later services. Stripe Payments handles the steps between a customer providing their card information and learning that their payment has been accepted.</p><p>As you may know, <a href="https://www.lombiq.com/" target="_self">Lombiq</a> provides stewardship for the Orchard Core Commerce module. That means that we do code reviews and work on features and fixes. At the beginning of 2023, we released the 1.0 version of the Orchard Core Commerce module! You can <a href="https://orcharddojo.net/blog/orchard-core-commerce-mvp-make-features-module-optional-to-non-default-tenant-this-week-in-orchard-03-02-2023" target="_self">read some of the key features of the release in this post</a>. You can easily try it out by <a href="https://github.com/OrchardCMS/OrchardCore.Commerce" target="_self">cloning this repo</a> and building and running the <em>OrchardCore.Commerce.Web</em> project. Thanks to <a href="https://docs.orchardcore.net/en/latest/docs/reference/modules/AutoSetup/" target="_self">Auto Setup</a>, the site will be set up with the <em>OrchardCore Commerce - Development</em> recipe. Afterward, go to the dashboard using the credentials <em>admin</em> and <em>Password1!</em>, then go to <em>Content -&gt; Content Items</em> to create your first <em>Product</em>.</p><p>At the beginning of 2025, we released the 3.0 version of the Orchard Core Commerce module, which was a major version increment due to some breaking changes, so watch out! One of the breaking changes was that we dropped Newtonsoft.Json support, replaced the <em>IPayment</em> interface, and now services and modules use Payment directly, which was also moved into the <em>OrchardCore.Commerce.Abstractions</em> library.</p><p>Last week, we released version 3.1 of the module, the final release for Orchard Core 2.x. The next release will depend on Orchard Core 3.0. We now have a new feature, <em>Orchard Core Commerce - Subscription,</em> with basic support for subscription-type products. Currently, it's only for Stripe, which natively supports this payment model. We have also added <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis/overview" target="_self">minimal APIs</a> for some shopping cart and payment activities.</p><p>Check out <a href="https://github.com/OrchardCMS/OrchardCore.Commerce/releases/tag/v3.1.0" target="_self">the full list of changes here</a>!</p><p><img alt="Orchard Core Commerce 3.1" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260206/orchard-core-commerce-31.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 426 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=W61BdGWoeCs" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:25:24 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/intellisense-for-recipes-orchard-core-commerce-3-1-this-week-in-orchard-06-02-2026</guid>
    </item>
    <item>
      <title>Agent Guidelines for Orchard Core, new marketing site on DotNest - This week in Orchard (30/01/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/agent-guidelines-for-orchard-core-new-marketing-site-on-dotnest-this-week-in-orchard-30-01-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Remove default implementations from interfaces and obsolete members for Orchard Core 3.0</h3><p>We addressed the breaking changes introduced in previous versions and removed all members that were obsolete in those versions. It means removing default implementations from interfaces and obsolete members in preparation for Orchard 3.0.</p><p>Starting with Orchard Core 3.0, several interfaces, classes, default implementations, and extension methods have been removed. If you <a href="https://docs.orchardcore.net/en/latest/releases/3.0.0/#removed-interfaces-and-default-implementations" target="_self">check out the release notes of Orchard Core 3.0</a>, you will find a list of the removed code.</p><p><img alt="Removed interfaces and default implementations docs" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260130/removed-interfaces-and-default-implementations-docs.png"></p><h3>Agent Guidelines for Orchard Core</h3><p><a href="https://github.com/sebastienros" target="_self">Sébastien Ros</a> added <a href="https://github.com/OrchardCMS/OrchardCore/blob/main/AGENTS.md" target="_self">a new MD file at the root of the Orchard Core repository</a> that explains to LLMs how to build, test, and run Orchard. This document provides comprehensive guidelines for LLM agents working with the Orchard Core codebase, covering building, testing, and creating new features. It describes how to create a module or theme by showcasing its structure and how to register services using dependency injection in the startup file. It includes functional tests, how they are organized and working, so we can ask them to create functional tests too. And many more!</p><p><img alt="Orchard Core Agent Guidelines" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260130/orchard-core-agent-guidelines.png"></p><h2>News from the community</h2><h3>Shoogr case study: A stunning, high-converting marketing website with lead magnets on DotNest</h3><p>High-converting marketing website with lead magnets on Orchard Core?</p><p>Meet <a href="https://shoogr.com/" target="_self">Shoogr</a>, a modern marketing website built for Hungarian marketing strategist and coach <a href="https://www.linkedin.com/in/sugarjudit" target="_self">Sugár Judit</a>, developed by <a href="https://github.com/barthamark" target="_self">Márk Bartha</a>. Designed with Magic Patterns, brought to life with Orchard Core, and hosted on <a href="https://dotnest.com/" target="_self">DotNest</a> for seamless performance.</p><p>Learn how easily you can launch a beautiful, SEO-ready, and conversion-focused Orchard Core website on DotNest. Thanks to Orchard Core's modularity and DotNest's managed hosting, Judit now has a website that's easy to update, scalable for future needs, and perfectly aligned with her brand. Read the <a href="https://dotnest.com/blog/shoogr-case-study-a-stunning-high-converting-marketing-website-with-lead-magnets-on-dotnest" target="_self">full case study here</a>!</p><p><img alt="Shoogr case study" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260130/shoogr-case-study.png"></p><p>If you’d like to build something similar, you can <a href="https://dotnest.com/DotNest.Frontend/UserSiteManagement/EditSite" target="_self">create your own Orchard Core site on DotNest</a> and start experimenting right away. As Orchard Core grows in popularity, so does our experience with it. If you'd like to take advantage of the platform's various improvements, don't hesitate to <a href="https://lombiq.com/contact-us" target="_self">reach out to us here</a>.</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 426 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=6TirkaUiK4M" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 30 Jan 2026 11:03:41 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/agent-guidelines-for-orchard-core-new-marketing-site-on-dotnest-this-week-in-orchard-30-01-2026</guid>
    </item>
    <item>
      <title>AI Chat Interactions module, migrate Media and Resources modules from Gulp to asset manager pipeline - This week in Orchard (23/01/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/ai-chat-interactions-module-migrate-media-and-resources-modules-from-gulp-to-asset-manager-pipeline-this-week-in-orchard-23-01-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Add ShapeResult.Cache() docs</h3><p><em>ShapeResult.Cache()</em> is a simple way to cache shapes created from drivers. It uses <em>Dynamic Cache</em> in a similar way <a href="https://docs.orchardcore.net/en/latest/reference/modules/DynamicCache/#caching-a-shape" target="_self">as ShapeMetadata.Cache() does</a>, but unlike that, it's not documented and, most likely related to that, is also underutilized (only the <em>Notifications</em> project uses it).</p><p>From now on, you will find some lines about how to use the <em>ShapeResult.Cache()</em> method <a href="https://docs.orchardcore.net/en/latest/reference/modules/DynamicCache/#cachecontext-members" target="_self">in the documentation of the Dynamic Cache module</a>, thanks to <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>!</p><p><img alt="ShapeResult.Cache documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260123/shaperesult-cache-documentation.png"></p><h3>Migrate Media and Resources modules from Gulp to the asset manager pipeline</h3><p>Orchard Core included a processing pipeline for client-side assets (typically scripts and stylesheets), which was used to perform front-end development workflow tasks such as transpilation, minification, and bundling in both core projects and extensions (i.e., modules and themes).</p><p>The client-side asset pipeline was powered by <a href="http://gulpjs.com" target="_self">Gulp</a>, a popular open-source task runner built on <a href="https://nodejs.org" target="_blank">Node.js</a> that automates a wide variety of tasks in a development workflow.</p><p>From now on, the Gulp pipeline is removed and can no longer be executed. The goal of this change is to migrate the <em>Media</em> and <em>Resources</em> modules to the new asset manager pipeline and remove the entire Gulp infrastructure. This means you will not find a <em>gulpfile.js</em> file, as we will no longer need Gulp. <a href="https://github.com/sebastienros" target="_blank">Sébastien Ros</a> also removed 19 Gulp dependencies, Gulp scripts, and integration. Instead, you will find an <em>Assets.json</em> file in the <em>Media</em> module and in the <em>Resources</em> module to support the new pipeline.</p><p>The migration involved updating asset actions to use environment variables to pass large lists of files, and addressing command-line argument length limitations, particularly in Windows CI environments. It means that all modules now use the modern asset manager pipeline exclusively.</p><p>You will find everything you need to know about using the <em>Assets Manager</em> in <a href="https://docs.orchardcore.net/en/latest/guides/assets-manager/" target="_self">this updated guide</a> from the Orchard Core documentation.</p><p><img alt="Assets Manager documentation" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260123/assets-manager-documentation.png"></p><h3>Demos</h3><h4>AI Chat Interactions module</h4><p>At the beginning of last year, we <a href="https://orcharddojo.net/blog/openai-feature-including-azure-openai-integration-expose-properties-of-itrackingconsentfeature-and-cookie-policy-in-liquid-this-week-in-orchard-17-01-2025" target="_self">mentioned a new module</a> created by <a href="https://github.com/MikeAlhayek" target="_self">Mike Alhayek</a>, which is an implementation of AI that allows you to interact with any AI model. He worked extensively on that solution and, from time to time, added many new features, which <a href="https://orcharddojo.net/blog/managing-ai-models-and-profiles-reorganize-the-admin-menu-this-week-in-orchard-21-02-2025" target="_self">we mentioned here</a> and <a href="https://orcharddojo.net/blog/openai-feature-updates-automate-orchard-core-deployment-on-aws-ecs-with-cloudformation-this-week-in-orchard-14-03-2025" target="_self">here</a>. After that, we highlighted the <a href="https://orcharddojo.net/blog/model-context-protocol-mcp-client-feature-improve-title-part-settings-this-week-in-orchard-25-04-2025" target="_self">Model Context Protocol (MCP) Client and Model Context Protocol (Local MCP) Client features</a>, as well as the <a href="https://orcharddojo.net/blog/be-a-speaker-at-orchard-harvest-2025-orchard-core-ai-agent-module-this-week-in-orchard-09-05-2025" target="_self">Orchard Core AI Agent feature</a>. And last time, you could read about the <a href="https://orcharddojo.net/blog/ai-data-source-management-feature-allow-the-use-of-the-site-s-time-zone-in-workflow-timer-activities-this-week-in-orchard-13-06-2025" target="_self">AI Data Source Management feature</a>. Here is the <a href="https://github.com/CrestApps/CrestApps.OrchardCore" target="_self">GitHub repository</a> for this project, along with its corresponding <a href="https://www.nuget.org/packages/CrestApps.OrchardCore.AI/" target="_self">NuGet package</a>.</p><p>There have been many changes since the AI Data Source Management feature was introduced; the AI Suite now includes 23 features! The one we will check out today is the AI Chat Interactions module, which provides a playground where you can create a chat instance, configure it however you want, and chat with that AI model. Here you can find several new features that enable ad-hoc AI chat interactions.</p><p><img alt="AI Chat Interactions features" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260123/ai-chat-interactions-features.png"></p><p>After enabling these features, you will see a new option under <em>Artificial Intelligence</em>, called <em>Chat Interactions</em>. If you click on the <em>New Chat</em> button on that screen, you can add a new interaction. After that, you can select whichever provider you want to use. In our case, we selected the <em>Azure OpenAI</em> one.</p><p>And as you see, the playground is ready. The <em>Title</em> is a descriptive name for this chat interaction. It helps you identify and find this conversation in your history. You can select the AI model to use for this chat interaction from the <em>Deployment</em> drop-down. If not selected, the default deployment will be used. The <em>System instructions</em> text area provides the AI with instructions on how to behave, what role to play, and what style to use in its responses. This is the "persona" or "context" that guides all AI responses.</p><p><img alt="Azure OpenAI Chat" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260123/azure-openai-chat.png"></p><p>If you enable the <em>Orchard Core AI Agent</em> feature, you can use natural language to run tasks, manage content, interact with Orchard Core features, and do much more with integrated AI-powered tools. And that's the one that provides you with the <em>Tools</em> tab here. If you want to create content, you can say, "Create a Blog post for me about a specific topic".</p><p><img alt="Azure OpenAI Chat Tools" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260123/azure-open-ai-chat-tools.png"></p><p>If you have the <em>AI Chat Interactions - Documents</em> feature enabled, it extends ad-hoc AI chat interactions by allowing you to upload documents and chat about them. Under the <em>Documents</em> tab, you can attach any document you want and chat about it. If you have a bunch of files you want to run analytics on or ask a bunch of questions on, you can just drag and drop them here.</p><p><img alt="Azure OpenAI Chat Documents" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260123/azure-open-ai-chat-documents.png"></p><p>And that's not all of it! To learn more about this module, <a href="https://www.youtube.com/watch?v=fvmrjHn8Y3w" target="_self">watch a YouTube recording</a>! And guess what! This feature has evolved so much since this original demo!</p><p>With document attachments, Chat Interactions goes far beyond basic RAG. It understands intent, making responses smarter, more accurate, and far more useful. What can you do today?</p><ul><li>Upload an Excel file and ask questions about the data.</li><li>Summarize, aggregate, or analyze spreadsheets.</li><li>Attach reports, project plans, or business documents.</li><li>Ask for meaningful summaries, insights, trends, or key takeaways.</li></ul><p>Think of it as having an intelligent analyst right inside the chat. The possibilities are endless. And the best part is all of this power is already available!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/fvmrjHn8Y3w" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 428 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=bgTf00afc1A" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:25:42 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/ai-chat-interactions-module-migrate-media-and-resources-modules-from-gulp-to-asset-manager-pipeline-this-week-in-orchard-23-01-2026</guid>
    </item>
    <item>
      <title>Orchard 1.11 release, use SLNX solution file format - This week in Orchard (16/01/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/orchard-1-11-release-use-slnx-solution-file-format-this-week-in-orchard-16-01-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Content life cycle docs</h3><p>When you are a newcomer in Orchard Core, it could be challenging to understand how the content life cycle works in the content management system. You know that your content item can have different versions like Draft, Published, Unpublished, but what are the differences between these content item versions?</p><p><a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> has added some lines to the <a href="https://docs.orchardcore.net/en/latest/reference/modules/Contents/#content-life-cycle" target="_self">Orchard Core documentation</a> to help you understand the content life cycle in Orchard Core.</p><p><img alt="Content life cycle docs" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260116/add-content-life-cycle-docs.png"></p><h3>Use SLNX file format</h3><p>For years, we have been using Visual Studio's solution file (*.SLN) format, and while it's a core part of Orchard Core's project organization, the experience hasn't always been smooth. Whether you've been modifying, maintaining, or resolving merge conflicts, it often feels more like a hassle than it should.</p><p>Microsoft made several improvements with the new solution file format to enhance the experience. These changes include a more readable, editable structure, the use of XML, and the preservation of whitespace and comments for better organization. The new format is minimalistic, optimizing performance for faster load times and reducing merge conflicts in version control. It also ensures compatibility with older Visual Studio versions and aligns with certain MSBuild conventions for smoother integration with other tools.</p><p>Thanks to <a href="https://github.com/agriffard" target="_self">Antoine Griffard</a>, Orchard Core now uses this simpler XML format for the solution file.</p><p><img alt="Use SLNX file format" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260116/use-slnx-solution-file-format.png"></p><h2>News from the community</h2><h3>Orchard 1.11 Released</h3><p>The wait is over: version 1.11 of Orchard CMS (the legacy version of Orchard) is finally here with more than 650 changes from 100+ contributors! You only had to wait 2 months short of 10 years since 1.10, but it was worth it! :)</p><p>Check out the <a href="https://github.com/OrchardCMS/Orchard/releases/tag/1.11" target="_self">release notes</a> for the breaking changes, bugfixes, new features, and the performance improvements! Thanks to all of the contributors who made this release happen! Update your project now for better performance, security, and usability, or upgrade to Orchard Core for even more awesomeness!</p><p>We have a fair amount of experience with migrating different sites from Orchard 1 to Orchard Core. For example, <a href="https://lombiq.com/blog/smithsonian-folkways-recordings-now-upgraded-to-orchard-core" target="_self">we migrated Folkways</a>. We also had the chance to apply our knowledge <a href="https://lombiq.com" target="_blank">on our main site</a>, <a href="https://orcharddojo.net" target="_blank">Orchard Dojo</a>, <a href="https://hastlayer.com" target="_blank">Hastlayer</a>, and <a href="https://dotnest.com" target="_self">DotNest</a>. There was a good reason to migrate: Orchard Core offers better performance, modularity, and development experience than Orchard 1.</p><p>As Orchard Core grows in popularity, so does our experience with it. If you'd like to take advantage of the platform's various improvements, don't hesitate to <a href="https://lombiq.com/contact-us" target="_self">reach out to us here</a>.</p><p><img alt="Orchard 1.11 Release" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260116/orchard-1-11-release.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 430 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=E0_wj77Y_0Y" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 16 Jan 2026 11:21:43 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/orchard-1-11-release-use-slnx-solution-file-format-this-week-in-orchard-16-01-2026</guid>
    </item>
    <item>
      <title>Add Placeholder setting to Fields, .NET Foundation most active community projects 2025 - This week in Orchard (09/01/2026)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/add-placeholder-setting-to-fields-net-foundation-most-active-community-projects-2025-this-week-in-orchard-09-01-2026</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Add Placeholder setting to Fields</h3><p>This feature adds a <em>Placeholder</em> option to the Fields settings, allowing admins to specify a placeholder that appears in the editor UI when content authors enter text. The placeholder improves the editor experience by giving content authors contextual guidance when entering text values.</p><p>You can set the Placeholder when editing the following Content Fields:</p><ul><li>Content Picker Field</li><li>Text Field</li><li>User Picker Field</li><li>YouTube Field</li><li>Taxonomy Field</li></ul><p>But you can set the placeholder text for the Title Part, too.</p><p>Here, we have a site set up with the <em>Blog</em> recipe, which includes a predefined content type called <em>Blog Post</em>. We said we want to display a placeholder for the <em>Title Part</em> and the <em>Text Field</em> called <em>Subtitle</em>. To set this up for the <em>Text Field</em>, we simply navigated to <em>Design -&gt; Content Definition -&gt; Content Types</em> and clicked <em>Edit</em> next to the <em>Blog Post</em> content type. After we edited the <em>Subtitle</em> field, where we entered the "<em>The subtitle of the blog post.</em>" text into the new <em>Placeholder</em> text box under the <em>Hint</em> text area. We did the same for the <em>Title Part</em>.</p><p>And now, if we create a new <em>Blog Post</em> content item, you will see that the greyish placeholder text is inside the <em>Title</em> and <em>Subtitle</em> text boxes. Thank you, <a href="https://github.com/plamco" target="_blank">Plamco,</a> for your first contribution!</p><p><img alt="Add Placeholder setting to Fields" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260109/add-placeholder-setting-to-fields.png?width=1024"></p><h3>Adding docs page about contributing to orchardcore.net</h3><p>Yes, you heard it right: Orchard Core's official website is open source, which means you can contribute to it too! <a href="https://github.com/Piedone" target="_blank">Zoltán Lehóczky</a> added a page that helps you start and explains what you can contribute. Check out <a href="https://docs.orchardcore.net/en/latest/contributing/contributing-to-orchardcore-net/" target="_self">this page for more details</a>!</p><p><img alt="Docs page about contributing to orchardcore.net" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260109/contributing-orchardcore-net.png"></p><h2>News from the community</h2><h3>.NET Foundation most active community projects 2025</h3><p><a href="https://x.com/sbwalker" target="_self">Shaun Walker</a> shared <a href="https://x.com/sbwalker/status/2006370670134124908" target="_self">this image on X</a> that shows the most active community projects based on the number of pull requests, commits, and new contributors.</p><p>As you can see, Orchard has 851 pull requests in 2025, which is great, but Orchard has 772 commits, which is weird. Why do we have more pull requests than commits? Do we close that many pull requests? The reason for that could be that we have some mini PRs created by Renovate.</p><p>And we haven't talked about which projects use squash and merge and which don't. But it's still nice to see Orchard in the top 10 for many years now! And don't forget about the fact that Orchard Core recently reached 8000 (7990 currently to be precise) stars on GitHub! If you haven't done it yet, star the <a href="https://github.com/OrchardCMS/OrchardCore/" target="_self">Orchard Core repository</a> to help us reach 8k stars!</p><p><img alt=".NET Foundation most active community projects 2025" src="/media/BlogPost/this-week-in-orchard-posts/2026/20260109/dnf-most-active-community-projects-2025.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 430 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=0hXQtqMN1vo" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Fri, 16 Jan 2026 10:57:59 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/add-placeholder-setting-to-fields-net-foundation-most-active-community-projects-2025-this-week-in-orchard-09-01-2026</guid>
    </item>
    <item>
      <title>Block Content Type Picker for Flow Part and Bag Part, Christmas in Lombiq - This week in Orchard (19/12/2025)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/block-content-type-picker-for-flow-part-and-bag-part-christmas-in-lombiq-this-week-in-orchard-19-12-2025</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Move GetAllCulturesAndAliases to the default implementation</h3><p>Previously, the <em>ILocalizationService</em> interface had a static default method, <em>GetAllCulturesAndAliases()</em>, that returned a list of all cultures available in the system along with their aliases. <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a> replaced this method with an instance method, allowing developers to customize the implementation rather than rely on the default one.</p><p>Here you can see the changes to the <em>ILocalizationService</em> interface, including the new <em>GetAllCulturesAndAliases()</em> method, which you can override in your own <em>ILocalizationService</em> implementation so it can be configured (e.g., to add new cultures).</p><p><img alt="Move GetAllCulturesAndAliases to the default implementation" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251219/getallculturesandaliases-implementation.png"></p><h3>Add missing docs for the Setup module</h3><p>When you begin with an empty site, a start screen lets you set parameters such as the Title, the selected database, and the recipe used to generate the site. This is done by the <em>Setup module</em>, which is creating the application's setup experience.</p><p>To make this happen, we have three interfaces with their default implementations: <em>ISetupEventHandler</em>, <em>ISetupService</em>, and <em>ISetupUserIdGenerator</em>. And from now on, you will find documentation for all of these interfaces and the default implementations added by <a href="https://github.com/hishamco" target="_self">Hisham Bin Ateya</a>.</p><p><img alt="Add missing docs for the Setup module" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251219/add-missing-docs-for-setup.png"></p><h3>Demos</h3><h4>Block Content Type Picker for Flow Part and Bag Part</h4><p>If you followed our posts over the last two weeks, you could see the progress of the Block Content Type Picker for Flow Part and Bag Part. In case not, <a href="https://orcharddojo.net/blog/prioritize-format-over-quality-in-resizeurlfilter-blocks-editor-for-the-bag-part-this-week-in-orchard-05-12-2025" target="_self">here is the first part</a> and <a href="https://orcharddojo.net/blog/add-delete-and-unpublish-buttons-to-the-content-editor-blocks-editor-for-the-bag-part-improvements-this-week-in-orchard-12-12-2025" target="_self">here is the second one</a>.</p><p>And now <a href="https://github.com/OrchardCMS/OrchardCore/pull/18625" target="_self">there is a PR for this feature</a> developed by <a href="https://github.com/buzznick" target="_self">Nick Jackson</a>, which introduces a new block-style editor for <em>Flow Part</em> and <em>Bag Part</em> that provides a modern, visual content type picker with thumbnail previews, category filtering, and search functionality. This enhances the content editing experience by allowing editors to browse and select content types more intuitively.</p><p>Let's check out this PR and set up our site using the <em>Blog</em> recipe. We have a <em>Page</em> content type by default, which has a <em>Flow Part</em> attached. If we navigate to <em>Design -&gt; Content Definition -&gt; Content Types</em> and edit the definition of the attached <em>Flow Part</em> of the <em>Page</em> content type, we can set the editor type to <em>Blocks</em>. We also edited the definition of one of our predefined widgets: the <em>Blockquote widget</em>. As you can see, we set its <em>Category</em> to <em>Quotes</em>, added a <em>Description</em>, and used the path to an uploaded image in the Media Library as the <em>Thumbnail</em>, naming it <em>quote-hover.webp</em>.</p><p><img alt="Blockquote widget definition" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251219/blockquote-widget-definition.png"></p><p>And now, if we create a new <em>Page</em> and go to add a new widget to its <em>Flow Part</em>, the <em>Select Widget</em> modal opens, where you can filter by the <em>Quotes</em> category, and there is our <em>Blockquote</em> widget with the description and the thumbnail we set up previously.</p><p><img alt="Adding the Blockquote widget" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251219/adding-the-blockquote-widget.png"></p><p>Now let's see the Block Content Type Picker for the Bag Part! For that, we created a new content type called <em>Landing Page,</em> and we attached the <em>Title Part</em> and the <em>Bag Part</em> to it. If we edit the definition of the <em>Bag Part</em> and set the editor type to <em>Blocks</em>, we can set a custom text for the <em>Add</em> button and a custom title for the content type picker modal.</p><p><img alt="Bag Part Blocks editor settings" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251219/bag-part-blocks-editor-settings.png"></p><p>After, we navigated to <em>Content -&gt; Content Items</em> and created a new <em>Landing Page</em> content item. As you can see in the screen below, the text on the button under the Bag section reads <em>"Add Elements,"</em> and the title of the modal is <em>"Select Element</em>."</p><p><img alt="Add element to Bag Part" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251219/add-element-to-bag-part.png?width=1024"></p><p>Here you can see that we configured our content types with a category and a thumbnail using the admin UI, but you can do the same programmatically using migrations. You can also use migrations to enable the blocks editor for a Flow or a Bag Part. Furthermore, the default values for category and thumbnail can be configured in <em>appsettings.json</em> using <em>ContentTypesOptions</em>:</p><p>{<br>&nbsp; "OrchardCore": {<br>&nbsp; &nbsp; "OrchardCore_ContentTypes": {<br>&nbsp; &nbsp; &nbsp; "DefaultThumbnailPath": "~/OrchardCore.ContentTypes/placeholder.png",<br>&nbsp; &nbsp; &nbsp; "DefaultCategory": "Content"<br>&nbsp; &nbsp; }<br>&nbsp; }<br>}</p><p>And that's still not all of it! If you would like to see a demo of the recent changes, <a href="https://www.youtube.com/watch?v=9QUX9nyKji4" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/9QUX9nyKji4" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Christmas in Lombiq</h3><p>Sometimes we do stuff. Together. Not (just) in front of computer screens. These are some usual events in Lombiq that are all announced and arranged in advance. At the end of every year, we have an event called RnDay: a few-hour-long event where we share what we have recently worked on and what we plan to do. For example, if we recently finished a project, then the project's team members demo what they've done. We had our RnDay this year at <a href="https://kubik.hu/en/home/" target="_blank">Kubik</a>, a coworking and event space where we held it. And at the end of the day, we visited a nearby restaurant to have dinner together. RnDay is a small tradition that reminds us how much progress can happen in a year.</p><p>Thank you for reading our posts and strengthening the Orchard community with us! We hope to give you occasional updates and demos on what's happening around Orchard and Orchard Core by reading our posts and, of course, the <em>This Week in Orchard</em> newsletter. We wish everyone a Merry Christmas, along with some photos from our latest event!</p><p><img alt="Lombiq RnDay" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251219/lombiq-rnday-2025.png"></p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 432 subscribers! We have started this newsletter to keep the community around Orchard informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=0hXQtqMN1vo" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:26:13 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/block-content-type-picker-for-flow-part-and-bag-part-christmas-in-lombiq-this-week-in-orchard-19-12-2025</guid>
    </item>
    <item>
      <title>Add Delete and Unpublish buttons to the content editor, Blocks editor for the Bag Part improvements - This week in Orchard (12/12/2025)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/add-delete-and-unpublish-buttons-to-the-content-editor-blocks-editor-for-the-bag-part-improvements-this-week-in-orchard-12-12-2025</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Fix pluralization for pagers with 0 or 1 item</h3><p><a href="https://github.com/agriffard" target="_self">Antoine Griffard</a> changed the first parameter of many <em>@T.Plural()</em> methods. Ex: <em>1 item</em> has to be changed to <em>{0} item</em> because, in languages like French, if there are 0 items, it will display the localization of <em>1 item</em> instead of replacing the count with 0 or 1. Some of these are inside an <em>if</em> condition like this:</p><p><em>@if (Model.Models.Count &gt; 0)</em></p><p>So, the 0 case won't occur, but others, like <em>Menus</em>, <em>Content items</em>, and <em>Audit Trails</em>, aren't inside this kind of <em>.Count &gt; 0</em> condition.</p><p>Unfortunately, the correct translations will only be effective when the strings are updated and translated in Crowdin, then published in <em>OrchardCore.Translations</em>.</p><p><img alt="Fix pluralization for pagers with 0 or 1 item" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251212/fix-pluralization-for-pagers-with-0-or-1-item.png"></p><h3>Add Delete and Unpublish buttons to the content editor</h3><p>This is about improving the built-in editor's base functionality by adding additional action buttons. Now we have an <em>Unpublish</em> and <em>Delete</em> action button (where applicable) to the content item editor (for existing items, i.e., not when creating one), similarly to what we have in Orchard 1.</p><p>If you set up your site using the <em>Blog</em> recipe, you will get one predefined <em>Blog Post</em> content item. If you edit that blog post and scroll down to the bottom of the editor, you will see the new buttons there. And you can see the yellow <em>Unpublish</em> button here too because this content item is published.</p><p><img alt="Add Delete and Unpublish buttons to the content editor" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251212/add-delete-and-unpublish-buttons-to-the-content-editor.png"></p><h3>Demos</h3><h4>Blocks editor for the Bag Part improvements</h4><p>In the <a href="https://orcharddojo.net/blog/prioritize-format-over-quality-in-resizeurlfilter-blocks-editor-for-the-bag-part-this-week-in-orchard-05-12-2025" target="_self">previous part of this demo</a>, you could see that every content type that could be added as a block had the Block Part attached. And for that part, you can set the content type's category and its thumbnail. Now, these settings have been moved to the content type definition of the content type settings, as we have for the <em>Stereotype</em>.</p><p>So, if we navigate to <em>Design -&gt; Content Definition -&gt; Content Types</em> and edit any of our content types, you will see the <em>Category</em> and <em>Thumbnail</em> text boxes under the <em>Stereotype</em> one, where you can set the category and the thumbnail of the content type. In this example, we set the category of the <em>Blockquote</em> content type to <em>Demo</em>.</p><p><img alt="Block Part settings" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251212/blocks-editor-improvements.png"></p><p>Now, if we create a new content item of a content type that has a <em>Bag Part</em> attached (or edit an existing one) and click the <em>Add Item</em> button, we will see our <em>Blockquote</em> content type and the <em>Demo</em> category appear in the list.</p><p><img alt="Block Part settings" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251212/listing-the-blockquoute-content-type.png"></p><p>And as always, if you are interested in the current state of the Blocks editor, <a href="https://www.youtube.com/watch?v=Xq5F0XB-kn4" target="_self">head to YouTube for a recording</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/Xq5F0XB-kn4" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>New websites using Orchard Core</h3><p><a href="https://showorchard.com/" target="_self">Show Orchard</a> is an Orchard Core (and Orchard 1) showcase, displaying only the best Orchard Core-powered sites from around the web. And we have added several new sites recently to Show Orchard, let's see some of these!</p><ul><li>The mission of <a href="https://showorchard.com/gallery/orchard-core/daimler-truck" target="_self">Daimler Truck</a> is to steer worldwide logistics of spare parts and provide customer services for important customers of Daimler Truck.</li><li><a href="https://showorchard.com/gallery/orchard-core/box-now" target="_self">BOX NOW</a> is a hybrid logistics and tech company that offers smart parcel delivery solutions to all consumers. They envision to become the most preferred parcel delivery solution and the leader in last-mile industry.</li><li><a href="https://showorchard.com/gallery/orchard-core/bel-fuse-inc" target="_self">Bel Fuse Inc.</a> specializes in the design, manufacturing, and marketing of products that empower electronic systems. With over 75 years in the industry, Bel has established itself as a leader in custom solutions.</li><li>The vision of <a href="https://showorchard.com/gallery/orchard-core/u-s-air-force-academy-association-foundation" target="_self">U.S. Air Force Academy Association &amp; Foundation</a> is to be an Association &amp; Foundation of influence and impact, supporting the Academy's mission of developing leaders for the nation and providing a lifetime of service to the Long Blue Line.</li><li><a href="https://showorchard.com/gallery/business/the-chinese-room" target="_self">The Chinese Room</a> is an award-winning game development studio based in Brighton, UK. Since 2012, the studio has built a reputation for innovative first-person gaming.</li><li>With an uncompromising focus on delivering investment and wealth management solutions, <a href="https://showorchard.com/gallery/nonprofit/manning-napier" target="_self">Manning &amp; Napier</a> provides evolving, modern strategies that will enable people and organizations to achieve their financial goals.</li></ul><p><img alt="New sites on Show Orchard" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251212/new-sites-on-show-orchard.png"></p><p>If you are interested in more websites using Orchard and Orchard Core, don't forget to visit <a href="https://showorchard.com/" target="_self">Show Orchard</a>. Oh, and in case you haven't read that post yet, Show Orchard is now running on Orchard Core! Here's the <a href="https://dotnest.com/blog/show-orchard-case-study-migrating-an-orchard-1-dotnest-site-to-orchard-core" target="_self">case study</a> about how we migrated it from Orchard 1!</p><p>If you're considering migrating your Orchard 1 website to DotNest Core, this is an excellent time. Should you have any questions or encounter challenges, don't hesitate to reach out to us. We're always ready to bring our expertise to your unique project needs. <a href="https://dotnest.com/contact-us" target="_self">Get in touch with us today</a>, and let's start making your Orchard Core website even better!</p><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 433 subscribers! We have started this newsletter to keep the community around Orchard informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=vxH_IdyiQuk" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:26:22 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/add-delete-and-unpublish-buttons-to-the-content-editor-blocks-editor-for-the-bag-part-improvements-this-week-in-orchard-12-12-2025</guid>
    </item>
    <item>
      <title>Prioritize format over quality in ResizeUrlFilter, Blocks editor for the Bag Part - This week in Orchard (05/12/2025)</title>
      <link>https://orcharddojo-net-staging.lombiq.com/blog/prioritize-format-over-quality-in-resizeurlfilter-blocks-editor-for-the-bag-part-this-week-in-orchard-05-12-2025</link>
      <description><![CDATA[<h2>Orchard Core updates</h2><h3>Add an option for inherited text alignment in the Flow Part</h3><p>When nesting multiple widgets, you need to align each one by hand if you want to deviate from the default (justify). If the container widget is set to <em>text-align:left,</em> the inner widgets should follow that unless otherwise stated. To solve this, <a href="https://github.com/redzepiredzep" target="_self">Redzep Redžepi</a> added a 5th alignment option (inherit) that can be selected as the new default for widgets. Widgets with that align setting should inherit the <em>text-align</em> value from their parent widget (or their parents' parents in case of multiple-level nesting).</p><p>Now check this out quickly! If you set up your site using the <em>Blog</em> recipe, you will get a <em>Page</em> content type by default, which has the <em>Flow Part</em> attached. Let's create a new Page! As you can see, we added a <em>Container</em> widget, and inside it, a <em>Blockquote</em> widget. When setting up our <em>Blockquote</em> widget, we now have a new alignment option that inherits the parent's alignment in flow widgets. So, in this case, if the <em>Container</em> is centered, the alignment of our <em>Blockquote</em> will be centered as well.</p><p><img alt="Add an inherited text alignment" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251205/add-an-inherited-text-align.png"></p><p>There is also an option to set the default alignment in the <em>Flow Part settings</em>. It means if you navigate to <em>Design -&gt; Content Definition -&gt; Content Types -&gt; Page</em> and hit <em>Edit</em> near the <em>Flow Part</em>, you will see a drop-down with the label <em>What default alignment should be used?</em>, where you can select the default alignment for the widgets inside this <em>Flow Part</em>.</p><p><img alt="Flow Part default alignment" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251205/flow-part-default-alignment.png"></p><h3>Prioritize format over quality in the ResizeUrlFilter</h3><p>When you process media files, like formatting them in a way (change quality, size, background color, etc.), you can do it by using a query string. The issue is that these parameters are defined in the query string, and you can't apply all these commands in any order because the order matter. And apparently, formatting before changing the quality or changing the quality before formatting matters what you get in the end. This change makes the order deterministic: whatever you set in the query string, it will always run in the same order.</p><p>This introduces a new <em>MediaCommands</em> class to centralize and standardize the handling of media command parameters (such as <em>width</em>, <em>height</em>, <em>format</em>, etc.) across the media module. The change replaces previous ad-hoc dictionary usage for query string parameters with this new abstraction, resulting in more maintainable, less error-prone code. Several filters, services, and shortcode providers have been updated to use <em>MediaCommands</em>.</p><p><img alt="Prioritize format over quality in the ResizeUrlFilter" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251205/prioritize-format-over-quality-in-resizeurlfilter.png?width=1024"></p><h3>Demos</h3><h4>Blocks editor for the Bag Part</h4><p>The goal of this change is to make it easier for content editors to add widgets to a page in the <em>Bag Part</em>, which can be very difficult in some cases, by using the standard picker, which is just a simple drop-down list. Which is fine if you have a few widgets, but with many, it's not easy to select which one you want to add.</p><p>Here, <a href="https://github.com/buzznick" target="_self">Nick Jackson</a> introduced the definition of blocks because blocks can describe more sections of a page. This approach gives content editors a better way to see which blocks they are adding to a page. It means a visual picker, which is a new editor for the <em>Bag Part</em> called <em>Blocks</em>. What it does is replace the drop-down with a button labeled <em>Add Block</em>. If you click that button, a modal opens showing all available blocks in the system, along with a visual of what they would look like when added to the page.</p><p><img alt="Adding Blocks to a page" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251205/add-blocks-to-a-page.png"></p><p>Every content type that could be added as a block has the <em>Block Part</em> attached. Here you can set the block's category and the preview image URL.</p><p><img alt="Block Part settings" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251205/the-block-part-settings.png"></p><p>The Bag Part itself has an editor type of <em>Blocks</em>, and the <em>Stereotype</em> of the content types that this bag can contain is set to <em>Block</em>.</p><p><img alt="Bag Part settings" src="/media/BlogPost/this-week-in-orchard-posts/2025/20251205/bag-part-settings.png"></p><p>And that's not all of it! If you want to see more about this upcoming feature, <a href="https://www.youtube.com/watch?v=gHN4j25mP00" target="_self">head to YouTube for a demo</a>!</p><p class="embed-container"><iframe width="840" height="473" src="https://www.youtube-nocookie.com/embed/gHN4j25mP00" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" spellcheck="false"></iframe></p><h2>News from the community</h2><h3>Orchard Dojo Newsletter</h3><p>Lombiq's Orchard Dojo Newsletter has 433 subscribers! We have started this newsletter to keep the community around Orchard informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including <em>'This Week in Orchard'</em>, of course.</p><p>Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to <a href="https://orcharddojo.us12.list-manage.com/subscribe?u=32f819a768237590e479c9d0a&amp;id=039db8f13f">subscribe here</a>!</p><h5>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 <a href="https://www.youtube.com/watch?v=vxH_IdyiQuk" target="_self">this Orchard meeting</a>!</h5>]]></description>
      <pubDate>Thu, 26 Mar 2026 16:26:30 GMT</pubDate>
      <guid isPermaLink="true">https://orcharddojo-net-staging.lombiq.com/blog/prioritize-format-over-quality-in-resizeurlfilter-blocks-editor-for-the-bag-part-this-week-in-orchard-05-12-2025</guid>
    </item>
  </channel>
</rss>