Category Archives: Tridion

10 Years of Tridion

Exactly 10 years ago tomorrow I joined an Amsterdam-based company which had just released version 5.1 of their flagship product, a web content management system called Tridion, which was also the company name.

After attending the Discovery Training on my first day, followed by some more trainings, I spent my first months mainly upgrading Tridion databases from customers from the previous version of Tridion (Tridion DialogServer or R4) to the latest version. The tools I was using most in those days were Tridion Database Manager and the infamous Binary Split Tool, a piece of software developed to handle Multimedia Components, which were only introduced with version 5 of Tridion [Can you imagine a life without Multimedia Components, Tridionauts?].

Certificate Tridion Discovery Training

After leaving the company in 2007, then already acquired by SDL, I kept doing Tridion consulting work. This brought me to 5 (!) continents and I was able to experience some of the greatest cities, from New York City to Dubai, and from Cape Town to Tokyo. Even more importantly, I had the privilege to meet and work with great people, around the globe.

Joining Tridion eventually also led to co-founding Trivident, a company of which I was dreaming about when I was still a youngster. At Trivident we are offering a full range of Tridion consultancy and development services, so I still have Tridion on my mind every day.

Ten years. A decade is a long time and it’s been an incredible ride. I honestly don’t have a clue what I would have been doing right now if I didn’t walk into the Tridion office in November 2004. May the next 10 years be even better for all of us!

DD4T on tour – Our first developer training

Last week saw the premiere of Trivident’s new 2-day DD4T developer training.  I traveled to the United Kingdom to deliver it to a group of very knowledgeable ASP.NET MVC developers with little or no Tridion skills.

Once again it was proven that DD4T successfully closes the gap between the world of Tridion and the world of web application developers. By the end of day 2, they were already quite productive. So much so, in fact, that I ran out of material and had to improvise a bit.

The training environment was based on Tridion 2013 SP1 and ASP.NET MVC 5. For me the first time to try that combination, but it ran smoothly right away.

We hope to be delivering this training more often.

SDL Tridion User Group Benelux meeting at Trivident

With over 40 persons attending, the SDL Tridion User Group Benelux meeting at Trivident in Amsterdam was a huge success. Speakers from SDL and Trivident presented on the roadmap for DD4T, SDL Tridion 2015, SDL Media Manager and the recently released Tridion reference implementation.

Available for download is the presentation by Trivident’s Quirijn Slings on the roadmap for the popular DD4T framework, including the features and planning for release 2.0 of DD4T.

DD4T Roadmap (Quirijn Slings, PDF, approx. 400 KB)

Will Price talked about the SDL Tridion Reference Implementation:

Tridion Reference Implementation (Prezi, opens in new window)

Permission to publish

Tridion’s authorization model makes a useful distinction between what you are allowed to do (called ‘rights’) and where you are allowed to do it (‘permissions’). Let’s take a simple example, or rather two: John and Jane.

John works in public relations and handles the press area of the web site. Jane is a member of the web content management team. She is responsible for the rest of the site.

The authorization is set up so that John can create content and pages in his own section. He is also able to publish pages. He has no access to the rest of the site, except for read-only access to the root structure group and building blocks folders, because otherwise he wouldn’t be able to navigate to his own section.

Jane does not have access to the press area at all, but she can create content and pages in the rest of the site.

John and Jane have the same rights, but very different permissions.

This is a fairly typical situation, and it first glance it looks like there is no problem at all. John can do his thing inside the press area, but is unable to mess up the rest of the site because he has at most read-only access there. He couldn’t wreak havoc even if he wanted to, could he?

————————————————————————————————————

Well, yes he could. There is one thing John could do which would make Jane (and the rest of her team) very unhappy: he could unpublish the home page! This is the result of a small flaw in Tridion’s authorization model: publishing in Tridion is a right, while it should have been a permission!

