Штатными средствами "обрезки" не получается то, что нужно, да и форматирование при этом удаляется. Хотелось бы, чтобы оно сохранялось.
Уважаемые, специалисты, кто готов взяться за реализацию данного хака? Сумму можем обговорить посредством ЛС
маленькое неудобство
Усё верно. На странице списка постов. У меня что то мозг никак не может понять, как же это реализовать...
Нашел такое решение, может подойдет.
Делал так, берем дефолтный шаблон. \templates\default\content\default_list.tpl.php
добавляем в самый низ
<script src="readmore.js"></script> <script> $('.ft_html').readmore({ maxHeight: 100, moreLink: '<a href="#">Подробнее</a>', lessLink: '<a href="#">Скрыть</a>' }); </script>
Файлик readmore.min.js кидаем templates\default\js
соответственно в файле main.tpl.php в заголовке подключаем этот скрипт
<?php $this->addMainJS("templates/{$this->name}/js/readmore.min.js"); ?>
хотя че не знаю, в файл вывода записи, прописать, если пост выше например 500 пикселей, то пост сворачивается… пойду пилитьа дальше не знаю
но знаний не хватаетОсталось прикррутить
Надо сделать так, что бы у каждой записи был уникальный ИД, а то работает только для первой записи…
<script> $(document).ready(function(){ var max_height = 80; var text_more = 'Читать далее'; var text_hide = 'Скрыть'; var div_shadow = '<div class="shadow" style="background: linear-gradient(rgba(255,255,255,0),#fff); height: 20px; margin: -20px 0 0 0; position: relative;"></div>'; $('.content_list').find('.field.ft_html.f_teaser').append('<a href="#" class="read_more">' + text_more + '</a>').children('.read_more').hide(); $('.content_list').find('.field.ft_html.f_teaser .value').height(function(){ var this_height; if ($(this).height() > max_height){ $(this).css({overflow:'hidden', valign:'top'}); $(this).after(div_shadow); this_height = max_height; } else { this_height = $(this).height(); } return this_height; }); $('.read_more').on('click', function(event){ event.preventDefault(); if ($(this).html() === text_more){ $(this).html(text_hide); } else { $(this).html(text_more); $(this).before(div_shadow); } }); }); </script>