Jump to content
Sign in to follow this  
romakatana

[Решено] Помогите модифицировать обрезание описания товара

Recommended Posts

Ханнука уже прошла, а я не успел обрезать описание товара в должном виде.

И так, дорогие друзья, есть стандартный код, который обрезает описание:

utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 265) . '...'

Необходимо делать проверку для добавления символов "..." (сейчас символы добавляются к строке даже если она не была обрезана)

  • +1 1

Share this post


Link to post
Share on other sites

Помощь больше не нужна.

Если вы хотите добавлять "..." только для обрезанного описания:

controller/product/category.php

Найти:

$this->data['products'][] = array(
 'product_id'  => $result['product_id'],

Вставить до найденного кода:

if (strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')))
{
	if (mb_strlen($result['description'],'UTF-8')>120)
		$result['description'] = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 120) . '...';
	else
		$result['description'] = strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'));

}

"120" - количество символов, если количество больше, то обрезаем и добавляем "...", если кол-во меньше "..." не будут добавлены

Найти:

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',

Заменить на:

'description' => $result['description'],

  • +1 1

Share this post


Link to post
Share on other sites

эх! хотел было обрадоваться, да только не хочет работать... не обрезает. Сделано все по инструкции и проверено.

Или он обрезает только свежедобавленные товары?

Share this post


Link to post
Share on other sites

эх! хотел было обрадоваться, да только не хочет работать... не обрезает. Сделано все по инструкции и проверено.

Или он обрезает только свежедобавленные товары?

У меня всё прекрасно работает.

$result['description'] = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 120) . '...';

тут 120 - число, после которого текст обрезает.

opencart 1.5.5.1

Share this post


Link to post
Share on other sites

:| а обрезать можно не по символам, а по строкам? 

 

https://cloud.mail.ru/public/Ff5z/RRgwmqx2e

 

т.к. кол-во символов отличается и иногда режет пятую строку а иногда и четвёртую, смотря какое кол-во символов.

Share this post


Link to post
Share on other sites

можно.

explode()+implode(), preg_match() и прочее волшебство в помощь.

Share this post


Link to post
Share on other sites

 

Помощь больше не нужна.

Если вы хотите добавлять "..." только для обрезанного описания:

controller/product/category.php

Найти:

	$this->data['products'][] = array(
	 'product_id'  => $result['product_id'],
Вставить до найденного кода:
if (strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')))
	{
		if (mb_strlen($result['description'],'UTF-8')>120)
			$result['description'] = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 120) . '...';
		else
			$result['description'] = strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'));

	}
"120" - количество символов, если количество больше, то обрезаем и добавляем "...", если кол-во меньше "..." не будут добавлены

Найти:
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
Заменить на:
'description' => $result['description'],

 

Спасибо, работает!

Edited by sdm87

Share this post


Link to post
Share on other sites

Хотелось бы добавить своих 5 копеек.

В ocStore 2.x , а точнее 2.1.0.2.1 также наблюдается проблема с длинными названиями или длинным описанием товара.

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

Мой уровень знаний в HTML CSS PHP равен практически "нуб" но всё же получилось то что хотел.

Сначала пытался в стилях разобраться, не вышло, начал гуглить и попал сюда.

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

Начал я с модуля "Лидеры продаж" в файле catalog\controller\module\bestseller.php
обрезал длину описания полностью и длину названия до 80 символов и после обрезки ставиться "правильное" (как я где-то прочитал) троеточие.

Находим:

'name'        => $result['name'],
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',

заменил на

'name'        => utf8_substr(strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')), 0, 80) . ' …',
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 1) . ' …',

Результат получился тот что хотел, все прямоугольники стали ровными.

Поэтому сделал те же манипуляции с файлами, где наблюдалась такая же проблема с длинными именами товаров:

\catalog\controller\product\search.php
\catalog\controller\product\category.php
\catalog\controller\module\latest.php

с небольшим уточнением строку отвечающую за описание товара description я обрезал не полностью, а оставил 80 символов как в строке названия товара.
После проведенных манипуляций обязательно зайти в админке в менеджер дополнений и обновить кеш, иначе изменений может быть и не видно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.