Let's say your normal monthly archives have links that look like this:
/2009/11/
/2009/12/
2010/01/
...
Generating a bunch of links to these is easy:
<mt:archivelist archive_type="Monthly">
<li><mt:archivelink>
</mt:archivelist>​
<li><mt:archivelink>
</mt:archivelist>​
Suppose your 'mobile' archives are published under:
/2009/11/index-mobile.html
/2009/12/index-mobile.html
/2010/01/index-mobile.html
...
How do you link to these? There is no built-in tag to do this quickly and easily. But the regex_replace modifier comes to the rescue:
<mt:archivelist archive_type="Monthly">
<li><mt:archivelink regex_replace="/(^.+\d+\/\d+\/)$/","\1index-mobile.html">
</mt:archivelist>​
<li><mt:archivelink regex_replace="/(^.+\d+\/\d+\/)$/","\1index-mobile.html">
</mt:archivelist>​
In my experience, regex_replace is one of the most powerful modifiers Movable Type has to offer. Some quick tips:
- Don't forget the two slashes inside the first pair of quotes that delineate the regular expression: regex_replace="//",""
- If you capture a part of the regular expression using brackets, you can refer to the matched part in the second expression by using the \1, \2, \3... notation: regex_replace="/(foo)(bar)/","\1-bli-\2"
- You can use the standard regular expression modifiers after the second slash. For example regex_replace="//i","" will match case insensitive, regex_replace="//g","" will do a global replace (i.e. if there are more matches they will all be replaced) and regex_replace="//s","" will treat the string to be matched against as a single line, ignoring line breaks etc.
- In the second part of the expression you can use variables that you defined earlier in the template: <mt:setvar name="foo" value="bla">... <mt:sometag regex_replace="/pattern/","$foo">
Tweet
Leave a comment