Jump to content
Sign in to follow this  
arthyrgrex

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

Recommended Posts

Всем привет!

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 нуля, чтобы цена нормально выводилась в тайтле?

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

Share this post


Link to post
Share on other sites
$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

Share this post


Link to post
Share on other sites
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");

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

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" подставлялось значение из ленг файла?

Share this post


Link to post
Share on other sites

Легко :)

 

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

 

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

Share this post


Link to post
Share on other sites
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");

Share this post


Link to post
Share on other sites

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

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']);

 

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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';
}

 

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites
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
 

Share this post


Link to post
Share on other sites
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);

 

 

Share this post


Link to post
Share on other sites

ibond,chukcha,

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

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

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

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

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

Share this post


Link to post
Share on other sites

Т.е. вы предлагаете там написать модуль?

Share this post


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

 

  • +1 1

Share this post


Link to post
Share on other sites

chukcha, не совсем вас понял

Share this post


Link to post
Share on other sites

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

Edited by bitrixlviv

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites


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

Share this post


Link to post
Share on other sites
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';
}

 

Share this post


Link to post
Share on other sites

ibond,

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

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

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

 

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

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

Edited by bitrixlviv

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.