XF 1.2 Template Modifications and Comparison

Anyone who has developed add-ons for XenForo 1.1 knows that template hooks are a pain. They're a pain for us too, to say the least. Plenty of people have installed the Template Modification System add-on. We've been planning a TMS-like system for some time, before the XenForo add-on was ever actually released.

XenForo 1.2 will deprecate the template hook system and introduce it's own template modification system to make it easier for add-on developers to change templates. Note that I'm primarily focused on add-on developers here. It is possible to create your own custom template modifications if you're not an add-on developer, but unless you have multiple styles, I'd recommend just making the changes to the templates directly.

Let's look at what a template modification is:

ss-2013-04-12_11-35-58.png


It's simply a "find this" and "replace with that" style replacement. You can do this to any template. If your find matches multiple times in a single template, it will replace each occurrence.

Applying a template modification does not actually modify the template, so it will not show up as customized and it will be automatically reapplied (if possible) when upgrading.

For those of you that want technical details, the modifications are applied before a template is parsed. If the modifications cause a template compilation error, they are automatically disabled.

Here's what the template modification overview looks like:

ss-2013-04-12_11-41-07.png


All of the template modifications will be listed here, grouped by add-on and ordered by template. The checkbox enables/disables the modification. Note that if the modification is part of an add-on (and you're not in debug mode), you will not be able to edit the modification here but you can enable/disable it. More about this when editing a template.

The 3 numbers indicate the number of times the modification matched (green), the number of times the modification failed to match (grey) and the number of times the modification caused an error (red).

Editing a Template
There are a few new bits when editing a template as well.

ss-2013-04-12_11-43-10.png


There are 3 new things here:
  • The "prevent" checkbox. If selected, modifications will be never be applied to this template. This can be used to quickly check a template without modifications or to adjust the modifications manually.
  • The "view template modifications" link. I'll discuss this below.
  • The "view custom changes" link. This will simply display a comparison of the parent version of the template (probably the master version) and the current version so you can identify the differences.
When you select view template modifications, you'll see an overlay like this:
ss-2013-04-12_11-43-25.png

This shows you a comparison of how the template modifications will be applied to this template.
If you choose to manually apply modifications, the template modifications will be "materialized" into the template - they will actually be written into the template and automatic application of modifications will be disabled in this template. You can then manually edit the modifications if you wish. (Obviously if you upgrade an add-on and they've changed their modifications or you install a new add-on that changes this template, you won't be getting those new modifications so this should be used with care.)

Admin and Email Templates
These aren't left out. Add-on developers will have access to very similar systems that allow the admin and email templates to be manipulated in the same way.
We look forward to more dynamic add-ons with XenForo 1.2. :)
 
Last edited by a moderator:

Chris D

XenForo developer
Staff member
Depends on the template.

Like if the last closing tag in the template only occurs once, then you could just do a string replace on that tag.

There's also some regular expressions you can use to achieve it too.
 

Jaxel

Well-known member
Couldn't I just do this then?

Pattern: #$#
Replace: blah blah

Then it only looks for the end, doesn't need any flags, and doesnt even need ${0}?
 

Uniphix

Active member
You know, I am really liking this Add for 1.2 now! I mean, one of my major products has "Display Names" basically giving users the ability to change their name on the site without showing their username etc. Such first and last name etc...

This will make it easier to replace mass <xen:username and {$user.username} depending on what needs renamed, the only thing that wouldn't change would be like the Login functions etc. :).
 

Wildcat Media

Well-known member
Template merging is anyone. The actual template modifications is exposed in debug mode. It was hidden in the final release.

It just seems odd to let us directly modify templates in a template editor, but to do it more cleanly in the template modification system requires debug mode. I have a few modifications I'd like to make and to me it just seems cleaner and easier at upgrade time to do it in the modification system as opposed to doing a direct edit. Then if my modification breaks, I can easily modify it there, rather than muck around through merging templates. ;) I've used it--it's a really nice system!!
 
Top