Daved Artemik, Author at Perficient Blogs https://blogs.perficient.com/author/dartemik/ Expert Digital Insights Thu, 21 Apr 2022 13:11:43 +0000 en-US hourly 1 https://blogs.perficient.com/files/favicon-194x194-1-150x150.png Daved Artemik, Author at Perficient Blogs https://blogs.perficient.com/author/dartemik/ 32 32 30508587 ContentReference Rendering in Optimizely With TemplateTags https://blogs.perficient.com/2021/12/13/rendering-contentreference-in-optimizely-with-templatetags/ https://blogs.perficient.com/2021/12/13/rendering-contentreference-in-optimizely-with-templatetags/#respond Mon, 13 Dec 2021 14:00:58 +0000 https://blogs.perficient.com/?p=301933

I recently wrote an article about Rendering ContentReference Properties in Optimizely. That article explored a basic approach to rendering a ContentReference based on the type of the referenced ContentData. One drawback to that approach is the need for a new DisplayTemplate for each type used for a ContentReference. Thankfully, there is another approach that works with a single DisplayTemplate for most content types. By creating a single partial DisplayTemplate, and adding support for a TemplateTag parameter you can handle most of your ContentReference rendering needs.

To check out this approach and view the code, read my post Rendering ContentReference with Shared Views Using a TemplateTag. Leave any feedback and comments below.

]]>
https://blogs.perficient.com/2021/12/13/rendering-contentreference-in-optimizely-with-templatetags/feed/ 0 301933
Rendering ContentReference Properties in Optimizely https://blogs.perficient.com/2021/12/06/rendering-contentreference-properties-in-optimizely/ https://blogs.perficient.com/2021/12/06/rendering-contentreference-properties-in-optimizely/#respond Mon, 06 Dec 2021 14:00:54 +0000 https://blogs.perficient.com/?p=301755

A commonly used property type in Optimizely CMS (Episerver) is the ContentReference. It allows you to select a single ContentData object and store a reference to it. A common usage for the ContentReference property is an Image selector, created by decorating the property with a UIHint.Image attribute. However, the type of the value saved is not the ImageData, it’s a reference to the ImageData. Because of this using PropertyFor for a ContentReference will render a link for a PageData object, and the name for a Blockdata object. It will not render the view associated with the referenced ContentData. Extra steps are necessary to render the view for the underlying type.

There are several ways to handle this scenario in Optimizely CMS. Check out my article Rendering ContentReference Properties for a basic technique to render ContentReferences in Optimizely using the view for the referenced content type, and leave feedback or questions below.

]]>
https://blogs.perficient.com/2021/12/06/rendering-contentreference-properties-in-optimizely/feed/ 0 301755
Episerver Forms – Working with Samples Resources https://blogs.perficient.com/2021/11/29/episerver-forms-working-with-samples-resources/ https://blogs.perficient.com/2021/11/29/episerver-forms-working-with-samples-resources/#respond Mon, 29 Nov 2021 14:00:16 +0000 https://blogs.perficient.com/?p=301484

Episerver Forms Samples is an open source extension pack that adds features to Optimizely Forms. The extension adds extra fields like ReCaptcha, DateTime, and Addressblock. It also adds extra client resources like Forms specific jQuery and CSS packages for the control of those new fields. Adding these extra resources can come at the cost of performance, though. The built-in styles can also conflict with existing or desired project styles, depending on your configuration. Optimizely provides for the disabling of these resources using the Forms.config file in the Form modules folder. However, working with config files can put you at risk for breaking something with an update.

I put together an approach using a custom Resource List that avoids the need to work with the config file. This method of modifying the Episerver Forms Samples resources gives you greater control over what resources are loaded. Where the config file setting only allows you to control the jQuery or CSS, this method gets more granular to the individual files. You can also inject your own resources, and change their locations without worry of an update overwriting the config settings.

Follow my article, How to Exclude or Modify Episerver Forms Samples Javascript and CSS for more information and leave any questions or comments below.

]]>
https://blogs.perficient.com/2021/11/29/episerver-forms-working-with-samples-resources/feed/ 0 301484
Optimizely Forms – Creating Gated Content https://blogs.perficient.com/2021/11/15/optimizely-forms-creating-gated-content/ https://blogs.perficient.com/2021/11/15/optimizely-forms-creating-gated-content/#respond Mon, 15 Nov 2021 14:00:23 +0000 https://blogs.perficient.com/?p=299668

Gated content is a powerful marketing tool for lead generation. In return for providing contact data, a customer receives access to content like an article or whitepaper. Optimizely Forms is a package available for Optimizely CMS that provides rich features for creating forms and collecting data. It does not offer a gated content feature, but it does provide numerous ways to customize forms functionality. By utilizing some of these techniques and coupling them with Optimizely Visitor Groups, you can create this functionality. Additionally, it can still be easy for content authors to manage and build with.

Gated content isn’t difficult to create with Optimizely Forms. It takes several steps, but I walk through them in my article, Creating Gated Content with Optimizely Forms. Read my blog for more information, and leave questions and comments.

]]>
https://blogs.perficient.com/2021/11/15/optimizely-forms-creating-gated-content/feed/ 0 299668
Optimizely CMS – Starting a new project with .Net Core https://blogs.perficient.com/2021/11/08/optimizely-cms-starting-a-new-project-with-net-core/ https://blogs.perficient.com/2021/11/08/optimizely-cms-starting-a-new-project-with-net-core/#respond Mon, 08 Nov 2021 14:00:46 +0000 https://blogs.perficient.com/?p=299655

The Optimizely Digital Experience Platform DXP recently released CMS 12, which is built on the ASP.NET Core platform. Now known as .NET 5, this new development platform introduces many changes to how developers create new projects with Optimizely CMS. To aide this process, Optimizely released a new Creating a starter project guide. While the guide provides a general overview of some of the basics for you to create a new CMS project, my experience found it left some holes. After walking through the process a couple times, and talking with a few developers on their experience, I decided to add more detail to the Optimizely guide. My guide provides a little more explanation to some of the steps. It also adds a few extra steps that I feel help you complete the process.

Check out my article, Starting a new project with Optimizely CMS 12 and .NET Core, and post any comments and questions you have.

]]>
https://blogs.perficient.com/2021/11/08/optimizely-cms-starting-a-new-project-with-net-core/feed/ 0 299655
Optimizely Forms – Hide Extra Info on Redirect https://blogs.perficient.com/2021/11/01/optimizely-forms-hide-extra-info-on-redirect/ https://blogs.perficient.com/2021/11/01/optimizely-forms-hide-extra-info-on-redirect/#respond Mon, 01 Nov 2021 13:00:12 +0000 https://blogs.perficient.com/?p=299193

Optimizely Forms provides an option to redirect to a specified page after a successful submit. The extra info is provided so a page can tailor messaging or behaviours according to the submitted form or data. This is a nice feature that allows a personal experience. It can also allow a developer to use one page type to handle multiple types of submitted forms. After submission, the extra form information is added to the URL as extra parameters. This means the URL gets messy when you redirect. Thankfully, you can use the Optimizely Forms API to omit the extra info if you want a cleaner URL.

Read my post, Hide Optimizely Form Info when Redirecting for more information on my approach. Also, leave a comment below with questions or more information.

]]>
https://blogs.perficient.com/2021/11/01/optimizely-forms-hide-extra-info-on-redirect/feed/ 0 299193
Optimizely CMS – Popup Textarea Editor https://blogs.perficient.com/2021/10/25/optimizely-cms-popup-textarea-editor/ https://blogs.perficient.com/2021/10/25/optimizely-cms-popup-textarea-editor/#respond Mon, 25 Oct 2021 13:00:10 +0000 https://blogs.perficient.com/?p=298554

The inline editor for Optimizely CMS offers a great in-context experience for authors. As you edit, the view continually updates to show the latest value and how it affects the layout. This experience is a strength of Optimizely CMS. Another strength is the ability to customize the way properties display in views, with numerous techniques available. Sometimes, though, customized rendering and more complex layouts can muddle the authoring experience. There are different ways to handle these situations, like the use of the FullRefreshPropertiesMetaData, or EditAttributes helpers. However, these helpers can sometimes get in the way, or they don’t provide the solution needed.

I have encountered several scenarios with string properties where I needed an alternative solution to handle layout changes due to property updates. To handle short string values I have implemented the PreviewableText UIHint, which creates a popup editor in the page context for editing values. I wanted a similar solution for longer strings, but one was not available out of the box. Thankfully, I was able to implement one with a Textarea that provided the solution I needed.

Read more about my solution from my article, Popup TextArea Property Editor. Also, leave a comment below with questions or more information.

]]>
https://blogs.perficient.com/2021/10/25/optimizely-cms-popup-textarea-editor/feed/ 0 298554
Optimizely Forms – Hide FormContainerBlock https://blogs.perficient.com/2021/10/18/optimizely-forms-hide-formcontainerblock/ https://blogs.perficient.com/2021/10/18/optimizely-forms-hide-formcontainerblock/#respond Mon, 18 Oct 2021 13:00:27 +0000 https://blogs.perficient.com/?p=298546

Optimizely Forms includes a FormContainerBlock out of the box. This is the basic block for forms you create, and often this is enough. Sometimes, however, you need more control. You can add new properties or behaviours to Optimizely Forms easily by creating new Form blocks inheriting from the FormContainerBlock. Creating a new block does not prevent editors from being able to use the included one, though. Leaving the base block can also create situations you need to account for, especially if your code expects custom properties or events. If you need to fully control Form behaviours, it may be easier to hide the included block from the author. This is easily achieved with a small amount of code and an Initialization Module.

Learn more by reading my article Hide FormContainerBlock in Optimizely. Also, leave a comment below to share additional helpful information.

]]>
https://blogs.perficient.com/2021/10/18/optimizely-forms-hide-formcontainerblock/feed/ 0 298546
Optimizely Form Events – Implement an Interface Pattern https://blogs.perficient.com/2021/10/11/optimizely-form-events-implement-an-interface-pattern/ https://blogs.perficient.com/2021/10/11/optimizely-form-events-implement-an-interface-pattern/#respond Mon, 11 Oct 2021 13:00:50 +0000 https://blogs.perficient.com/?p=298523

