Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


romakatana

Recommended Posts

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

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

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

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

  • +1 1
Надіслати
Поділитися на інших сайтах


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

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

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
Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах


  • 7 months later...

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

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

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

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

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

opencart 1.5.5.1

Надіслати
Поділитися на інших сайтах


  • 1 year later...

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

 

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

 

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

Надіслати
Поділитися на інших сайтах


  • 7 months later...

 

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

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

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
Надіслати
Поділитися на інших сайтах


  • 3 months later...

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

Надіслати
Поділитися на інших сайтах


  • 4 years later...
15 часов назад, AlexandrSY сказал:

А как обрезать текст после определенного тега, например после <hr> ?

$text = strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'), '<hr>');
$description = utf8_substr($text, 0, utf8_strpos($text, '<hr')) . '...';

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.