Asynchronous Events – Fire and Forget

FireRocketIn http://www.tridiondeveloper.com/intro-to-the-event-system I described the overall event system, listing many of the options available, but not describing them in detail. One of these options requires further examination: Asynchronous Events.

Asynchronous Events happen outside of the regular process of the code that is running. They may run now, or they may run later. You can think of Asynchronous Events as “Fire And Forget” rockets. Sometimes that’s exactly what you need, and sometimes that’s exactly the wrong thing. Let’s look at some scenarios for both.

Continue reading

Updating list: Anguilla Code Snippets

anquillaI’ve been keeping a little notepad file on my machine for a while some of common code snippets that help when building SDL Tridion Gui / Alchemy extensions.  I thought it would be great to share them with the community in the hope that they can help someone, and others can contribute.

Continue reading

Use GUI Extension to Solve for Content Re-Ordering

GUI Extension: Components Re-Ordering Dialog

  • SDL Best Practices recommend not localizing pages.
  • We originally used Container Components so that Editors can re-order components without needing page localization.
    • The use of Container Components introduced other issues as explained in this blog about Container Components.
    • The solution outlined below does not rely on containers.
  • SDL can store additional data on each component using Application Data. Application Data is applied to items across the blueprint and don’t require items localization.

Continue reading

Problems with Container Based Content Model

Containers are a common approach when designing CMS content models. They allow Authors and Content Editors to organize content hierarchically. While containers allow contributors to group, reorder, and organize content easily, they also add a lot of dependencies to the content across the system.

Continue reading

Quick Tip: Getting Audience Manager working in an MVC site for Web 8

I recently implemented an Audience Manager integration in a Web 8 DD4T (.NET) project. I was scratching my head for a long time about an error message that didn’t seem to make sense:

Unable to determine the current Publication. Please make sure the Ambient Data Framework is running, or configure a DefaultPublicationId in the cd_audience_manager_conf.xml configuration file

Continue reading

DXA Model Mapping Cheatsheet

I recently started working on a new project using the DXA. One of the site types was a rebuild; using an existing content model rather than creating schemas from scratch. Part of the DXA philosophy is to enable MVC developers to use simple view models which hide the complexity of the underlying domain (CM) model. This article shows some tricks you can use to do help take this approach. Its based on the .NET implementation but the same concepts should apply to the Java version.

Continue reading

Caching In: Revisiting Data Sharing across Templates

A while back I wrote a post on using Context Variables as a templating cache. When I came across some requirements to cache data between templates on a recent project I revisited this concept, but found some limitations with Context Variables which I had not realized before. As such I ended up implementing a different approach to caching

Continue reading

Custom Renderer – Index Keyword Key in SmartTarget

keywords in SmartTargetI found out how to use a new CM-side extension point today; Renderers. I had been struggling for a while with the fact that SmartTarget does not index the Keyword key – which was precisely what I wanted to set up some promotion content selection filters on. It turns out to be quite easy, and indeed gives a generic method for messing with the content that SmartTarget indexes without having to fiddle about on the Delivery side with Java or Kettle.

Continue reading

Intro to the Event System

rear-view-mirrorAn event, in any computer system, is an interruption in the current process. The computer is busy doing what it should be doing, and then something happens to stop it and send it in a different direction. In old systems this was limited to the user clicking a keyboard key or a mouse button. Now, with much more complex systems, it can include state changes, network events, new data, and nearly everything else. Continue reading