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

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

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

Теперь в редакторе контента у нас появится кнопочка-разделитель. http://joxi.ru/48ADVIwyTJDIAsedz_o

А далее уже дело техники. Остается только в шаблоне разбить контент методом 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> и при разбивке получится не закрытый параграф.
3 комментария
C
Codenator 01 сентября 2014г в 16:04 #
Пригодится а то всё для принтеро только юзал )))
C
Codenator 01 сентября 2014г в 16:05 #
в pdf генерации тоже помогает. Спасибо! Кстати у вас всего один час разницы ))))
Fi1osof1
Fi1osof 01 сентября 2014г в 16:20 #
Не за что! :)
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.