romakatana

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

Рекомендуемые сообщения

romakatana    2

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
romakatana    2

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

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

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'],

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
OTumanov    6

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
faithnomore    0

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

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

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

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

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

opencart 1.5.5.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
seregakng    2

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 099

можно.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sdm87    0

 

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

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

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'],

 

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

Изменено пользователем sdm87

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
viber    0

Хотелось бы добавить своих 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 символов как в строке названия товара.
После проведенных манипуляций обязательно зайти в админке в менеджер дополнений и обновить кеш, иначе изменений может быть и не видно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу