Часто бывает, когда в том или ином решении требуется получить текущие значения ключевых переменных OpenCart. Все эти значения пользуются большим спросом у разработчиков, они известны, но иногда забываешь их способ получения. Поэтому решено составить соответствующий список в виде вопросов и ответов.
Как узнать текущий язык магазина?
Идентификатор текущего языка (целое число):
$current_language_id = $config->get(‘config_language_id’);
Код текущего языка (двухсимвольный):
$current_language_code = $this->config->get(‘config_language’);
или
$current_language_code = $this->language->get(‘code’);
Как определить выбранную валюту?
Код текущей валюты (трехсимвольный):
$current_currency_code = $this->currency->getCode();
В какой категории находится просматриваемый товар?
Довольно актуально, если страница товара открыта по прямой ссылке, т.е. не через категории. Идентификатор текущей категории (ноль будет означать, что пользователь в разделе, не связанном с категорией, например на главной странице):
$parts = array(0);
if (isset($this->request->get[‘path’])) {
$parts = explode(‘_’, (string)$this->request->get[‘path’]);
} elseif (isset($this->request->get[‘product_id’])) {
if ($rows = $this->model_catalog_category->getCategoriesByProductId($this->request->get[‘product_id’])) {
$parts = array_values($rows[0]);
}
}
$current_category_id = (int)array_pop($parts);
Как узнать идентификатор действующего магазина?
$current_store_id = $this->config->get(‘config_store_id’);
Какой шаблон используется для магазина?
$current_template = $this->config->get(‘config_template’);
Как определить текущего пользователя?
Если требуется получить имя авторизованного пользователя в панели управления OpenCart и его идентификатор:
$this->load->library(‘user’); $user_data = new User($this->registry);
$current_username = $user_data->getUserName();
$current_user_id = $user_data->getId();
Для идентификатора бывает достаточно узнать значение одной из переменных сессии (ноль будет означать, что пользователь не авторизован):
$current_user_id = isset($this->session->data[‘user_id’]) ? $this->session->data[‘user_id’] : 0;
Как определить авторизованного покупателя?
Аналогично вопросу выше, только имя подключаемой библиотеки customer, а идентификатор покупателя в сессии customer_id.
Как узнать содержимое переменной в процессе отладки?
Иногда в процессе отладки необходимо знать значения тех или иных переменных. Поскольку выводить содержимое переменной в браузер не всегда удобно, а в некоторых случаях и невозможно, то лучше это делать путём записи в журнал ошибок OpenCart:
$this->log->write($variable);
Как добавить скриптовый файл JavaScript или файл стилей CSS?
Файлы скриптов и стилей лучше подключать по мере их необходимости, вместо того, чтобы прописывать в шаблонах типа header.tpl. Это ускоряет процесс окончательной загрузки тех страниц, где они не используются:
$this->document->addStyle(‘catalog/view/theme/default/stylesheet/style.css’);
$this->document->addScript(‘catalog/view/javascript/script.js’);
Как узнать количество товаров в корзине без выполнения запроса к серверу?
Очевидно это можно сделать только через интерфейс магазина средствами jQuery. Разумеется решение справедливо для стандартной версии OpenCart, где модуль корзины покупок выполнен по всем правилам.
<script type=»text/javascript»>var cart_total = $(‘#cart-total’).text().replace( /^\D+/g, »); if (parseInt(cart_total)) { alert(‘Cart is not empty’); }</script>
Как узнать текущую страницу (layout)?
Многие переменные можно брать непосредственно из параметров запроса типа GET. Чтобы получить текущую страницу (схему), используйте следующую запись:
$route = $this->request->get[‘route’];
Эта статья может быть дополнена новыми способами получения текущих значений переменных, следите за обновлениями и комментариями.