Разрыв страницы pagebreak

Возникла тут на одном проекте вот такая задачка: чтобы на странице выводился не сразу весь контент (содержимое поля content), а только его часть, и с этим была кнопочка "Подробнее". При этом это будет только на некоторых страницах, а не на всех, и кнопка "Подробнее" не должна вести на отдельную страницу, а просто прям здесь же на странице блок раскрывался.

Сначала я не увидел в этой задачке ничего необычного, но когда приступил к выполнению кое-что нестандартное все-таки заметил, а именно то, что надо разбивать контент на части, ведь надо выводить сначала только часть его, и лишь потом все остальное. Первым делом в голову пришла идея завести дополнительное поле или использовать introtext, но сразу же пришел к выводу, что это не вариант как минимум из-за неудобства. И тут пришла мысль на счет разделителя страницы, ведь должна же быть такая кнопка в TinyCME...

Оказывается действительно есть :) Включить ее просто: идем в настройки MODX-а, выбираем неймспейс tinymce и там в поля tiny.custom_buttons2 и tiny.custom_plugins добавляем pagebreak (конечно кнопку может каждый вставить в удобное ему место, а не обязательно во второй ряд в начало).

Теперь в редакторе контента у нас появится кнопочка-разделитель.

А далее уже дело техники. Остается только в шаблоне разбить контент методом explode() и все. Вот мой код в Smarty-шаблоне:

{$breaked = explode('<p><!-- pagebreak --></p>', $modx->resource->content)}

{if count($breaked) > 1}

     

    {$breaked.0}

    

    <div id="hidden_content" style="margin:20px 0 0;">{$breaked.1}</div>

    

    <div style="overflow:hidden;">

        <a href="javascript:;" 

            onclick="$('#hidden_content').toggle();$(this).hide();" 

            class="goto_good round" style="float: right;">Подробнее</a>

    </div>

    

    <script type="text/javascript">

        $('#hidden_content').hide();

    </script>

    

{else}

    {$modx->resource->content}

{/if}

Обратите внимание, что в explode() я написал именно <p><!-- pagebreak --></p>, а не просто <!-- pagebreak -->. Дело в том, что TinyMCE автоматически строку оборачивает в теги <p></p> и при разбивке получится не закрытый параграф.