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

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

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

 (Прочитано 369 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Good_user
Осваиваюсь на форуме
***

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

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


Ukraine, Kyiv


« : 06.09.2015, 22:25:36 »

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

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

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

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

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, 09:39:32 от Good_user » Записан
error648398
Осваиваюсь на форуме
***

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

Сообщений: 180


« Ответ #1 : 06.09.2015, 22:44:30 »

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

Репутация: +734/-16
Offline Offline

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


http://n*****n.com


« Ответ #2 : 06.09.2015, 22:49:40 »

Как вы решили проблему оформления короткого описания тегами ?
Да и код можно намного сильнее сократить, да и решение вы плохо гуглили.
выкладывайте решение.
Записан
error648398
Осваиваюсь на форуме
***

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

Сообщений: 180


« Ответ #3 : 06.09.2015, 22:54:00 »

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

Репутация: +734/-16
Offline Offline

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


http://n*****n.com


« Ответ #4 : 06.09.2015, 22:56:24 »

Решить проблему с оформлением я не знаю....
что имеется ввиду под оформлением ?
Записан
error648398
Осваиваюсь на форуме
***

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

Сообщений: 180


« Ответ #5 : 06.09.2015, 23:06:52 »

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

Репутация: +734/-16
Offline Offline

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


http://n*****n.com


« Ответ #6 : 06.09.2015, 23:14:05 »

ааа... это да. увы.
Записан
dmitry_stas
Профи
********

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

Сообщений: 7738



« Ответ #7 : 06.09.2015, 23:16:15 »

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

P.S. третья по моему тема про обрезание за этот месяц только...
Записан
nevigen
Moderator
*****

Репутация: +734/-16
Offline Offline

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


http://n*****n.com


« Ответ #8 : 06.09.2015, 23:25:35 »

http://joomlaforum.ru/index.php/topic,262550.0.html Wink
Записан
Good_user
Осваиваюсь на форуме
***

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

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


Ukraine, Kyiv


« Ответ #9 : 07.09.2015, 13:05:19 »

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

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

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

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

Сообщений: 7738



« Ответ #10 : 07.09.2015, 14:00:03 »

та... десятитысячная, стотысячная секунды? я говорил об итого подходе. за универсальность - всегда нужно чем то платить. скоростью например. но в данном конкретном случае - я думаю этой нагрузкой можно пренебречь Azn проведите если хотите замеры, насколько быстрее будет mb_substr чем JString::substr. скажем цикл из 10000 итераций, и засечь время выполнения цикла. не думаю что эта разница будет хоть насколько то ощутима для пользователя.
Записан
Страниц: [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