Проблема с генерацией оглавления

Сделан сниппет в точности, как в статье Автоматическая генерация оглавления страницы.

Вызывается так
{$modx->resource->content | makeContents}
и всё работает, если есть из чего делать оглавление. Если же нет, то content не выводится совсем.

За это должен отвечать этот код.
// Если в тексте нет заголовков от h1 до h5 - выходим
if (!preg_match_all('#<h([1-5])>(.*?)</h[1-5]>#', $input, $headers)) {return;}
// Если заголовков меньше 2х - тоже выходим
if (count($headers[0]) < 2) {return;}
Что не так с return?
Ксения
21 августа 2018, 18:50
modx.pro
979
0

Комментарии: 4

Ксения
21 августа 2018, 19:14
0
Если использовать
[[*content:makeContents]]
вместо
{$modx->resource->content | makeContents}
то всё работает как надо. Вопрос, а в чём разница? И как заставить это работать через fenom?
    Андрей
    21 августа 2018, 20:19
    +1
    В сниппете поправить так:
    if (count($headers[0]) < 2) {return $input;}

    Вызывать так, у вас там опечатки выше:
    {'content' | resource | makeContents} или {$_modx->resource.content | makeContents}
      Ксения
      21 августа 2018, 21:10
      0
      Спасибо! Всё работает.
    Ксения
    04 октября 2018, 15:21
    0
    Выяснилась ещё одна проблема. Если в статье есть одинаковые заголовки, то к каждому из них будет добавлено:
    <a name="Загоголовок 1" class="page-contents-link"></a><a name="Загоголовок 1" class="page-contents-link"></a>
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4