Seeing as I wanted to get formatted information from a model, I couldn't just use a plain implode() or join filter. As suggested by Eugene, I added a custom function to the Volt engine, and a method to my Model to get the correctly-formatted info.
Custom Volt function (in an App\Formatter class I'd already got for other view-related formatting):
static public function joinModels($resultset, $function, $join = ', ')
{
$result = '';
foreach ($resultset as $item) {
$result .= $item->$function() . $join;
}
return substr($result, 0, strlen($join) * -1);
}
Added it to Volt:
$compiler = $volt->getCompiler();
$compiler->addFunction('joinModels', 'App\\Formatter::joinModels');
And in the Model:
public function linkTo()
{
return Phalcon\Tag::linkTo('tags/' . urlencode($this->name), htmlspecialchars($this->name));
}
Then, finally, in my view:
{% set postTags = post.getTags() %}
{% if postTags.count() %}
{{ joinModels(postTags, 'linkTo') }}
{% else %}
None
{% endif %}
Many thanks to those that answered for the help.