It seems that if a multirow is extended in the template::query call eg:
template::query get_categories categories multirow "select category_id as id, category_name as name from ec_categories order by sort_key" -eval {
set row(url) "category-browse?category_id=$row(id)"
}
then you can't just append a row with something like:
template::multirow append categories "" "All Products" "all_products_url"
because the extended url column never gets set. Instead you need to:
template::multirow append categories "" "All Products"
set rownum [template::multirow size categories]
template::multirow set categories $rownum "url" "foobar"
This is somewhat annoying, and it means that code could break further down your existing tcl file if you change a column from being db-generated to being tcl-generated.