Documenting SDL Experience Manager and Smart Target Specifications

The idea of "regions" are important to:
  • Experience Manager (XPM), SDL Tridion's in-context editing interface, where XPM regions allow content placement
  • Smart Target, the connection between SDL Tridion and Fredhopper, where ST regions show certain content based on things like search terms or visitor or session-based triggers (and show fallback content when nothing triggers)
  • Content Management System (CMS) Functional Designs for (SDL Tridion), where "regions" identify where content types are allowed and in what quantities
Although technical users or developers will implement these pieces, XPM and ST requirements are business-driven. Here as some example formats I've been using on recent projects. Although I hint at some of the process, this isn't a comprehensive guide as there is more that you'll want to consider in a SmartTarget or Experience Manager setup!

As an overview, consider the following details in your next Functional Design:

You Should Share More

As of now, I have 47 blog posts on this blog, 3 posts on TridionDeveloper, 3 videos, 1772 points on Tridion Stack Exchange from 27 questions and 44 answers for 2014.

When I first started sharing about Tridion, it was on a private forum with no blog posts. I doubted I had anything worth sharing.

After helping customers these past three years, seeing what others struggle with, and re-learning much of what I thought I knew, I realize a few things:
  1. I have more to share, more to contribute, and maybe more chances to inspire others to share than my official role or title.
  2. The more I explain, the easier it is to explain. Practice makes permanent.
  3. No one will read it all, I'm not that special, and "few people that need my posts actually read them. But the ones that need them when they find them appreciate it."
But enough about me and my blah blah blogging.

You should share.
You are or can be a thought leader.
If you answer the same questions and keep getting the same questions, it's a sign. It means your answer isn't out there. Give it away. Or a small taste of it.

At least save yourself time and write it down... so you can reference yourself when you're next asked. Wait. If you answered it already, copy, paste, and revise it instead. If not answers, then share code, ask questions, make a podcast, or record a demo.

Educate. Share. Leave a legacy.

Don't wait for perfection. Share so small, you can't get it wrong.
Or aim so big that you can't possibly achieve your goal, but you'll make something epic anyway.

Recycle. Re-use. Good ideas need to be expressed, vetted, and revised. Bad ideas need to be expressed, vetted, and revised. Bad ideas transform into good ideas by being expressed, vetted, and revised.

Share what didn't work. Share the mistakes. The community doesn't want perfection. Parts of it want to know you and what you've done. Parts want to know what works and doesn't. Much of it just wants to get its job done.

Choice words at the right time make a difference. Encourage someone. Mentor someone. Mentor everyone or be a student of the World.

I'll say it again, as a past/current/future thought leader in your industry, you should share (more).

Edit: why do I care if you share? Because others shared when I needed help and sharing shaped my own career. Especially with my corner of the Web--Content Management Systems--I find knowing and engaging the Web is important to being a "Web" professional.

SDL Tridion XSLT Variables for Linked (Multimedia) Component

While Cleaning My Desktop... Tidbit #1

I share a lot, but surprisingly, I still have too many tidbits and side projects that I'd like to get out to the community. Here's another long-overview due (and marginally relavant) post on XSLT. Dominic Cronin might call these types of blog posts "notes to self" and I've posted about this kind of Secondary Memory.

So here's some starter XSLT variables I've used when transforming source Tridion Component XML and referencing a linked Component. With modular templating you'd normally use something like the Get Extension (DGX) to be able to reference related Components. Otherwise you would add these Components to the package.

But with the older style XSLT templates, or anytime you had access to the content model while using XSLT, we used the document() function against the other component's namespace. This is one of the places where you'd be glad you always gave a Schema a good namespace.

XSLT referencing another Component

<xsl:for-each select="//namespace:link_to_multimediacomponent">
<xsl:variable name="COMP" select="document(@xlink:href)/tcm:Component"/>
<xsl:variable name="DATA" select="$COMP/tcm:Data"/>
<xsl:variable name="CONTENT" select="$DATA/tcm:Content"/>
<xsl:variable name="META" select="$DATA/tcm:Metadata"/>

You could also use the same approach when referencing the Component that's being rendered by the XSLT template. You can see an example in my "Inspect Component Details" post:

<xsl:variable name="Content" select="/tcm:Component/tcm:Data/tcm:Content" />

You could then reference Xpaths starting from $Content.

<xsl:apply-templates select="$Content/*" />

With a few variables, you've made selecting something as easy as remembering its path based on the source XML. But then this isn't Tridion per se, but just XSLT's variables.

Thanks for letting me reminisce. XSLT + Tridion brings me back to the "old days" on the forum, where I feared the likes of power forum users like +Dominic Cronin or +Jeremy Grand-Scrutton. Maybe Dom will forgive me for referencing W3School. :-P

Min, Max, and Everything in between

You can better understand a content model using two numbers for quantity: minimum and maximum. Data modeling might refer to the cardinal relationships between data tables, but in terms of an enterprise CMS we're mostly interested in how many elements can exist (this content type or text in this location, on this page, etc):

Let's look at:
  • Min
  • Max
I have these in the example "mobile-first" page type breakdown from my last post. But it could also apply to any managed elements such as fields, images, regions, selectable options, or websites (think Tridion BluePrinting).

Modeling Split-Style Labels and Headings

I'm working on a CMS design with text labels that look like:





Pretty simple, right? How would you model this in Tridion?

Does Experience Manager work with Responsive Web Design?

This question was posed to my team recently: "Do you get a responsive view scaled to your screen in [SDL] Experience Manager?"

My response had three points:

  1. This has more to do with the HTML and styles than Experience Manager (XPM).
  2. XPM only adds borders on the wrapping container element (tag) for the Component Presentation and fields.
  3. As the borders resize and move, the XPM borders should move.
Of course "should" wasn't enough. So let me further qualify the answer to "does XPM work with Responsive Web Design?" with "yes, to the extent that your mark-up keeps the borders and the XPM field comments intact."

Luckily I had an environment to "prove" my point.

My colleagues had already set up this environment, a relative to Electridion Training (not to be confused with the Reference Implementation), based on a Bootstrap responsive template.