Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Знак вопроса при сокращении названия товара в корзине.


Feldeshi
 Поделиться

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

Спойлер

1.png.a44d2159f3ad3d282695b4667962dc10.png

Такая проблемка обранужилась.
с тем учетом что используются:

/catalog/controller/common/cart.php
utf8_strlen  utf8_substr

            foreach ($product['option'] as $option) {
                if ($option['type'] != 'file') {
                    $value = $option['value'];
                } else {
                    $upload_info = $this->model_tool_upload->getUploadByCode($option['value']);

                    if ($upload_info) {
                        $value = $upload_info['name'];
                    } else {
                        $value = '';
                    }
                }

                $option_data[] = array(
                    'name'  => $option['name'],
                    'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value),
                    'type'  => $option['type']
                );

Файл cart.twig в кодировке utf-8 без BOM -> на хостинге в настройках PHP стоит AddDefaultCharset-UTF8

 

<meta charset="UTF-8" />

я уже руки опустил, не знаю куда дальше копать

 
Изменено пользователем Feldeshi
Ссылка на комментарий
Поделиться на других сайтах


3 години назад, Feldeshi сказав:
  Показати вміст

1.png.a44d2159f3ad3d282695b4667962dc10.png

Такая проблемка обранужилась.
с тем учетом что используются:

/catalog/controller/common/cart.php
utf8_strlen  utf8_substr

            foreach ($product['option'] as $option) {
                if ($option['type'] != 'file') {
                    $value = $option['value'];
                } else {
                    $upload_info = $this->model_tool_upload->getUploadByCode($option['value']);

                    if ($upload_info) {
                        $value = $upload_info['name'];
                    } else {
                        $value = '';
                    }
                }

                $option_data[] = array(
                    'name'  => $option['name'],
                    'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value),
                    'type'  => $option['type']
                );

Файл cart.twig в кодировке utf-8 без BOM -> на хостинге в настройках PHP стоит AddDefaultCharset-UTF8

 

<meta charset="UTF-8" />

я уже руки опустил, не знаю куда дальше копать

 

UTF8 без BOOM

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


9 часов назад, AlexDW сказал:

показываете правки кода опций, а на скрине ошибки в самом названии товаров

Подскажите где искать?

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


41 минуту назад, nikifalex сказал:

короче ищите везде substr( для начала

Просто какбы те файлы не трогал изначально чистый движок ставил... Есть ли смысл там искать 

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


35 минут назад, nikifalex сказал:

ну вы же программист. не надо так много думать. сначала ищите, а потом думайте

просто в файле cart.php нет больше ничего связанного с utf8_strlen 

 

Спойлер

1.jpg.e9baaa509561316c6c0cccd32f09e10d.jpg

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

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


модификатор какой-то вносит изменения в cart.php или в самом шаблоне обрезается название

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


UPD: Использовал один модуль который как я увидел делает некрасивую вещь)

	<file path="catalog/controller/common/cart.php">
		<operation>
			<search><![CDATA[$data['text_items'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']));]]></search>
			<add position="replace"><![CDATA[
				$data['text_items'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), null);
			]]></add>
		</operation>
		<operation>
			<search><![CDATA[$data['products'][] = array(]]></search>
			<add position="before"><![CDATA[
				$c_words = 30;
				$product['name'] = strlen($product['name']) > $c_words ? substr($product['name'],0,$c_words)."..." : $product['name'];
			]]></add>
		</operation>
	</file>	

Теперь я понял почему я просто в файлах найти не мог, пошел методом тыка и стал отключать модификаторы по одному, и проблема пропала не сложным методом вычислил модификатор залез в его установщик. НУ думаю теперь если utf8_ дописать должно заработать нормально. 

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


3 минуты назад, thentru сказал:

модификатор какой-то вносит изменения в cart.php или в самом шаблоне обрезается название

Вы на 2 минуты раньше меня подумали) круто :)
Opencart раньше не использовал, попросили друзья сайт суши им сделать.

Изменено пользователем Feldeshi
Ссылка на комментарий
Поделиться на других сайтах


Всем спасибо, тему можно закрывать, проблему решил.
Кому может пригодится в таблице oc_modification нашел нужный мне модификатор и поправил 

strlen($product['name']) > $c_words ? substr($product

в
 

utf8_strlen($product['name']) > $c_words ? utf8_substr($product
Спойлер

1.jpg.7a486280a9c4078134ba08a2dbfe8486.jpg

 

Изменено пользователем Feldeshi
Ссылка на комментарий
Поделиться на других сайтах


  • 2 года спустя...

Добавлю, что utf8_strlen  utf8_substr это  пользовательские методы хелпера Opencart, которые находятся в файле system\helper\utf8.php
К примеру:
 

function utf8_strlen($string) {
     return mb_strlen($string);
}

 

Изменено пользователем fortoonas
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.