Переменные CMS OpenCart
В данном посте я поделюсь знаниями полученными непосильным трудом при верстки многочисленных шаблонов под CMS OpenCart. Я расскажу, о переменных CMS OpenCart, о переменных которые используют шаблоны (файлы .tpl). Документация для данной системы скудна, в ней вы не найдете ничего подобного, форумы и сообщества почему-то тоже не располагают данной информацией. А напрасно, ведь при каждой разработке своего шаблона приходится погружаться в код default и разбираться какая переменная за что отвечает. Пользуйтесь данным материалом как справочником при верстки своих шаблонов.
Переменные начинающиеся с “text_”
Все переменные в шаблонах начинающихся с приставки text_ (например text_information) содержат просто текст, их значения хранятся в языковых файлах, т.е. в директории /catalog/language/russian/имя_папки_с_представлением/имя_файла_представления.
Например в /catalog/language/russian/common/header.php содержится значение переменных “text_…“ для файла представления header.tpl. Как пример, создадим переменную в данном языковом файле с именем “text_account“, задаются они так:
$_['text_account'] = 'Личный Кабинет';
Мы присвоили переменной текстовую строку.
В контроллере catalog\controller\common\header.php в теле функции index() (в любом месте) необходимо подключить данный языковой файл, т.е. добавить следующую команду:
$this->language->load('common/header');
И инициализировать переменную, которая будет доступна в файле представлении. Добавляем данную команду после предыдущей также в любом месте в теле функции index()
$this->data['text_account'] = $this->language->get('text_account');
Теперь в header.tpl видна переменная $text_account и при печати
<?php $text_account; echo ?>
мы увидим ее содержимое, т.е. строку “Личный Кабинет“.
Переменные доступные в в header.tpl
- $title – название магазина, значение его задается в Система>Настройки далее вкладка витрина поле «Заголовок»
- $base – url адрес сайта, если на локальном сервере то это значение равно http://127.0.0.1/
- $description – описание документа, обычно располагается в тэге <meta name=”description” …>, значение задается в витрине.
- $keywords – нет настроек через админ панель (OpenCart v. 1.5.4), есть модули добавляющие данную возможность, переменная пуста
- $og_url – url адрес текущей страницы, значение переменной формируется автоматически (c версии ocStore 1.5.4.1.1)
- $logo – url адрес логотипа, который указывается в вкладке «изображения» – логотип
- $name – название магазина, обычно располагается возле логотипа в шапке сайта
- $icon – url адрес иконки, указывается в вкладке «изображения» – иконка. Как правило используется в <link href=”…” rel=”icon” /> в <head> </head> страницы, т.е. задает иконку веб сайта при поисковой выдачи.
- $links – пустой массив переменных, нигде не задается (OpenCart v 1.5.4)
- $styles – пустой двумерный массив переменных : $style['rel'] – тип стиля и $style['href'] – ссылка на стиль. Нигде не задается (OpenCart 1.5.4)
- $script – массив содержащий ссылку на скрипт catalog/view/javascript/jquery/jquery.cycle.js. В админ-панели нигде адрес на скрипты не задается (OpenCart 1.5.4)
- $google_analytics – переменная содержащая текст счетчика от Google, код счетчика вводиться на вкладки «Сервер»
- $home – переменная содержащая ссылку на главную страницу, например для локального сервера ее значение будет следующее «http://127.0.0.1/index.php?route=common/home». В админ-панели не задается.
- $language – переменная содержащая html код модуля module/language, если ее напечатать в веб страницу мы получим:Картинки в браузере кликабельные, при нажатие изменяется язык (содержимое переменных text_…). В базовом стиле модуля module/language курсор не изменяется при наведение на ссылки, что не есть хорошо, добавлять стиль к данным ссылкам придется в своем .css файле)
- $currency – переменная содержащая html код модуля module/currency, если ее напечатать в веб страницу мы получим:Картинки в браузере кликабельные, при нажатие изменяется выводимая цена товара. Цена задается в Каталог->Товары в валюте по умолчанию, валюта по умолчанию устанавливается в Система->Локализация->Валюта, остальным валютам прописывается их курс от одной еденицы валюты по умолчанию (почему-то в OpenCart таким образом валюта по умолчанию не изменяется, ошибка разработчиков?)В базовом стиле модуля module/currency курсор не изменяется при наведение на ссылки, что не есть хорошо, добавлять стиль к данным ссылкам придется в своем .css файле)
- $cart – переменная содержащая html код модуля module/cart, если ее напечатать в веб страницу мы получим:
Есть подводный камень, html код модуля cart состоит из двух частей, первая это div с классом heading (Корзина покупок Товаров: 0 ($0.00)) и вторая часть это div с классом content (Ничего не куплено!). Вторая часть в default шаблоне отключена в его css файле#header #cart .content { display: none }
В нашем шаблоне сделать стоит также. На «Товаров: 0 ($0.00)» установлен обработчик событий по клику (на элемент «#cart > .heading a»), обработчик устанавливается в скрипте «catalog/view/javascript/common.js». При клике раскрывается отдельное окошко с содержимым корзины, если мы хотим сохранить такую функциональность в нашем шаблоне то намнеобходимо подключить скрипты Jquery и common.js.
<script type="text/javascript" src="/catalog/view/javascript/jquery/jquery-1.7.1.min.js"> </script> <script type="text/javascript" src="/catalog/view/javascript/jquery/ui/jquery-ui-1.8.16.custom.min.js"> </script> <link rel="stylesheet" type="text/css" href="/catalog/view/javascript/jquery/ui/themes/ui-lightness/jquery-ui-1.8.16.custom.css" /> <script type="text/javascript" src="/catalog/view/javascript/jquery/ui/external/jquery.cookie.js"> </script> <script type="text/javascript" src="/catalog/view/javascript/jquery/colorbox/jquery.colorbox.js"> </script> <link rel="stylesheet" type="text/css" href="/catalog/view/javascript/jquery/colorbox/colorbox.css" media="screen" /> <script type="text/javascript" src="/catalog/view/javascript/jquery/tabs.js"> </script> <script type="text/javascript" src="/catalog/view/javascript/common.js"> </script>
А в нашем css файле добавить следующее:/* по умолчанию окошко закрыто */ .content { display: none; } /* при нажатие на «Товаров: …» скрипт добавляет к окошку класс .active и данный стиль раскрывает его */ .active .content { display: block; } /* Параметры окошка */ .active .heading { margin-top: 5px; padding-top: 10px; padding-bottom: 6px; border-top: 1px solid #EEEEEE; border-left: 1px solid #EEEEEE; border-right: 1px solid #EEEEEE; -webkit-border-radius: 7px 7px 0px 0px; -moz-border-radius: 7px 7px 0px 0px; -khtml-border-radius: 7px 7px 0px 0px; border-radius: 7px 7px 0px 0px; } .active .content { clear: both; position: relative; top: -1px; padding: 8px; min-height: 150px; border-top: 1px solid #EEEEEE; border-left: 1px solid #EEEEEE; border-right: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE; -webkit-border-radius: 0px 7px 7px 7px; -moz-border-radius: 0px 7px 7px 7px; -khtml-border-radius: 0px 7px 7px 7px; border-radius: 0px 7px 7px 7px; -webkit-box-shadow: 0px 2px 2px #DDDDDD; -moz-box-shadow: 0px 2px 2px #DDDDDD; box-shadow: 0px 2px 2px #DDDDDD; background: #FFF; }
При нажатие раскрывающиеся окошко каждый раз заново заполняется html содержимым модуля module/cart. - $filter_name – по умолчанию пустая (?)
- $logged – Переменная служит для определение зашел пользователь или нет, true или false.
- $text_welcome – приглашение войти или зарегистрироваться. Переменная со значением из языкового файла
catalog\language\russian\common\header.php:Где вместо первой %s выводиться ссылка на шаблон «ccount/login», а вместо второй %s ссылка на шаблон «account/register». Ссылки формирует контроллером header. При выводе в веб документ, выглядит это так:
‘<a href="/%s">Войти</a> или <a href="/%s">зарегистрироваться</a>'
- $text_logged – сообщение вместо text_welcome для пользователей которые уже зашли в свой аккаунт, это приглашение выйти из него. Переменная со значением из языкового файла catalog\language\russian\common\header.php:
Вы вошли как <a href="/%s">%s</a> <b>(</b> <a href="/%s">Выйти</a> <b>)</b>
Вместо первой %s выводиться имя пользователя, а вместо второй %s ссылка на шаблон «account/logout».
Ссылки формирует контроллером header. При выводе в веб документ, выглядит это так:
Вместо прямоугольника логин пользователя. - $wishlist – переменная содержит ссылку на шаблон account/wishlist (закладки)
- $account – переменная содержит ссылку на шаблон account/account (личный кабинет аккаунта)
- $shopping_cart – переменная содержит ссылку на шаблон checkout/cart (корзина)
- $checkout – переменная содержит текст – ссылку на шаблон checkout/checkout (оформление заказа). Если корзина пуста, шаблон checkout перенаправляет на шаблон cart
- $categories – многомерный массив, состоит из следующих элементов $categories[$i]['href'], $categories[$i]['name'], $categories[$i]['active'] и т.д. Где $i это индекс переменная характеризующею порядковый номер категории. Работают с $categories в default шаблоне следующим образом:
foreach ($categories as $category) { ?> <?php if ($category['active']) { ?> <a href="/<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a> <?php } else { ?> <a href="/<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a> <?php } ?>
$category['name'] – имя категории.
$category['active'] – активна категория или нет (почему то пустая)Задаются категории в Каталок->Котегории.
Категория «Компьютеры» и «Ноутбуки» (подчернкутая, раскрывается при ссылки на нее) имеют подкатегории.
Получить ссылки и имена подкатегории данной категории можно таким образом
$category['children'][$i]['href'] и $category['children'][$i]['name']
Где $i это индекс переменная характеризующею некую подкатегория данной категория.
Переменные доступные в home.tpl
$heading_title – тоже самое что и $title, задается в Система->Настройки далее вкладка витрина поле «Заголовок».
Переменные доступные в footer.tpl
- $informations – многомерный массив (статьи), состоит из следующих элементов $informations[$i]['href'] и $informations[$i]['title']. Работают с ними в default шаблоне следующим образом:
<ul><?php foreach ($informations as $information) { ?> <li><a href="/<?php echo $information['href']; ?>"> <?php echo $information['title']; ?></a></li> </ul><?php } ?>
Где
$information['href'] – ссылка на статью (на шаблон information/information с нужным параметром);
$information['title'] – название статьи.
Обращаться также можно без цикла, зная порядковый номер статьи, например печать ссылки первой статьи.В админпанели для работы с статьями необходимо перейти Каталог->Статьи
- $contact – переменная содержит ссылку на шаблон information/contact (контакты)
- $return – переменная содержит ссылку на шаблон account/return/insert (обращается к контроллеру return и его функции insert), возврат товара.
- $sitemap – переменная содержит ссылку на шаблон information/sitemap (карта сайта, шаблон автоматом выводит все ссылки каталогов, статей и т.п., менять его вряд ли придется)
- $voucher – переменная содержит ссылку на шаблон account/voucher (шаблон «подарочный сертификат», служит для посылки на email адрес подарочного сертификата одним покупателем другому покупателю)
- $affiliate – переменная содержит ссылку на шаблон affiliate/account (шаблон «партнерская программа» это форма обратной связи с владельцем магазина (с нами))
- $special – переменная содержит ссылку на шаблон product/special (акции, шаблон автоматом формирует список товаров с акциями, менять его вряд ли придется). Для того что бы добавить акцию, необходимо в админпанел нажать «изменить» напротив нужного товара, далее закладка «Акции».
- $account – переменная содержит ссылку на шаблон account/account (личный кабинет аккаунта), данная переменная доступна также и шаблоне header.tpl.
- $order – переменная содержит ссылку на шаблон account/order (история заказов, если не выполнен вход то произойдет редирект на шаблон account/login (вход в личный кабинет)).
- $wishlist – переменная содержит ссылку на шаблон account/wishlist (закладки, если не выполнен вход то произойдет редирект на шаблон account/login (вход в личный кабинет)).
- $newsletter – переменная содержит ссылку на шаблон account/newsletter (рассылка, если не выполнен вход то произойдет редирект на шаблон account/login (вход в личный кабинет)).
- $powered – переменная содержит html код, при выводе отображающая следующие