Перейти к содержанию
arthyrgrex

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

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

Всем привет!

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, не совсем вас понял

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


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

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