Значения переменных OpenCart в вопросах и ответах

Часто бывает, когда в том или ином решении требуется получить текущие значения ключевых переменных 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'];
Теги:
CATEGORY, CODE, CURRENCY, CURRENT, CUSTOMER, HOW TO GET, ID, LANGUAGE, ПЕРЕМЕННЫЕ, ТЕКУЩИЕ ЗНАЧЕНИЯ
Добавлено: 25 Февраля 2015 20:29:05 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...