Как обрезать заголовок?

 
Посетитель
small user social cms
Медаль
Сообщений: 238
Здравствуйте!
Подскажите пожалуйста, как ограничить длину заголовка при выводе в списке? (Версия 2.1.1).
То есть, нужна возможность устанавливать количество символов. Где искать? В админке вроде не нашел, в базе смотреть, или где-то в коде можно?
Всем спасибо за ответ.
Посетитель
small user social cms
Медаль
Сообщений: 238
Собственно вопрос относится не только к заголовкам, но и к любому другому полю, которое выводится в списке.
Смысл в том, что пользователь, при создании объявления, может писать очень длинный заголовок, или заполнять другое текстовое поле, которые затем в списке отражаются очень не красиво, либо не помещаются в определенный блок.
На многих сайтах это решается обрезанием текста свыше определенного количества символов.
При просмотре записи, все отражается в полном объеме.
Надеюсь объяснил более-менее понятно.
Реклама
cms
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
Поскольку в двойке используются php шаблон, то и обрезать придется средствами пхп в файлах шаблона. Например, пусть заголовок хранится в переменной $title, тогда где то в шаблоне должен быть вывод. Как то так:
Код PHP:
  1. <?php echo $title;?>
заменяем на:
Код PHP:
  1. <?php echo mb_substr($title, 0, 100);?>
где, второй параметр(0) обозначает начальную позицию, ноль - с начала строки - наверно, лучше не трогать.
третий параметр(100) - какую длину оставить, 100 символов - тут ставим сколько нужно.
Обрезание пройдет строго по длине, без учета слов. То есть слово может обрезаться по середине.
Если нужно, чтобы обрезалось с учетом слов, можно так
Код PHP:
  1.  
  2. <?php
  3. $title = mb_substr($title, 0, 100);
  4. $position = mb_strrpos($title, ' ');
  5. echo mb_substr($title, 0, $position);
  6. ?>
  7.  
Примерно так.
Хватит париться, живи как нравится!
Посетитель
small user social cms
Медаль
Сообщений: 238
Марат, спасибо. Теперь осталось выяснить какой файл отвечает за вывод контента списком. Не могу найти пока...
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
Alexprofi:
Теперь осталось выяснить какой файл отвечает за вывод контента списком
Скорее всего это файл /templates/default/content/default_list.tpl.php . Строка 66:
Код PHP:
  1. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php echo htmlspecialchars($item[$field['name']]); ?></a>
заменить на:
Код PHP:
  1. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>"><?php
  2. $title = htmlspecialchars($item[$field['name']]);
  3. $title = mb_substr($title, 0, 100);
  4. $position = mb_strrpos($title, ' ');
  5. $position = ( $position ? $position : mb_strlen($title));
  6. echo mb_substr($title, 0, $position);
  7. ?></a>
Если я вас правильно понял. Будет обрезать по словам. Немного подправил код, так будет правильнее.
Редактировалось: 1 раз (Последний: 11 октября 2014 в 17:11)
Хватит париться, живи как нравится!
Посетитель
small user social cms
Медаль
Сообщений: 238
Марат, спасибо, все работает! Пробовал менять код и в другом файле отвечающем за стиль списка - default_list_tiles.tpl.php, работает.
Но как говорится, аппетит приходит во время еды. Пока все делал, появился другой вопрос. Как сделать то же самое, только не с заголовком (title), а с другим полем, которое создается админом и выводится в списке, например adress?
Буду очень благодарен за помощь.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.