首先我们需要隔离第一个字符:
<$mt:TagName regex_replace="/(?<=.).*$/","" $>
(这是一个零宽度的正向后视断言),但我们希望它为大写字母,并将其保存到一个变量中:
<$mt:TagName regex_replace="/(?<=.).*$/","" upper_case="1" setvar="current_index" $>
现在我们只需要将它与最后一个索引进行比较,看看是否需要输出索引头:
<mt:Tags sort_by="Name">
<$mt:TagName regex_replace="/(?<=.).*$/","" upper_case="1" setvar="current_index" $>
<mt:unless name="last_index">
# this is the first time
<mt:else name="current_index" ne="last_index">
# need to output the new index
</mt:unless>
<mt:var name="current_index" setvar="last_index">
<li><mt:TagName></li>
</mt:Tags>
<mt:if name="last_index">
# close the list
</mt:if>
html标签留给读者。:-)