Предлагаю сделать так:
Писатели - это будет группа категорий, тогда все можно вывести такими вот запросоми (не проверял и не оптимизирванно):
<?php
global $DB;
?>
<ul>
<?php
$query = $DB->query("SELECT cat_id, cat_name FROM exp_categories WHERE group_id = 2");
if ($query->result)
{
foreach ($query->result as $row)
{
?>
<li><?php echo $row['cat_name'];?>
<ul>
<?php
$query_book = $DB->query("SELECT wt.title, wt.url_title
FROM exp_category_posts AS cp
LEFT JOIN exp_weblog_titles AS wt ON wt.entry_id = cp.entry_id
WHERE cp.cat_id = '".$row['cat_id']."'");
if ($query_book->result)
{
foreach ($uery_book->result as $row_book)
{ ?>
<li><a href="{path=books/<?php echo $row_book['url_title'];?>}"><?php echo $row_book['title'];?></a></li>
<?php
}
}?>
</ul>
</li>
<?php
}
}?>
</ul>
Включи обработку php на входе