Если в ручную якоря создавать, то делаете TV с типом ace (нужно установить пакет ace), в нем уже пишите само содержание (якоря), к примеру так:
<ul>
<li><a href="[[~8]]#chto-takoe-filtry">Что такое фильтры?</a></li>
<li><a href="[[~8]]#vyhodnoj-filtr">Выходной фильтр</a></li>
<li><a href="[[~8]]#modifikatory-vyvoda">Модификаторы вывода</a>
<ul>
<li><a href="[[~8]]#uslovnye-modifikatory-vyvoda">Условные модификаторы вывода</a></li>
<li><a href="[[~8]]#modifikatory-vyvoda-stroki">Модификаторы вывода строки</a></li>
<li><a href="[[~8]]#kehshirovanie">Кэширование</a></li>
<li><a href="[[~8]]#ispolzovanie-modifikatora-vyvoda-so-svojstvami-tega">Использование модификатора вывода со свойствами тега</a></li>
<li><a href="[[~8]]#sozdanie-polzovatelskogo-modifikatora-vyvoda">Создание пользовательского модификатора вывода</a></li>
</ul>
</li>
<li><a href="[[~8]]#cepochka-neskolko-vyhodnyh-filtrov">Цепочка (несколько выходных фильтров)</a></li>
<li><a href="[[~8]]#custom">Примеры пользовательских фильтров вывода</a>
<ul>
<li><a href="[[~8]]#sozdanie-polzovatelskogo-modifikatora-vyvoda">Создание пользовательского модификатора вывода</a></li>
<li><a href="[[~8]]#primery">Примеры</a>
<ul>
<li><a href="[[~8]]#alternateclass">alternateClass</a></li>
<li><a href="[[~8]]#parselinks">parseLinks</a></li>
<li><a href="[[~8]]#parsetags">parseTags</a></li>
<li><a href="[[~8]]#parsetags-1">parseTags</a></li>
<li><a href="[[~8]]#shorten">shorten</a></li>
<li><a href="[[~8]]#substring">substring</a></li>
<li><a href="[[~8]]#numberformat">numberformat</a></li>
<li><a href="[[~8]]#primer">Пример</a></li>
</ul>
</li>
</ul>
</li>
</ul>
Здесь [[~8]] восьмерку меняете на id документа текущего, соответственно к заголовкам вам нужно прописать id, например
<h2 id="chto-takoe-filtry">Что такое фильтры?</h2>
Администрировать гиморойно, зато в плане SEO можно туда любые ключи запихать)
Либо можно написать сниппет который сам все будет делать, вот в качестве примера можете взять:
Автоматическая генерация оглавления страницы.