New image tags, dashboard support, Textpacks, improved searching, better feeds, new admin-side markup for theme and plugin authors to hook into, not to mention the most significant upgrade to Textile in years. Textpattern CMS 4.3.0 is immediately available for download.


File download

File size 469 kB | Created
File download


File size 415 kB | Created

Tying the knot

This release is likely to be the last major 4.x release before Textpattern 5 and is therefore gearing itself towards this goal. While we have introduced some useful new features, the emphasis has been on maintaining backwards compatibility wherever possible and paving the way for Textpattern 5 in terms of making names, markup and behaviour more consistent across the interface.

Without further ado, let’s see what this marriage of form and function delivers…

Something old

While keeping the existing Textpattern 4.x in-laws happy was important, a few things have had to change. The ones that are most likely to affect your sites are:

  • <txp:css /> accepts a name attribute, attribute n is deprecated
  • <txp:image_index /> attribute c is now category
  • <txp:breadcrumb /> attribute sep is now separator
  • <txp:if_custom_field /> attribute val is now value
  • <txp:if_plugin /> attribute ver is now version

The so-called ‘friendly’ stylesheet rules editor has also been axed, along with the base64-encoding of sheets in the database. All your existing stylesheets will be migrated on upgrade.

The left hand side of the Write panel has been remodelled slightly to split some of the functionality previously under ‘Advanced options’ into more logical groups. The left hand column of the Styles panel has been removed (leaving a wider textarea) and the Forms panel has collapsible groups so you can twist away areas you don’t use. Throughout the interface, all such group toggle states are now remembered; including the tag builders.

A few other cosmetic and functional enhancements were made to the tabs under the Presentation area too so they’re a little more consistent.

Something new

Image tag support has been improved in this release. Images are now on par with the other content types and have their own dedicated tags:

  • <txp:images /> allows you to construct image galleries by category, name, ID or author
  • <txp:image_url /> displays URL information from the current image in the list (or standalone image)
  • <txp:image_date /> displays formatted date information from the current image in the list (or standalone image)
  • <txp:image_info /> displays any other image information such as caption, alt, width, height, etc from the current image in the list (or standalone image)

The existing image and thumbnail tags have been retrofitted to work automatically inside <txp:images />. The following two tags have also been introduced but are exclusively available inside a <txp:images> form or container:

  • <txp:image_author /> displays author information from the current image in the list
  • <txp:if_thumbnail> take action if the image has a thumbnail or not

Links and file downloads also have the ability to output author information with the new <txp:link_author /> and <txp:file_download_author /> tags. All of the _author tags (including <txp:meta_author />) now accept a title attribute which allows you to display the author’s real name or login name.

You can now set a file title if you wish: the <txp:file_download_name /> tag has been modified to accept a title attribute so you can choose which one to display.

Feeds have been beefed up too: you can offer multiple, comma-separated categories or sections in your feed URLs. And to facilitate serving static image content from external domains, a new constant ihu has been introduced.

On the admin side, for people who like to offer users a ‘dashboard’ when they log in, you previously had to hack the privs and/or bury the dashboard on the Extensions panel. Now there is a dedicated tab called ‘Home’ that appears before the Content tab. Dashboard plugins can use this to offer a more seamless workflow for clients.

Lastly—but by no means leastly—the concept of Textpacks has been introduced to allow you to more easily create, install and share language packs for plugins. Instead of hacking code, language packs will facilitate simpler plugin management and community-based i18n efforts. More details on this feature will be available as the new takes shape.

Something borrowed

Public-side searching of articles has been improved. The new match attribute to the <txp:search_input /> tag allows you to choose whether to match any of the words, all of the words or the exact phrase.

Since it was such a useful feature, this was also plagiarised and used in the <txp:if_custom_field> tag. You can now specify a match here so you can see if the custom field contains any or all of the words or it retains its exact match of 4.2.0 and earlier.

The fun doesn’t stop there though. For those of you who eat regular expressions for breakfast, you can also specify your own match pattern to compare the custom field against. And if you are in the habit of packing more than one item in your custom fields (using some separator character or glz_custom_fields, for example) you can use the new separator attribute and ask the tag if the given values appear in any or all of the individual items in your list.

Something blue

Well, OK, something yellow. After years of hard graft, The Carver has taken retirement to go and carve an existence in a remote hillside cottage. In his place is a shiny logo courtesy of Philipp Schilling (aka belipe).

You will also notice that successful logins are faster now (that has nothing to do with the Carver: we wish him well).

We are gathered here today to witness…

… the union of Textpattern with a new version of Textile. This is a significant leap forward for the markup system in Textpattern because, as well as fixing some outstanding bugs and niggles, Textile 2.2.0 has:

  • Improved i18n support
  • More robust processing with regards apostrophes and quotes
  • Automatically-updated note lists (Wikipedia style reference lists)
  • Definition lists
  • Class/ID/Style markers on individual and nested list items
  • Improved table functionality (thead, tfoot, tbody, caption, summary, colgroups, and empty cell support)
  • New glyphs for fractions, degrees and plusminus
  • Simpler self links
  • Comments
  • Performance enhancements

More information is available on Textile and Textpattern if you wish to delve deeper.

Signing the register

To help theme and plugin authors play in the Textpattern sandpit, a reference document will be supplied detailing the admin-side markup changes. It may mean you have to do things slightly differently to the way you have worked previously, but the advantage will be that your code or theme will be more likely to work in Textpattern 5. Or at the very least, require less effort to update it. More details will be released shortly.

In the meantime a few enhancements to the API have been made:

  • Callbacks on the Images tab so enhanced image processing plugins can be constructed
  • Two new functions—@article_format_info()@ and link_format_info() will help to shield you from Textpattern’s internals
  • The get_groups() function retrieves the current list of priv levels. This function is part of a planned priv/user management enhancement in Textpattern 5

The first dance

On the surface Textpattern CMS 4.3.0 is a nimble ballet dancer, but under its skirt are a pair of disco legs capable of rockin’ and rollin’ towards Textpattern 5.

Thank you to all the people in the community who have submitted patches, suggested features, tested, fixed and otherwise sweated over this release. It wouldn’t have been possible without you all.

We hope you enjoy this release and it continues to inspire everyone to create awesome web sites that command the attention of web visitors. After all, Textpattern attracts some of the most talented web professionals in the world today and continues to demonstrate it’s the site designers’ CMS.