Перейти к содержимому


Как уменьшить краткое описание в каталоге до 150 знаков


  • Вы не можете ответить в тему
Сообщений в теме: 9

#1 webms

    Пользователь

  • Пользователи
  • PipPip
  • 24 сообщений
Репутация: 0
Начинающий

Отправлено 21 October 2011 - 02:06 PM

$string = $cart['product_name'];
echo substr(strip_tags($string), 0, strpos(strip_tags($string), ' ', 150)).'...';

пример функции, но не могу понять где менять нужно, т.е. в каком файле
  • 0

#2 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 21 October 2011 - 08:44 PM

не стоит изобретать велосипед, в smarty встроенная функция
{$product_brief|truncate:150}
  • 0
Изображение Изображение Изображение

#3 webms

    Пользователь

  • Пользователи
  • PipPip
  • 24 сообщений
Репутация: 0
Начинающий

Отправлено 22 October 2011 - 03:16 PM

я smarty не знаю, поэтому копал в пхп, тем более хотел чтоб не резал слова
реализовал так:

/function/product_function.php строка 1355:


$textSrt = $row["brief_description"];
$textSrt = substr($textSrt, 0, strrpos(substr($textSrt,0, 250), ' '));

//if ($textSrt >= 250)
//{textSrt.= " ";}
//else
//{textSrt.= "...";};


$row["brief_description"] = $textSrt;


ТОЛЬКО не могу задать условие ему, если меньше 250 знаков оставить пусто. если нет, то тавить многоточие
  • 0

#4 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 22 October 2011 - 03:51 PM

ТОЛЬКО не могу задать условие ему, если меньше 250 знаков оставить пусто. если нет, то тавить многоточие


это потому что твоя переменная $textSrt - содержит строку, а не кол-во символов в строке.

strlen($textSrt) >= 250

{textSrt.= " ";} - а здесь где "$" ??
  • 0

#5 webms

    Пользователь

  • Пользователи
  • PipPip
  • 24 сообщений
Репутация: 0
Начинающий

Отправлено 22 October 2011 - 05:57 PM

жжесть, как я это не заметил (невнимательность меня убьет)
спасибо

пришлось отказаться от резание последнего слово, так как когда знаков меньше 250 он режит его

получалось это:

$textSrt = $row["brief_description"];
$textSrt = substr($textSrt, 0, 250);
$countText = strlen($textSrt);
if ($countText < 250)
{$textSrt.= " ";}
else
{$textSrt.= "...";};


$row["brief_description"] = $textSrt;


  • 0

#6 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 22 October 2011 - 07:13 PM

чтобы не резало нужно определять последний символ пробел.... т.е. если пробел то режем на 250 если нет то 250-1 если нет то 250-1-1 если нет то .... ))) если пробел то режем на последнее значение.
Ну я думаю как-то так
  • 0

#7 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 22 October 2011 - 09:17 PM

не стоит изобретать велосипед, в smarty встроенная функция
{$product_brief|truncate:150}




Блеск то что нада, и слова не обрезает и троеточие добавляет НО, что такое 150 - это же не символы.

Меня эти обрезания натолкнули на мысль обрезать заголовки заголовки в кратком описании товаров, чтобы все товары выводились аккуратно одинаковыми блочками. Обычно я делал это с помощью css, т.е. overflow .......

в смарти если ну указать 150 то поумолчанию должно обрезать на 80 символов, у меня текст исчез вообще - когда указал 195 отобразилось в каждом заголовке разное кол-во символов - так и понял что этот параметр означает.

Пока решил вернуться к overflow ......
  • 0

#8 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 22 October 2011 - 09:51 PM

Блеск то что нада, и слова не обрезает и троеточие добавляет НО, что такое 150 - это же не символы.

Меня эти обрезания натолкнули на мысль обрезать заголовки заголовки в кратком описании товаров, чтобы все товары выводились аккуратно одинаковыми блочками. Обычно я делал это с помощью css, т.е. overflow .......

в смарти если ну указать 150 то поумолчанию должно обрезать на 80 символов, у меня текст исчез вообще - когда указал 195 отобразилось в каждом заголовке разное кол-во символов - так и понял что этот параметр означает.

Пока решил вернуться к overflow ......


я просто не помню правильное написание, давно делал
вот ссылка на офф мануал truncate | Smarty
там подробно расписаны параметры
  • 0
Изображение Изображение Изображение

#9 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 22 October 2011 - 10:00 PM

да был я уже там, в том то и дело что там написано то же что я говорю - якобы символы - но на практике по крайней мере в этом скрипте получаются не символы а х/з что т.к. у меня некоторые заголовки обрезало больше чем на 195 ... т.е. отображается 230, а некоторые меньше чем на 195.....
  • 0

#10 igoryk

    Пользователь

  • Пользователи
  • PipPip
  • 18 сообщений
Репутация: 0
Начинающий

Отправлено 10 January 2012 - 06:03 PM

не стоит изобретать велосипед, в smarty встроенная функция
{$product_brief|truncate:150}


Где находится? не могу найти ...
  • 0