Полезная фишка! Обрезание описания товаров на страницах категорий

  • 10 Ответов
  • 508 Просмотров

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

*

Good_user

  • ***
  • 147
  • 4
  • Ukraine, Kyiv
Всем добрый вечер! Как все вы знаете на страницах категорий магазина, если макет вывода товаров настроен в несколько столбцов, высота товаров получается разной и это совсем не смотрится. Красиво и удобно, когда все части находятся на одной линии - заголовок, фото, цена, кратк. описание и характеристики.

С кратким описанием как раз самый большой бич, так как прочие элементы выводить в одну линию не проблема. Делать идентичные и точные по количеству символов описание - это мазохизм, наверное. И тут обрезание по количеству символов просто спасает.

Погуглив решение под ЖШ найти не удалось, поэтому пришлось немного напрячь извилины, но задуманное все таки получилось реализовать. Решил поделится, думаю, это многим должно пригодится.

Собственно, решение:

1. В файле components/com_jshopping/templates/default/list_products/product.php, а лучше делать через переопределение templates/шаблон/html/com_jshopping/list_products/product.php находим:

Код
<?php print $product->short_description?>

2. Меняем на это:

Код
<?php $string = $product->short_description;
echo JString::substr($string,0,165);
$result = iconv("windows-1251","utf-8", $result);
echo $result;
if($result!=$string)echo'...';
?>

Все! Обрезание заканчивается троеточием.

По этому примеру можно обрезать и заголовки, и в модулях товаров этот вариант тоже работает. Буду рад, если это кому-то поможет и сэкономит время :-)

Обновление! error648398, предложил более краткий работающий вариант кода, за что ему благодарность!
Код
<?php print mb_substr( $product->short_description, 0, 165).'...';?>
Обновление №2! Оказывается, что последний вариант кода может не работать, если на хостинге нет mb_substr. Вариант в JString::substr более универсальным.

Код
<?php print JString::substr($product->short_description, 0, 170).'...';?>

dmitry_stas, Вам благодарность за пояснение!
« Последнее редактирование: 08.09.2015, 10:39:32 от Good_user »
Магазин услуг фрилансеров – всё по 500 рублей - можно, как и неплохо заработать, так и найти недорогого исполнителя для любой задачи. В общем супер-сервис!

*

error648398

  • ***
  • 168
  • 21
Как вы решили проблему оформления короткого описания тегами ?
Да и код можно намного сильнее сократить, да и решение вы плохо гуглили.

*

nevigen

  • *****
  • 8832
  • 754
  • http://n*****n.com
Как вы решили проблему оформления короткого описания тегами ?
Да и код можно намного сильнее сократить, да и решение вы плохо гуглили.
выкладывайте решение.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !

*

error648398

  • ***
  • 168
  • 21
выкладывайте решение.
Решить проблему с оформлением я не знаю, код можно сократить до:
<?php print mb_substr( $product->short_description, 0, 165).'...';?>

*

nevigen

  • *****
  • 8832
  • 754
  • http://n*****n.com
Решить проблему с оформлением я не знаю....
что имеется ввиду под оформлением ?
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !

*

error648398

  • ***
  • 168
  • 21
что имеется ввиду под оформлением ?
Ну например человек заходит в описание товара и через редактор TinyMCE, придает оформление короткому описанию (цвет, отступы и тд и тп).
Вот и получается что при выводе и обрезании описания, может вывестись открывающий тег, но обрежет закрывающий, что в большинстве случаев приведет к похеренью верстки.

*

nevigen

  • *****
  • 8832
  • 754
  • http://n*****n.com
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !

*

dmitry_stas

  • ********
  • 9651
  • 929
я уже писал не раз, в том числе и в недавней теме про обрезание, что для этого нужно использовать.

P.S. третья по моему тема про обрезание за этот месяц только...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

nevigen

  • *****
  • 8832
  • 754
  • http://n*****n.com
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !

*

Good_user

  • ***
  • 147
  • 4
  • Ukraine, Kyiv
Ну например человек заходит в описание товара и через редактор TinyMCE, придает оформление короткому описанию (цвет, отступы и тд и тп).
Вот и получается что при выводе и обрезании описания, может вывестись открывающий тег, но обрежет закрывающий, что в большинстве случаев приведет к похеренью верстки.
Я, честно говоря, даже и не задумывался, чтобы размечать краткое описание HTML тегами. Думал, раз там по умолчанию редактор не выводится - значить и не нужно оно. Мне кажется без этого можно обойтись, это некритично. И к тому же HTML теги засчитываются в количестве символов, разное количество тегов = разная высота краткого описания. Это создает дополнительный геморрой. Если нужно на что-то акцентировать внимание, то лучше использовать характеристики. Но это, конечно, не решает описанную Вами проблему.
я уже писал не раз, в том числе и в недавней теме про обрезание, что для этого нужно использовать.
P.S. третья по моему тема про обрезание за этот месяц только...
Извините, я создал эту тему не в целях набить количество сообщений. Действительно думал, что этот момент плохо освещен :-) Просто форум читаю нерегулярно.
http://joomlaforum.ru/index.php/topic,262550.0.html ;)
Благодарю! Не пойму как я мог прошлепать эту тему, она бы сэкономила мне немало времени.

dmitry_stas, Вы в той теме пишете про mb_substr.

ну не то чтобы... mb_substr если работает, то и будет работать. JString проверяет, установлен ли mb_substr, и использует именно его, если он установлен. так что вариант с mb_substr в какой то мере даже лучше, потому что нет лишних проверок. но вы должны быть изначально уверены, что он установлен. а JString будет универсальнее в этом плане. в общих случаях, когда вы не знаете заранее на каком хостинге будет выполнятся ваша программа, лучше использовать JString. в одном конкретном случае - проще mb_substr
Благодарю, очень ценная информация! Вы говорите, что с mb_substr в какой то мере даже лучше, потому что нет лишних проверок. Интересно, а эти лишние проверки насколько негативно они сказываются на показателях сайта? Как я понимаю это создает дополнительную нагрузку на хостинг и влияет на скорость загрузки сайта? Или там какое-то другое влияние? Заранее спасибо!
Магазин услуг фрилансеров – всё по 500 рублей - можно, как и неплохо заработать, так и найти недорогого исполнителя для любой задачи. В общем супер-сервис!

*

dmitry_stas

  • ********
  • 9651
  • 929
та... десятитысячная, стотысячная секунды? я говорил об итого подходе. за универсальность - всегда нужно чем то платить. скоростью например. но в данном конкретном случае - я думаю этой нагрузкой можно пренебречь :) проведите если хотите замеры, насколько быстрее будет mb_substr чем JString::substr. скажем цикл из 10000 итераций, и засечь время выполнения цикла. не думаю что эта разница будет хоть насколько то ощутима для пользователя.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций