Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Требуется у свойства "В наличии" и "Нет в наличии" сделать разные цвета.

Автор koroganРаздел Шаблоны TPL

Ответов: 2
Просмотров: 3067
Последний ответ 09 Января 2012, 16:25:59
от korogan
Перенесено: Макрос постраничного вывода system numpages - ошибка

Автор adminРаздел Макросы UMI.CMS

Ответов: 0
Просмотров: 3234
Последний ответ 04 Октября 2011, 14:58:21
от admin
Вывод страницы в меню с отключением вывода в карте сайта

Автор alpotemkinРаздел Макросы UMI.CMS

Ответов: 6
Просмотров: 5668
Последний ответ 03 Ноября 2011, 15:07:29
от alpotemkin
Изменение вывода каталога в мобильной версии отличной от основной

Автор fantom103Раздел Шаблоны TPL

Ответов: 4
Просмотров: 3556
Последний ответ 01 Марта 2016, 22:15:10
от aghigay
Как сделать "Заказ в 1 шаг" на сайте выведенном с UMI

Автор tbm-mРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 3494
Последний ответ 01 Января 2016, 06:47:54
от admin

0 Пользователей и 2 Гостей просматривают эту тему.

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
%data getPropertyGroup(%id%, 'text', 'gal_catalog_preview')%
Вывожу макросом поле с текстом, а как ограничить вывод слов например до 70 или вывод символов?

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Re:Как сделать ограничение вывода слов
« Ответ #1 : 19 Февраля 2013, 20:07:16 »
Хорошо, а если в админке, в шаблоне данных создаем поле текстовое, как его можно ограничить?

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Как сделать ограничение вывода слов
« Ответ #2 : 19 Февраля 2013, 20:44:36 »
Для вывода в клиентской части это макрос system::smartSubstring($string, $max_length = 30)

Но вплоть до версии 2.8.5 он немного косячил из-за неверной работы substr с utf-8. Вы можете по аналогии написать свой макрос.
Имеется:

public function smartSubstring($string, $max_length = 30) {
if(!$max_length) $max_length = 30;

if(strlen($string) > ($max_length - 3)) {
return substr($string, 0, ($max_length - 3)) . "...";
} else {
return $string;
}
}

Я себе сделал
	public static function smartSubstring($name, $count = 70){
$l = strlen($name);
if($l > $count) {
//разбиваем по словам
$array_words = explode(" ", $name);
$l = $name = '';
foreach($array_words as $word){
$name = $name.$word.' ';
$l = strlen($name);
if($l > $count){
$name = $name.'...';
break;
}
}
}
return $name;
}
Она производит разрвыв не где-попало, а по границе слова. Только не копируйте 1в1, это работает в другом движке; для ЮМИ может потребоваться  заменить функцию подсчтета длины строки на многобайтовую.
« Последнее редактирование: 19 Февраля 2013, 20:51:17 от Vladimir »

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Re:Как сделать ограничение вывода слов
« Ответ #3 : 19 Февраля 2013, 23:11:45 »
Ок, где прописать код понятно.
Правильно я понимаю? его потом необходимо вызвать в файле например
/tpl/data/preview.tpl
например
 $FORMS['%custom smartSubstring ($string)%'] = <<<END
            %value%
END;
Правильно?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Как сделать ограничение вывода слов
« Ответ #4 : 20 Февраля 2013, 10:31:32 »
не совсем макросу надо передать значение поля, так что это будет выглядеть примерно так

$FORMS['text'] = <<<END
Полное содержимое текстового поля: %value%<br/>
Частичное содержимое : %custom smartSubstring (%value%,10)%

END;