Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

4 нуля после запятой в цене в заголовке - как убрать?


arthyrgrex
 Поделиться

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

Всем привет!

OcStore 2.1.0.2.1
Формирую тег Title и Description через контроллер product.php и category.php.

Столкнулся с непонятным для меня моментом:
- цена товара указана нормально, без доп. чисел после запятой (настроил в Админке - Локализация - Валюты)
- вставляю цену в тег title вот так {$product_info['price']} :

$this->document->setTitle("{$product_info['name']} за {$product_info['price']}р купить в интернет магазине Modamio");

- очищаю кэш дополнений, обновляю сайт
- и вижу в заголовке следующую картину:
Joxi.png.5a8380432040870d1baff1857e259822.png
Пример:
http://modamio.ru/belosnezhnyj-legkij-zhenskij-dzhemper

Так и не смог найти ответа в гугле.
Помогите советом.
Где убрать эти 4 нуля, чтобы цена нормально выводилась в тайтле?

Заранее благодарен!

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


$this->document->setTitle("{$product_info['name']} за " . $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) . " купить в интернет магазине Modamio");

 

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

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

$this->document->setTitle("{$product_info['name']} за " . $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) . " купить в интернет магазине Modamio");

 

Красавчик!
Благодарю.

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


ibond - извини за наглость, но если ты подскажешь, как в title категории в контроллере выставить минимальную цену товара (среди всех товаров в категории) - будет просто супер!

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


45 минут назад, arthyrgrex сказал:

ibond - извини за наглость, но если ты подскажешь, как в title категории в контроллере выставить минимальную цену товара (среди всех товаров в категории) - будет просто супер!

 

Может не лучший вариант, но жить может.

    <file path="catalog/controller/product/category.php">
        <operation>
            <search><![CDATA[
                $data['categories'] = array();
            ]]></search>
            <add position="before"><![CDATA[

                $filter_price = array(
                    'filter_category_id' => $category_id,
                    'sort'               => 'p.price',
                    'order'              => 'ASC',
                    'start'              => ($page - 1) * $limit,
                    'limit'              => 1
                );
                $results_p = $this->model_catalog_product->getProducts($filter_price);
                foreach ($results_p as $p) {
                    $this->document->setTitle("{$p['name']} за " . $this->currency->format($this->tax->calculate($p['price'], $p['tax_class_id'], $this->config->get('config_tax'))) . " купить в интернет магазине Modamio");
                }

            ]]></add>
        </operation>
    </file>

 

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

Очень интересная тема.

3 часа назад, ibond сказал:

$this->document->setTitle("{$product_info['name']} за " . $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) . " купить в интернет магазине Modamio");

 

Как насчет многоязычного магазина, как можно подобное реализовать но чтоб вместо "купить в интернет магазине Modamio" подставлялось значение из ленг файла?

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


Легко :)

 

Для этого можно использовать какое-нибудь созданное многоязычное поле в setting

 

И модификатором его добавлять

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

1 минуту назад, chukcha сказал:

многоязычное поле в setting

если можно, на примере что и где создавать? и как это прикрутить к 

$this->document->setTitle("{$product_info['name']} за " . $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) . " купить в интернет магазине Modamio");
Ссылка на комментарий
Поделиться на других сайтах


Делаете модификатор который в настройки добавляет нужные поля
Называете их как нибудь

config_title_add с привязкой к id языка

а потом

 

$this->document->setTitle("{$product_info['name']} за " . $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) . $this->config->get('config_title_add')[$this->config_get('confog_language_id']);

 

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

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

1 час назад, chukcha сказал:

Делаете модификатор который в настройки добавляет нужные поля
Называете их как нибудь

config_title_add с привязкой к id языка

а потом

 


$this->document->setTitle("{$product_info['name']} за " . $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) . $this->config->get('config_title_add')[$this->config_get('confog_language_id']);

 

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

не работает выдает ошибку.

Интересует как сделать шаблон по типу 

$this->document->setTitle("{$product_info['name']} + поле модель товара + кастомное поле для каждого языка типа title_add
Ссылка на комментарий
Поделиться на других сайтах


8 минут назад, bitrixlviv сказал:

не работает выдает ошибку.

Интересует как сделать шаблон по типу 


$this->document->setTitle("{$product_info['name']} + поле модель товара + кастомное поле для каждого языка типа title_add
$this->config->get('config_title_add')[$this->config_get('confog_language_id']);

chukcha, из головы писал, а Вы скопировали и не посмотрели наверное :)

 

Можно так:

if ($this->config->get('config_language_id') === 1) {
	$bla = 'бла';
} else {
	$bla = 'bla';
}

 

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

так поля еще заполнить надо, а это в админке, форма и прочее..

 

Т.е. вот вариант последний от ibond  как вариант для быстрого решения, пусть и не оптимального

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

9 минут назад, ibond сказал:

$this->config->get('config_title_add')[$this->config_get('confog_language_id']);

chukcha, из головы писал, а Вы скопировали и не посмотрели наверное :)

 

