Вывод ТВ со своим оформлением

Есть задача: сделать раздел вакансий, в котором у каждой вакансии 3 списка: требования, ответственность, условия. Конечно, менеджеру должно быть удобно и html теги он писать не собирается.
Использовать для этого TinyMCE не хочется - слишком просто в нем сломать верстку. Поэтому я решил использовать ТВ и выводить их в нужном мне виде простым сниппетом.
Сниппет getTVlist
<?php
// Получаем или готовый текст, или достаем указанный ТВ у ресурса
$tv = !empty($input) ? trim($input) : trim($modx->resource->getTVValue($tv));
if (empty($tv)) {return '';}

// Стандартные чанки, можно переопределить
if (empty($tpl)) {$tpl = '@INLINE <li>[[+value]]</li>';}
if (empty($tplOuter)) {$tplOuter = '@INLINE <ul>[[+rows]]</ul>';}

// Подключаем pdoTools для работы с инлайновыми чанками
$pdo = $modx->getService('pdoTools');

// Разбиваем текст по символу переноса строки
$rows = '';
$tmp = array_map('trim', explode("\n", $tv));
foreach ($tmp as $value) {
    if (empty($value)) {continue;}
    $rows .= $pdo->getChunk($tpl, array('value' => $value));
}

// Если есть, что выводить - выводим
if (!empty($rows)) {
    return $pdo->getChunk($tplOuter, array('rows' => $rows));
}
Хочется отметить ровно одну инновацию (возможно, только для меня) - отказ от разделителя в ТВ. Работа ведется по символу переноса строки "\n". Конечно, менеджеру гораздо удобнее нажать enter, чем вспоминать про "||".
Ну и понятно, что если ТВ не заполнен, то чанк-обертка выводиться не будет. Использовать такой сниппет значительно удобнее и быстрее, чем фильтр [[+tv.requirements:notempty=...]].
Вызываем в чанке pdoResources:
[[getTVlist?
    &input=`[[+tv.requirements]]`
    &tplOuter=`@INLINE <h4>Требования</h4><ul>[[+rows]]</ul>`
]]
На странице вакансии:
[[getTVlist?
    &tv=`requirements`
    &tplOuter=`@INLINE <h4>Требования</h4><ul>[[+rows]]</ul>`
]]
Конечно, можно заранее прописать наборы параметров и вызывать вот так:
[[getTVlist@Req]]
Вот такой маленький и удобный сниппет.
БонусПолучение ТВ с оборачиванием в чанк. Это просто замена фильтру notempty, сниппет getTV:
<?php
$tv = !empty($input) ? trim($input) : trim($modx->resource->getTVValue($tv));

if (empty($tplOuter)) {$tplOuter = '<b>Название параметра</b>[[+value]]';}
if (!empty($tv)) {
    $pdo = $modx->getService('pdoTools');
    return $pdo->getChunk($tplOuter, array('value' => $tv));
}