Question
Some user wanted a “grammatically correct” list of categories; not merely displaying all categories of a particular entry, but separating them with a comma and prepending the last one with “and”:
Example: Filed under: Foo, Bar and Splat.
Answer
Plugin: Nice Weblog Categories
Old Answer
The solution is to use PHP to write the categories to an array, then loop through it and add “and” at the last but one position:
<?php
// pull the categories into an array, and separate by comma
$categories = explode(",","{categories backspace="1"}{category_name},{/categories}");
// loop through & output all the elements of the array
for ($i = 0; $i < count($categories); $i++) { print $categories[$i];
if (count($categories) > 1) { // make sure no "and" gets added if there's only a single category
if ($i == count($categories)-2) { print ' and '; } // if the last-but-one element comes up, add "and"
// otherwise just add a comma and a space, except after the final element
elseif ($i != count($categories)-1) { print ", "; }
} // close the "$categories > 1" clause
} // close "for" loop
?>
More information: See this thread on the forums for reference
Category:Categories Category:Entries