Можно так:


if ($this->config_get('confog_language_id') === 1) {
	$bla = 'бла';
} else {
	$bla = 'bla';
}

 

ничего не понятно :(

это очень интересная тема могли б вы написать полную правильную конструкцию?

типа

$this->document->setTitle($product_info['name']) this->currency->format($this->tax->calculate($p['price'];

интересует чтоб была слудуюющая конструкция

$this->document->setTitle("{$product_info['name']} + поле модель товара + кастомное поле для каждого языка типа title_add
 
Ссылка на комментарий
Поделиться на других сайтах


25 минут назад, bitrixlviv сказал:

ничего не понятно :(

это очень интересная тема могли б вы написать полную правильную конструкцию?

типа


$this->document->setTitle($product_info['name']) this->currency->format($this->tax->calculate($p['price'];

интересует чтоб была слудуюющая конструкция


$this->document->setTitle("{$product_info['name']} + поле модель товара + кастомное поле для каждого языка типа title_add
 

 

 

if ($this->config->get('config_language_id') === 1) {
	$bla = 'русский титул';
} else {
	$bla = 'японский титул';
}

$this->document->setTitle("{$product_info['name']} " . $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) . " " . $bla);

 

 

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

ibond,chukcha,

1. этот вариант не подойдет так как у меня 3 язика :)  поэтому лучше использовать переменную которую я охотно готов вписать в ленг файлы напрямую,  можна даже без поля в админке.

2. нужна конструкция где будет модель товара для того, чтоб сделать его уникальным типа:

$this->document->setTitle("{$product_info['name']} + кастомное поле для каждого языка типа title_add + поле модель товара 

Кроме того думаю такое решение будет интересно многим форумчанам.

Заранее большое спасибо.

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


switch ($this->session->data['language']) {
 case 'uk-ua':
	$bla = 'щось україньскою';
    break;
 case 'ru-ru':
    break;
 case 'en-gb':
    break;
}

 

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

chukcha, Parse error: syntax error, unexpected 'switch' (T_SWITCH) in /***************www/catalog/controller/product/product.php on line 218

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


Да какая разница, куда и где

в любом случае нужен способ/метод ее достать

 

в главном язіковм файле ее и прописывайте

 

а затем $data['bla-bla'] = $this->language->get('bla-bla')

 

Но мой метод модулем или в настройках - более универсален - не требуется прямого доступа к файлам.

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

ваш метод не работает, ошибка 

Parse error: syntax error, unexpected 'switch' (T_SWITCH) in /***************www/catalog/controller/product/product.php on line 218

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



chukcha, Вы извините я не программист, я занимаюсь SEO.

Попробовал так 

$this->document->setTitle($product_info['name']) $data['bla-bla'] = $this->language->get('bla-bla') ;

тоже ошибка 


Parse error: syntax error, unexpected '$data' (T_VARIABLE) in /*******************/www/catalog/controller/product/product.php on line 217

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


19 минут назад, chukcha сказал:

switch ($this->session->data['language']) {
 case 'uk-ua':
	$bla = 'щось україньскою';
    break;
 case 'ru-ru':
    break;
 case 'en-gb':
    break;
}

 

 

Попробуйте case 'ru' case 'en', а вообще покажите, что дает print_r($this->session->data['language']) в разных языках.

Также мой вариант, если Вы знаете какой id у языка, то:

 

if ($this->config_get('confog_language_id') === 1) {
	$bla = 'rutitle';
} elseif ($this->config_get('confog_language_id') === 2) {
	$bla = 'entitle';
} else {
	$bla = 'uatitle';
}

 

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

ibond,

2. нужна конструкция где будет модель товара для того, чтоб сделать его уникальным типа:

нужно что то похоже на то, что предложил chukcha, типа 
 

$this->document->setTitle($product_info['name']) $data['bla-bla'] = $this->language->get('bla-bla') ;

 

НО с добавлением туда поля модель товара и конечно нужно чтобы оно работало :)

P.S. я не программист, я занимаюсь SEO. Поэтому очень прошу пишите как должно быть со всеми точками, запятыми и т.д. Заранее спасибо.

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


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

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

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

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

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

Войти

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

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

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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