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

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

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

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

if (condition) {
	# code...
}

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

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

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

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

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


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

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

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

  • +1 1

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


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

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

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
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  свой поставить

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


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

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

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

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

 

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


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

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

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


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

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

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

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

 

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
36 минут назад, VashUk сказал:

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

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

$data['language_id']=..

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


Ссылка на сообщение
Поделиться на другие сайты
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

 

 

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


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

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

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

 

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


Ссылка на сообщение
Поделиться на другие сайты
1 hour ago, AlexDW said:

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

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

 

 

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

 

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

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

 

в шаблоне:

$language_id;

 

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

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

 

 

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


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

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

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

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


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

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

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

 

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

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


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

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

Спасибо!

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


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, Vandeko сказал:

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

 

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

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

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


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

Исправил, спасибо за напоминание!

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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