Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Условие проверки на активный язык (OpenCart 2.3)


Recommended Posts

Доброго времени суток. Как реализовать проверку на активный язык в шаблоне? Что то типа этого:

if (condition) {
	# code...
}

Нужно сделать это в footer.tpl, работает этот код

<?php if ($_COOKIE['language'] == 'ru-ru') { ?>
русский
<?php } ?>

<?php if ($_COOKIE['language'] == 'en-gb') { ?>
англ
<?php } ?>

но он срабатывает только после перезагрузки. Буду очень признателен, если поможете разобраться как реализовать данную проверку на OC 2.3 в файлах шаблона

Link to post
Share on other sites

$this->config->get('config_language')

$this->config->get('config_language_id')

  • +1 1
Link to post
Share on other sites

Это называется грабли и костыли
 

  • +1 1
Link to post
Share on other sites
1 час назад, Alexodiy сказал:

Доброго времени суток. Как реализовать проверку на активный язык в шаблоне? Что то типа этого:

 

 

может, проще брать значение lang  из тега html через js

var language = document.getElementsByTagName("html")[0].getAttribute("lang");

if (language =='en') {
  $('div[id="top-modules"]').before('англ');
}
if (language =='ru') {
  $('div[id="top-modules"]').before('рус');
} 

div id  свой поставить

Link to post
Share on other sites

С этим разобрался... Спасибо. Сделал через

$this->config->get('config_language')
$this->config->get('config_language_id')

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

 

Link to post
Share on other sites

Код текущей валюты (трехсимвольный): 
$this->currency->getCode();

Link to post
Share on other sites

Alexodiy меня тоже интересует проверка актуального языка.

А как вы потом перенесли из контроллера значение переменных в шаблон tpl ?

Или вся проверка осталась в файле контроллера?

 

Я в контроллере модуля получаю переменную $language_id = $this->config->get('config_language_id');

Но потом в шаблоне при запросе значения $language_id мне пишется что она Undefined.

Link to post
Share on other sites

36 минут назад, VashUk сказал:

Но потом в шаблоне при запросе значения $language_id мне пишется что она Undefined.

для передачи данных из контроллера в шаблон нужно использовать массив $data

$data['language_id']=..

Link to post
Share on other sites
On 6/6/2018 at 10:30 PM, AlexDW said:

для передачи данных из контроллера в шаблон нужно использовать массив $data

$data['language_id']=..

 

А можете тогда подсказать, как правильно в шаблоне запросить эту переменную.

 

В контроллере сейчас так: $data['language_id'] = $this->config->get('config_language_id');

 

На всякий случай эхом в контроллере проверил, что значение выводится.

 

Но в шаблоне tpl всё равно $language_id Undefined

 

 

Link to post
Share on other sites

так и передается

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

 

Link to post
Share on other sites
1 hour ago, AlexDW said:

так и передается

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

 

 

Вот так получилось:

 

в контроллере:

$languageID = $this->config->get('config_language_id');
$this->mdata['language_id'] = $languageID;

 

в шаблоне:

$language_id;

 

на эту мысль меня навело ваше предположение о неправильном месте вывода переменной в контроллере.

Так что спасибо вам ))

 

 

Link to post
Share on other sites

  • 1 month later...

Подскажите, как отучить Opencart 2.3 в поиске различать языки.
То есть даже если выбран другой язык, поиск всегда выдавал искомый товар.

В версии 1.5. исправлялось коментированием строчки в контроллере search.php
$sql .= 'AND pd.language_id = ' . (int)$this->config->get('config_language_id');
в совей версии в контроллере search.php я такой строки не нашел.

Link to post
Share on other sites

потому что смотреть нужно в модели catalog\model\catalog\product.php

ищите в методах getProducts и getTotalProducts

 

не стоит забывать, что при большом количестве товаров и нескольких языках отключение фильтра по language_id приведет к росту нагрузки

Link to post
Share on other sites

Отлично! строка 78  WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND

Спасибо!

Link to post
Share on other sites

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

Отлично! строка 78

 

только править нужно в обоих методах, getProducts и getTotalProducts

иначе будет расхождение между фактически найденными товарами и их счетчиком

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

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.