Часть 1.
Серия старей для разработчиков модулей под OpenCart. В этой серии статей будут опубликованы маленькие и полезные модули, полезные участки кода, описания основных классов и нестандартные решения стандартными способами. Без костылей и велосипедов.
Определение текущего layout_id в модуле и на странице
private function get_layout_id(){ $this->load->model('design/layout'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('catalog/information'); $layout_id = 0; $route = (isset($this->request->get['route'])?$this->request->get['route']:''); if ($route == 'product/category' && isset($this->request->get['path'])) { $path = explode('_', (string)$this->request->get['path']); $layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path)); } else if ($route == 'product/product' && isset($this->request->get['product_id'])) { $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); } else if ($route == 'information/information' && isset($this->request->get['information_id'])) { $layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']); } if (!$layout_id) { $layout_id = $this->model_design_layout->getLayout($route) ? $this->model_design_layout->getLayout($route) : $this->config->get('config_layout_id'); } return $layout_id; }
Вывод модуля на странице определенной категории или товара
Этот код добавляется в код модуля. В настройках модуля должны быть два массива – $show_on_categories, $show_on_products, в которых содержатся category_id и product_id, соответственно.
private function checkModuleLayout($setting){ $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this_layout_id = $setting['layout_id']; if ($route == 'product/category' && isset($this->request->get['path'])) { $path = explode('_', (string)$this->request->get['path']); $layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path)); if ($this_layout_id == $layout_id) { if (!empty($setting['album_show_on_categories'])) { if (in_array(end($path), $setting['show_on_categories'])) { return true; }else{ return false; } }else{ return true; } } } else if ($route == 'product/product' && isset($this->request->get['product_id'])) { $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); if ($this_layout_id == $layout_id) { if (!empty($setting['show_on_products'])) { if (in_array($this->request->get['product_id'], $setting['album_show_on_products'])) { return true; }else{ return false; } }else{ return true; } } return true; } else { return true; } }
А теперь применение функции. Вставляется в начало функции index() модуля.
if (!$this->checkModuleLayout($setting)) { return; }
Полная очистка кэша
$this->cache->delete('*');
Описание функций основных классов
// Cache Кэш $this->cache->set($key, $value); // Внесение данных в кэш $this->cache->get($key); // Получение данных из кэша $this->cache->delete($key); // Удаление данных из кэша // Cart Корзина $this->cart->getProducts(); //Получает все товары находящиеся в корзине учитывая опции, акции. $this->cart->add( $product_id, $qty = 1, $options = array()); // Добавление товара в корзину $this->cart->remove( $key ); // Удаление товара из корзины $this->cart->clear(); // Очистка корзины $this->cart->getWeight(); // Получение веса всей корзины $this->cart->getSubTotal(); // Получение суммы цен элементов корзины без вычета налогов $this->cart->getTotal(); // Получение суммы цен элементов корзины с вычетом налогов $this->cart->countProducts(); // Получение количества товаров в корзине $this->cart->hasProducts(); // Проверяет пуста корзина или нет $this->cart->hasStock(); // Возвращает false, если хотя бы один элемент корзины отсутствует на складе(в продаже) $this->cart->hasShipping(); // Возвращает true, если хотя бы один элемент корзины требует доставку $this->cart->hasDownload(); // Возвращает true, если хотя бы один элемент корзины связан с какой-либо загрузкой // Config Настройки $this->config->get($key); // Возвращает значение настройки $this->config->set($key, $value); // Устанавливает значение настройки (Не сохраняется в базе данных) // Currency Валюта $this->currency->set($currency); // Устанавливает код валюты, который будет использоваться в сессии $this->currency->format($number, $currency = '', $value = '', $format = TRUE); // "format" валюты $this->currency->convert($value, $from, $to); // Конвертирует значение одной валюты в другую $this->currency->getId(); // Возвращает ID текущей валюты (1, 2, 3, 4) $this->currency->getCode(); // Возвращает код текущей валюты (USD, EUR, GBP, AUD, etc) $this->currency->getValue($currency); // Возвращает текущий курс для указанной валюты $this->currency->has($currency) // Проверяет существует ли указанная валюта // Customer Клиент $this->customer->login($email, $password); //Авторизация $this->customer->logout(); // Выход $this->customer->isLogged(); // Проверяет авторизован клиент или нет $this->customer->getId(); // Получает ID клиента $this->customer->getFirstName(); // Получает первое имя клиента $this->customer->getLastName(); // Получает второе имя клиента $this->customer->getEmail(); // Получает Email ользователя $this->customer->getTelephone(); // Получает номер телефона клиента $this->customer->getFax(); // Получает факс клиента $this->customer->getNewsletter(); // Получает подписку клиента $this->customer->getCustomerGroupId(); // Получает ID группы клиента $this->customer->getAddressId(); // Получает ID адреса пользователя // DB База данных $this->db->query($sql); //Выполняет SQL запрос $this->db->escape($value); // Слеширует данные перед внесением в базу данных $this->db->countAffected($sql); // Возвращает кол-во затронутых запросом строк $this->db->getLastId($sql); //Возвращает значение последнего auto_increment поля // Document Документ $this->document->setTitle($title); // Устанавливает title страницы $this->document->getTitle(); // Возвращает title страницы $this->document->setDescription($description); // Устанавливает description $this->document->getDescription(); // Возвращает description $this->document->setKeywords(); // Устанавливает keywords $this->document->getKeywords(); // Возвращает keywords $this->document->setBase($base); // Устанавливает базовую ссылку $this->document->getBase(); // Возвращает базовую ссылку $this->document->setCharset($charset); // Устанавливает charset страницы $this->document->getCharset(); Возвращает charset страницы $this->document->setLanguage($language); // Устанавливает язык страницы $this->document->getLanguage(); // Возвращает язык страницы $this->document->setDirection($direction); // Устанавливает направление текста страницы (rtl/ltr) $this->document->getDirection(); // Возвращает направление текста страницы (rtl/ltr) $this->document->addLink( $href, $rel ); // Добавляет тег <link> $this->document->getLinks(); // Возвращает массив тегов <link> $this->document->addStyle( $href, $rel = 'stylesheet', $media = 'screen' ); // Добавляет стиль $this->document->getStyles(); // Возвращает массив стилей $this->document->addScript( $script ); // Добавляет скрипт $this->document->getScripts(); // Возвращает массив скриптов $this->document->addBreadcrumb($text, $href, $separator = ' > '); // Добавляет хлебные крошки в массив $this->document->getBreadcrumbs(); // Возвращает хлебные крошки // Encryption Шифрование $this->encryption->encrypt($value); // Шифрует строку на основе ключа, установленного в административной панели. $this->encryption->decrypt($value); // Дешифрует строку // JSON $this->json->encode( $data ); // Шифрует данные в формат JSON $this->json->decode( $data , $assoc = FALSE); // Дешифрует данные из формата JSON // Language Язык $this->language->load($filename); // Загрузка языка $this->language->get($key); // Возвращает значение языковой переменный текущего языка // Lenght Длина $this->length->convert($value, $from, $to); // Конвертирует длину из одной системы в другую $this->length->format($value, $unit, $decimal_point = '.', $thousand_point = ','); // Форматирует вывод длины // Log Лог $this->log->write($message); // Записывает сообщение в лог // Request Запрос $this->request->clean($data); // Очищает поступившие данные для предотвращения XSS $this->request->get['x'] = $_GET['x'] $this->request->post['x'] = $_POST['x'] // Response Ответ $this->response->addHeader($header); // Добавляет header $this->response->redirect($url); // Перенаправляет на $url // Session Сессия $this->session->data['x'] = $_SESSION['x']