Тема: превью статей
В шаблоне preview_list.tpl есть вот такая конструкция {$item->getPreview()} которая выводит текст из краткого описания.
Как-то можно выводить ограниченное количество символов?
Форум ReadyScript Вопросы по работе с системой превью статей
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
В шаблоне preview_list.tpl есть вот такая конструкция {$item->getPreview()} которая выводит текст из краткого описания.
Как-то можно выводить ограниченное количество символов?
Конечно, ведь:
/**
* Возвращает краткий текст заданный пользователем,
* а если он не задан, то сформированный из основного текста
*
* @param integer $length - длинна текста
* @param boolean $html - выводить как HTML?
*/
function getPreview($length = 500, $html = true)
Т.е. {$item->getPreview(Нужная длинна в цифрах)}
{$item->getPreview(50)} - делаю вот так, но превью не обрезается
http://luchski.ru/text-news/ - вот целевая страница
а вот preview_list.tpl
<ul class="articles">
{foreach from=$list item=item}
<li {$item->getDebugAttributes()}>
<a class="link" href="{$item->getUrl()}">
<span class="preview">
{if !empty($item.image)}<img src="{$item.__image->getUrl(170,120,'xy')}" class="image">{/if}
<span class="date">{$item.dateof|date_format:"%d %m %Y":"":"rus"}</span><br>
<span class="title">{$item.title}</span>
<div class="little_block"></div>
{$item->getPreview(50)}
</span>
</a>
</li>
{/foreach}
</ul>
Может быть {$item->getPreview($length = 50)} ?
Может быть {$item->getPreview($length = 50)} ?
Нет всё правильно, {$item->getPreview(50)}.
$length то Вам зачем?
В Вашем случае, будет лучше если укажите признак показа в виде простого текста:
{$item->getPreview(50, false)}
Судя из страницы, что Вы привели, очень похоже, что там у Вас не тот шаблон выводит, эту страницу. Попробуйте проверить тестово выведя абракодабру.
Шаблон именно тот, проверил еще раз.
Добавил абракадабру
все вывелось
но вот так {$item->getPreview(50, false)} текст все равно не сокращается
Стало интересно. Проверил у себя.
В итоге заметил такую штуку. Конструкция {$item->getPreview(50)} работает только в том случае, если у новости НЕ заполнено поле "Краткий текст" на вкладке "Расширенные", а только есть полный текст.
Если же поле "Краткий текст" заполнено, то конструкция не работает.
Это кстати с какой-то стороны и правильно.
Хочешь оригинальный анонс для статьи писать - пиши и укладывайся в количество символов.
Не хочешь - не пиши, оставляй поле пустым и анонс будет формироваться из основного текста новости с обрезкой по количеству символов.
Здесь не никакой ошибки в логике:
1. Если у вас заведен вручную краткий текст, то выводится именно он без обрезки.
2. Если краткий текст не заведен, то выводится обрезанный полный текст.
Если вы хотите всегда обрезать текст, то вам необходимо воспользоваться модификаторами Smarty:
{$item->getPreview()|truncate:"50"}
А можно как-то сделать так, чтобы обрезанный текст, который берется из основного текста статьи добавлялся в превью без форматирования, т.е. без переносов, жирных шрифтов и т.д.? Просто текст.
{$preview=strip_tags($item->getPreview())}
{$preview|truncate:"50"}
У меня в шаблоне lastnews.tpl текст их поля анонс выводился вот так {$item->getPreview()}
Теперь, после обновления, там выводиться обрезанный полный текст.
Как мне вывести снова краткий?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум ReadyScript Вопросы по работе с системой превью статей