Optimizely CMS provides customization of content using events. A standard collection of events exists for most content types. However, additional events are available to further customize Optimizely Forms. To subscribe to Form events you use an Initialization module to attach an event handler. The logic for the event is typically defined in the same class. For handling a single form or event this might be enough. Sometimes, though, you need more event handlers for different form types. While the event method can handle this, using an Interface pattern can be cleaner.

An Interface pattern allows you to define the event handlers based on an Interface. A custom Interface is defined for each event, and any class that needs to handle an event inherits from the appropriate Interface. This approach allows you to define the event methods on the objects requiring them, instead of in the Initialization module. It results in cleaner code, and makes it easier to identify which objects handle events.

To learn more about implementing this approach, read my article, Optimizely Form Events using an Interface Pattern, and leave a comment below to share additional helpful information.

]]>
https://blogs.perficient.com/2021/10/11/optimizely-form-events-implement-an-interface-pattern/feed/ 0 298523
Visual Studio debugging – Stop closing your browser https://blogs.perficient.com/2021/10/04/optimizely-cms-stop-visual-studio-closing-your-browser/ https://blogs.perficient.com/2021/10/04/optimizely-cms-stop-visual-studio-closing-your-browser/#respond Mon, 04 Oct 2021 17:22:20 +0000 https://blogs.perficient.com/?p=298518

I prefer publishing my Optimizely CMS applications to a local IIS site. It gives me a better idea of a final application published to a DXP instance, and has other benefits. Optimizely CMS runs well directly from Visual Studio, though. Doing so makes it easier to debug startup tasks and initialization modules. However, when running applications with Visual Studio debugging, a new browser window opens on start. When you stop debugging, Visual Studio closes those windows. This behaviour can become bothersome when you want to leave a page or content open. This can be changed with a couple simple steps. Additionally, if you often browse to a specific page when debugging, you can set a preferred URL to open on start.

Check out my article Stop Creating New Windows & Tabs When Debugging, and leave a comment below to share additional helpful information.

]]>
https://blogs.perficient.com/2021/10/04/optimizely-cms-stop-visual-studio-closing-your-browser/feed/ 0 298518
Personalizing Groups of Content in Episerver https://blogs.perficient.com/2021/03/30/personalizing-groups-of-content-in-episerver/ https://blogs.perficient.com/2021/03/30/personalizing-groups-of-content-in-episerver/#respond Tue, 30 Mar 2021 21:00:15 +0000 https://blogs.perficient.com/?p=290451

Episerver’s Personalization feature provides a way for content authors and marketers to provide personalized experiences on their website. Visitors can be assigned to groups through the use of special criteria, and marketers can deliver targeted content to users based on their visitor group. It’s a great feature that invites marketers and authors to deliver unique and fresh experiences to various types of site visitors. It’s also a great way to show site visitors that they are more than a single click and metric. Personalized content shows your customers that you are paying attention to their interests and needs.

Out of the box, Episerver provides this functionality through the ContentArea property type. Personalization Groups within the ContentArea provide a way to designate individual content items to display for targeted Visitor Groups. Authors can even designate a default item to display if a site visitor is not yet qualified into a specific group. Sometimes, however, authors and marketers want to display more than one personalized piece of content for a group. There are a couple techniques to accomplish this, and my latest blog post discusses them.

If you’re looking for a way to tailor the experience for your site visitors beyond a single piece of content, check out my article ContentArea with Groups of Personalized Content.

]]>
https://blogs.perficient.com/2021/03/30/personalizing-groups-of-content-in-episerver/feed/ 0 290451
Key Takeaways from Episerver Ascend 2019 https://blogs.perficient.com/2019/11/11/content-and-growth-are-the-focus-at-episerver-ascend-2019/ https://blogs.perficient.com/2019/11/11/content-and-growth-are-the-focus-at-episerver-ascend-2019/#respond Mon, 11 Nov 2019 22:31:40 +0000 https://blogs.perficientdigital.com/?p=241645

Episerver’s Ascend 2019 conference is over. As usual, Episerver put together an engaging experience for all customers, marketers, developers, and partners. They highlighted the accomplishments of the past year and they laid out the roadmap for next. Intriguing and inspirational keynotes kicked off the breakout sessions for each day, with plenty of networking opportunities peppered throughout.
Overall, it was a good experience to gain a sense of where Episerver is heading in 2020 and beyond. With the conference over, I had a chance to review my notes and piece together my thoughts about Ascend 2019.
To read what I thought about Episerver Ascend 2019 and my takeaways from the conference, check out my article: Content and Growth are the Focus at Episerver Ascend 2019.
Because Episerver has seen an improved position year-over-year in both its ability to execute and its completeness of vision, Gartner recognized Episerver as one of the top four Web Content Management vendors in its recent Magic Quadrant for Web Content Management Q3 2019.
Download the free report to learn more about the results.

]]>
https://blogs.perficient.com/2019/11/11/content-and-growth-are-the-focus-at-episerver-ascend-2019/feed/ 0 269808