There is no easy way around this, really. Someone with publishing rights, can exercise this right wherever he/she has read permission. We can revoke his publishing rights, of course, but since publishing is John’s job that is not really a solution. We cannot revoke his read permissions on the root structure group either, since that would block his access to his own ‘Press’ area, which lives inside the root structure group.

There are some work-arounds, none of them very good in my mind:

1. Set up workflow for Press content and let an automated activity publish the page.
This works, but it introduces workflow, which is like shooting with a bazooka at a mosquito.

2. Set up a separate publication for Press. This works because rights can be limited to certain publications (not structure groups). But again, it is a high-impact fix for a relatively simple problem.

I am busy working out a more elegant solution, but since this is such a common situation, I’m sure it exists already, somewhere out there. Tips anyone?

 

Improving link resolving in DD4T

When you use DD4T to create a web site, there are two ways to handle links. One is to write out a hyperlink. This is done by calling the LinkFactory and passing it the current component. For this purpose, all you need to know is the component’s URI.

The other option is to write out content from the linked component itself. In this case, it helps if you have the complete linked component at your disposal, URI, title, fields, metadata, etc.

It’s very neat to have the linked component inside your model, without having to retrieve it dynamically. However, there is a price to pay: the XML that you publish becomes much bigger because it incorporates the linked components as well.  This slows down publishing and may slow down your broker database.

Also, it does not always stop at one level of links. Sometimes, you may feel the need to follow a chain of links, for 2, 3 or more levels. To make this manageable, DD4T uses a mechanism called ‘LinkLevels’: by setting a parameter ‘LinkLevels’, you tell the DD4T templates how deep they should go when following links.

This is a rather rough principle though. In reality, there are some fields which you never want to follow (for example if you know up front that you will write them out as hyperlinks anyway). The LinkLevels mechanism however does not distinguish between fields, so you will get these linked components in the broker anyway!

This diagram shows how it works:

link levels - old

 

With link level set to two, a total of 7 components are published. Only 2 are needed completely, and for 3 we only need the URI. So most of the content is rendered to XML, published and stored in the broker for no reason at all.

Configuring links per field

To do anything about this, we need to have a way to configure link resolving behaviour on a per-field basis. At the recent MVP retreat I had the pleasure of talking to Jaime Santos Alcón. Jaime is a real GUI extension guru. He showed me how easy it is to add custom properties to a schema field in Tridion (at least, he made it look easy!).

With this in mind, and a lot of helpful code by Jaime to get met started (see http://jaimesantosalcon.blogspot.nl/2013/10/adding-extended-information-to-schema_28.html), I created a GUI extension of my own: the Trivident DD4T Editor. This editor adds one little checkbox to the schema definition screen:

dd4t editor

 

When the property ‘Follow link when rendering XML (dd4t)’ is checked, this information is stored in the ExtensionXml of the schema field. It is then picked up by the DD4T template code to determine whether or not it should follow a link.

 

Now, the diagram would look a bit different:

link levels

 

As you can see, there are a lot less components in the broker now, which will improve publisher performance and reduce the amount of data in the broker database.

Installing and configuring the new solution

To install, download trivident.dd4t.editor 1.0.1 and follow the instructions in the README.txt.

 

After the installation you should first enable one or more schema fields to ‘Follow link when rendering XML’. Note that you will only see the checkbox for component link and multimeda link fields!

Next, open your existing templates (component + page) in the template builder and set the parameter ‘Use field setting to determine whether or not to follow links’ to ‘yes’ (okay, the name is a bit too long, please suggest a better one in a comment!).

follow link levels per field

You’ll notice that in the example, the LinkLevels are set to 3. Note that the LinkLevels parameter is not obsolete in this new solution. Rather, it is treated as a ‘Max Link Level’. This is necessary because otherwise you may still acumulate too much XML by following links.

The configuration above means: “follow fields which are configured to be followed, but stop when you reach level 3”.

 

Download

Installation instructions for the GUI extension are in the README.txt inside the zip.

To download the latest DD4T templates, go to https://github.com/dd4t/DD4T.TridionTemplates/releases.

Thanks to Jaime Santos Alcón.