Форум русской поддержки Joomla!® CMS
10.12.2016, 05:12:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Умная обрезка заголовков по словам и символам в mod_articles_latest

 (Прочитано 283 раз)
0 Пользователей и 1 Гость смотрят эту тему.
R31rus
Завсегдатай
*****

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 563


«Нас Reboot, а мы крепчаем»


« : 31.05.2016, 00:03:50 »

Обрезаю текст в заголовках модуля mod_articles_latest, но не очень красиво получается. Данным образом:

Код:
<?php echo JString::substr($item->title, 0, 30).' ...'; ?>

Результат:

Код:
Умная обрезка заголовков по сло...


В Google нашел много решений, но возникают ошибки в реализации... Как можно обрезать $item->title именно по словам и символам, чтоб не урезало наполовину последнее слово и был приемлимый вид? Кто сталкивался просьба напишите.


« Последнее редактирование: 31.05.2016, 19:03:51 от R31rus » Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #1 : 31.05.2016, 00:37:49 »

https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseStringHelper.php#L119
Записан
Missile
Завсегдатай
*****

Репутация: +70/-0
Offline Offline

Пол: Женский
Сообщений: 683


« Ответ #2 : 31.05.2016, 05:06:09 »

По-моему, обрезать по символам более правильно - ведь Вы хотите добиться, чтобы у Вас заголовок не переносился на другую строку, или что-то ещё? Проверьте себя предложением "Одиннадцатиклассница из Петропавловска-Камчатского синтезировала гидразинокарбонилметилбромфенилдигидробенздиазепин".
Записан
draff
Практически профи
*******

Репутация: +161/-5
Offline Offline

Пол: Мужской
Сообщений: 2659


step by step


« Ответ #3 : 31.05.2016, 08:00:43 »

Код:
<?php echo JHtml::_('string.truncate', strip_tags($item->title), 53); ?>
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #4 : 31.05.2016, 11:44:57 »


Смотрите, дождётесь что форум в реестр занесут
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1467


« Ответ #5 : 31.05.2016, 13:10:34 »

Цитировать
Как можно обрезать $item->title именно по словам и символам

Так по словам или символам? Если по символам, то substr, а если по словам, тогда пройдитесь регуляркой по word-баундари:

Код
$string = 'строка utf-8';
$offset = 30;
$string = preg_replace('#(?<=.{' . $offset . '})(\S+).*#u', '$1', $string);
« Последнее редактирование: 31.05.2016, 13:57:49 от Филипп Сорокин » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1467


« Ответ #6 : 31.05.2016, 13:34:18 »

Если надо в меньшую сторону, считаете strlen-ом результат, а затем убираете последнее слово, если строка превышает заданное число символов:
Код
$string = 'utf-8 строка обрезанная из примера выше';
 
if(mb_strlen($string) > 30)
{
   $string = preg_replace('#\s*\S+$#u', '', $string);
}
« Последнее редактирование: 31.05.2016, 13:57:23 от Филипп Сорокин » Записан
R31rus
Завсегдатай
*****

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 563


«Нас Reboot, а мы крепчаем»


« Ответ #7 : 31.05.2016, 18:33:34 »

Код:
<?php echo JHtml::_('string.truncate', strip_tags($item->title), 53); ?>

Это то что нужно! Спасибо
Записан
R31rus
Завсегдатай
*****

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 563


«Нас Reboot, а мы крепчаем»


« Ответ #8 : 31.05.2016, 18:47:24 »

Так по словам или символам?

Сразу по словам и символам Филипп)) Тоесть не превышая указанное кол-во символов и не обрезая последнее слово напополам.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet