In version R5.3 Tridion has introduced Modular/Compound Templating, which offers (more) separation between layout and business logic. It also allows the implementation of Template Building Blocks (TBBs) with C# and/or .NET assemblies.
A Template Building Block used with Modular/Compound Templating is (normally) responsible for one major task. For example: Converting XML to HTML, Publish all Binaries in the package or Activate Tracking (these are all standard Tridion TBBs).
Below I’ve listed the major ‘Pros and Cons’ of working with Tridion .NET templating. Read more
Tridion has two main methods for publishing information to websites:
Both publishing strategies have already been explained in previous posts. However the fundamental differences between both strategies deserves some additional attention.
Publishing chunks of content (dynamic)
In tridion chunks of content are called component presentations. For this publishing strategy the Tridion rendering tree is traversed until step 4. The result of the rendering is a chunk of XHTML/XML/plain text/ etc. which is subsequently published to the broker DB on the presentation server.
On the presentation server the broker DB will be queried by a website based on ASP, ASP .NET or Java which will use the pre rendered content to create a fully rendered page for the visitors.
Publishing whole pages (static)
In this publishing strategy the full Tridion rendering tree is executed. The result of which can be a file of any type, but usually has one of the following extensions: ASP, JSP, HTML, CSS, XML etc. To get the required results you will need to implement both Component Templates and Page Templates.
Which one to choose?
I recommend the dynamic approach. The static model is quickly becoming obsolete in an era of monthly website updates and personalization at the top of everybody’s wish list.
A good illustration of why the static model is useless is an update we recently made to the navigation and layout of a website based on the static model (and NO it was not created by me or one of my colleagues). When you make changes to the templating in the static model in Tridion you will need to re-render all of the pages which make use of these templates. In this particular case there were over 2500 pages in the top publication which was blueprinted over 10 times and each blueprint contained an average of 500 local pages.
I needed to explain to the client on several occasions that the go-live was a ‘process’ which would take the better part of 3 days and three nights. The re-rendering of 30K pages would take approximately 60 hours. During this period the website would slowly go from the old look and feel to the new.
Feel free to share your views on this subject in the comments …
Tridion uses a transactional publishing architecture which enables it to publish content to different websites or channels. To publish your content to a website or channel you specify a publish transaction which includes the publishing target and a date (and some advanced options). The publish transaction will then be placed in the publishing queue where the editors cant track the progress.
The interface enables users to publish their content to one or more predefined publishing targets. A publishing target can be a specific website or any other specific channel. If the user chooses more then one target to publish to, then the system will define a different publish transaction for each of these targets.
During the publish transaction the following happens:
- The content is retrieved from the content manager data store.
- The content is rendered using the appropriate component templates and page templates.
- The rendered content is sent to the Tridion deployer on the presentation server.
- If the first three steps succeed the CMS registers that the content is published to the specified target.
If the transaction fails for any reason this will show up in the publishing queue. A nice new feature in 5.3 is that double clicking on the “failed” tag will show you the actual error message that was written to the error log.
Unfortunately 5.3 also has a “bug” fix. As you might have noticed in my Tridion blueprinting article the content is not published from the publication where it was created. Usually it is published in one of the child publications. In previous versions (5.1) it was possible to publish the content directly from the parent publication. Now we have to add the parent publication to the publication target where the child is supposed to publish to. Not very logical and it adds a transaction to the publishing queue and subsequently slows down the publishing queue.
One common problem in Tridion implementations are “slow” publishing queues. The queue becomes “slow” when the publishing process is unable to handle all the publish transactions. This will frustrate the editors as they will need to wait longer for their content to show up on the website. I have identified the following reasons for that contribute to this problem:
- Rendering full pages can easily take up to 5 seconds. Which I think is an extraordinary long time for executing a few templates (simple programs). This becomes a problem when you have a lot of editors publishing content at the same time. Or when you need to republish your entire site (I have seen one example where it took 2 multi-core publishing servers 3 days).
- Rendering the sitemap through the Tridion API takes up a lot of resources. Consider using the rendering strategy from my article about fast sitemap generation in Tridion.
- Using SiteEdit in combination with automatic publishing. A lot of implementations use the Tridion event system to auto publish content to the staging environment on a component save action. SiteEdit saves a component regardless whether there are changes to the component or not. In doing so it will trigger a publish transaction every time an editor visits a page and has SiteEdit enabled on a staging website.
The solution to speed up the publishing process is by adding dedicated publishing servers to your Tridion setup. The real solution, in my opinion, can be found in speeding up the rendering process. I think Tridion should look into this.