Back when Texpattern was still gestating, many plugins were written to fill holes in its templating options, but its come a long way since then. Every day I’m finding new tags that allow me to keep plugins down to a minimum.
If you haven’t already, you really need to bookmark these pages: Alphabetical Tag Listing and Attributes Cross Reference on the Textpattern wiki documention, called “TextBook”. This an amazing resource, especially if you adopted Textpattern back in the days when it had no documentation. There are lots of gems in here, so I thought I’d dig some out, in case they’re new to you as well.
Conditional Comments
I think the area where the 4.0-4.02 releases really shone were in the wealth of conditional tags. Here’s an example:
<txp:if_excerpt>
<blockquote>
&;ldquo; <txp:excerpt />”
</blockquote>
</txp:if_excerpt>
There are also conditional tags to test for categories, comments, whether comments are open, whether you’re viewing the last article and more. Check out all the tags that start with txp:if
on the list. The section conditionals are very handy, as you can specify either a single section, or a range (make sure that you don’t have any spaces inbetween the section names, just commas). Here’s one from my templates:
<txp:if_section name="journal,destinations,archive">
...content...
</txp:if_section>
I use this one to output the correct submenu in each section. If you want to specify the homepage (or ‘default’ page as its known), leave the attribute blank like so:
<txp:if_section name="">
...content...
</txp:if_section>
To specify the homepage as part of a list, use a comma at the start:
<txp:if_section name=",journal,archives">
...content...
</txp:if_section>
Also Very Useful™, are the custom field conditionals. In my portfolio section, some of the entries are websites and have a URL associated with the information. This is done using a custom field (set up in preferences > advanced preferences) and used in the article form like this:
<txp:if_custom_field name="URL">
<a href="<txp:custom_field name="URL" />" title="Visit <txp:title />"><txp:article_image /></a>
</txp:if_custom_field>
This creates a link to the site around the main portfolio image.
Finally, to complete the usefulness, the devs have added a <txp:else />
conditional, to help keep code down. Here’s an example:
<p>
<txp:if_excerpt>
<txp:excerpt />
<txp:else />
Sorry, I couldn't be bothered to write an excerpt...
</txp:if_excerpt>
</p>
Permalinks & Single Tag mode
Until recently I was using the zem_link plugin to allow custom class names and title attributes on permalinks. It was one of the things that I didn’t like about TXP compared to Moveable Type – it outputted the XHTML for you. However, I found this on the description page for the permalink tag:
By default permlink returns only a very basic link, which doesn’t allow for customizing the link title, or adding a CSS class, etc. Using the tag in its Single Tag capacity opens up a lot more possibilities. For example, to have the permanent link have an HTML title attribute of the article’s title, and also apply a class to it named orange:
Thats what I’ve been wanting! I had no idea that the tag could be used that way.
Offset
Another feature I missed from Moveable Type days was the ability to output a list of articles, offset by a specified number first. This is now part of the article tag attribute options:
<txp:article form="recent" sortby="Posted" sortdir="desc" offset="3" limit="5" />
I use this on my journal homepage, showing the last 3 posts in full, and then the 5 posts thereafter as just links. The list of previous articles can now exclude the last 3, as these are shown in full. For individual article pages however, we need to show all the articles, so of course I use conditional tags :
<txp:if_article_list>
<txp:article form="recent" sortby="Posted" sortdir="desc" offset="3" limit="5" />
<txp:else />
<txp:article form="recent" sortby="Posted" sortdir="desc" limit="5" />
</txp:if_article_list>
Which neatly wraps it all up! One of the reasons I love Textpattern over other options so much, is its templating tags. The xml style makes so much sense, and easy to grasp.