Opencart - Переменные

Тема в разделе "Общие вопросы", создана пользователем admin, 6 ноя 2016.

  1. TopicStarter Overlay
    Offline

    admin Команда форума Администратор

    Сообщения:
    2.054
    Симпатии:
    51.818
    Репутация:
    148
    В данном посте я поделюсь знаниями полученными непосильным трудом при верстки многочисленных шаблонов под 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
    1. $title название магазина, значение его задается в Система>Настройки далее вкладка витрина поле «Заголовок» 1.jpg
    2. $base url адрес сайта, если на локальном сервере то это значение равно http://site.ru/
    3. $descriptionописание документа, обычно располагается в тэге <meta name=»description» …>, значение задается в витрине. 2.jpg
    4. $keywords – нет настроек через админ панель (OpenCart v. 1.5.4), есть модули добавляющие данную возможность, переменная пуста
    5. $og_urlurl адрес текущей страницы, значение переменной формируется автоматически (c версии ocStore 1.5.4.1.1)
    6. $logo url адрес логотипа, который указывается в вкладке «изображения» — логотип 3.jpg
    7. $nameназвание магазина, обычно располагается возле логотипа в шапке сайта 4.jpg
    8. $iconurl адрес иконки, указывается в вкладке «изображения» — иконка. Как правило используется в <link href=»…» rel=»icon» /> в <head> </head> страницы, т.е. задает иконку веб сайта при поисковой выдачи.
    9. $links — пустой массив переменных, нигде не задается (OpenCart v 1.5.4)
    10. $styles — пустой двумерный массив переменных : $style[‘rel’] – тип стиля и $style[‘href’] – ссылка на стиль. Нигде не задается (OpenCart 1.5.4)
    11. $script – массив содержащий ссылку на скрипт catalog/view/javascript/jquery/jquery.cycle.js. В админ-панели нигде адрес на скрипты не задается (OpenCart 1.5.4)
    12. $google_analytics – переменная содержащая текст счетчика от Google, код счетчика вводиться на вкладки «Сервер» 5.jpg
    13. $home – переменная содержащая ссылку на главную страницу, например для локального сервера ее значение будет следующее «http://s-engineer.ru/index.php?route=common/home». В админ-панели не задается.
    14. $language – переменная содержащая html код модуля module/language, если ее напечатать в веб страницу мы получим: 6.jpg Картинки в браузере кликабельные, при нажатие изменяется язык (содержимое переменных text_…). В базовом стиле модуля module/language курсор не изменяется при наведение на ссылки, что не есть хорошо, добавлять стиль к данным ссылкам придется в своем .css файле)
    15. $currency — переменная содержащая html код модуля module/currency, если ее напечатать в веб страницу мы получим: 7.jpg Картинки в браузере кликабельные, при нажатие изменяется выводимая цена товара. Цена задается в Каталог->Товары в валюте по умолчанию, валюта по умолчанию устанавливается в Система->Локализация->Валюта, остальным валютам прописывается их курс от одной еденицы валюты по умолчанию (почему-то в OpenCart таким образом валюта по умолчанию не изменяется, ошибка разработчиков?)В базовом стиле модуля module/currency курсор не изменяется при наведение на ссылки, что не есть хорошо, добавлять стиль к данным ссылкам придется в своем .css файле)
    $cart – переменная содержащая html код модуля module/cart, если ее напечатать в веб страницу мы получим: 8.jpg Есть подводный камень, 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:1pxsolid#EEEEEE;
    border-left:1pxsolid#EEEEEE;
    border-right:1pxsolid#EEEEEE;
    -webkit-border-radius:7px7px0px0px;
    -moz-border-radius:7px7px0px0px;
    -khtml-border-radius:7px7px0px0px;
    border-radius:7px7px0px0px;
    }
    
    .active .content {
    clear:both;
    position:relative;
    top:-1px;
    padding:8px;
    min-height:150px;
    border-top:1pxsolid#EEEEEE;
    border-left:1pxsolid#EEEEEE;
    border-right:1pxsolid#EEEEEE;
    border-bottom:1pxsolid#EEEEEE;
    -webkit-border-radius:0px7px7px7px;
    -moz-border-radius:0px7px7px7px;
    -khtml-border-radius:0px7px7px7px;
    border-radius:0px7px7px7px;
    -webkit-box-shadow:0px2px2px#DDDDDD;
    -moz-box-shadow:0px2px2px#DDDDDD;
    box-shadow:0px2px2px#DDDDDD;
    background:#FFF;
    }
    При нажатие раскрывающиеся окошко каждый раз заново заполняется html содержимым модуля module/cart.
    1. $filter_name — по умолчанию пустая (?)
    2. $logged — Переменная служит для определение зашел пользователь или нет, true или false.
    3. $text_welcome – приглашение войти или зарегистрироваться. Переменная со значением из языкового файла catalog\language\russian\common\header.php:

      Код:
      ‘<a href="%s">Войти</a> или <a href="%s">зарегистрироваться</a>'
      Где вместо первой %s выводиться ссылка на шаблон «ccount/login», а вместо второй %s ссылка на шаблон «account/register». Ссылки формирует контроллером header. При выводе в веб документ, выглядит это так: 9.jpg
    4. $text_logged – сообщение вместо text_welcome для пользователей которые уже зашли в свой аккаунт, это приглашение выйти из него. Переменная со значением из языкового файла catalog\language\russian\common\header.php:

      Код:
      Вы вошли как<ahref="%s">%s</a><b>(</b><ahref="%s">Выйти</a><b>)</b>
      Вместо первой %s выводиться имя пользователя, а вместо второй %s ссылка на шаблон «account/logout».
      Ссылки формирует контроллером header. При выводе в веб документ, выглядит это так: 10.jpg Вместо прямоугольника логин пользователя.
    5. $wishlist – переменная содержит ссылку на шаблон account/wishlist (закладки)
    6. $account – переменная содержит ссылку на шаблон account/account (личный кабинет аккаунта)
    7. $shopping_cart — переменная содержит ссылку на шаблон checkout/cart (корзина)
    8. $checkout — переменная содержит текст – ссылку на шаблон checkout/checkout (оформление заказа). Если корзина пуста, шаблон checkout перенаправляет на шаблон cart
    9. $categories – многомерный массив, состоит из следующих элементов $categories[$i][‘href’], $categories[$i][‘name’], $categories[$i][‘active’] и т.д. Где $i это индекс переменная характеризующею порядковый номер категории. Работают с $categories в default шаблоне следующим образом:

      Код:
      foreach($categoriesas$category){?>
      <?phpif($category['active']){?>
      <ahref="<?phpecho$category['href'];?>"><?phpecho$category['name'];?></a>
      <?php}else{?>
      <ahref="<?phpecho$category['href'];?>"><?phpecho$category['name'];?></a>
      <?php}?>
      $category[‘href’] — указывает на ссылку на категорию (на шаблон product/category с нужным параметром)
      $category[‘name’] — имя категории.
      $category[‘active’] — активна категория или нет (почему то пустая)


      Задаются категории в Каталок->Котегории. 11.jpg

      Категория «Компьютеры» и «Ноутбуки» (подчернкутая, раскрывается при ссылки на нее) имеют подкатегории.

      Получить ссылки и имена подкатегории данной категории можно таким образом

      Код:
      $category['children'][$i]['href']и$category['children'][$i]['name']
      Где $i это индекс переменная характеризующею некую подкатегория данной категория.

    Переменные доступные в home.tpl


    $heading_title – тоже самое что и $title, задается в Система->Настройки далее вкладка витрина поле «Заголовок». 12.jpg
    Переменные доступные в footer.tpl
    1. $informations — многомерный массив (статьи), состоит из следующих элементов $informations[$i][‘href’] и $informations[$i][‘title’]. Работают с ними в default шаблоне следующим образом:

      Код:
      <ul><?phpforeach($informationsas$information){?>
      <li><ahref="<?phpecho$information['href'];?>">
      <?phpecho$information['title'];?></a></li>
      </ul><?php}?>
      Где
      $information[‘href’] – ссылка на статью (на шаблон information/information с нужным параметром);
      $information[‘title’] – название статьи.
      Обращаться также можно без цикла, зная порядковый номер статьи, например печать ссылки первой статьи.


      В админпанели для работы с статьями необходимо перейти Каталог->Статьи 13.jpg

    2. $contact – переменная содержит ссылку на шаблон information/contact (контакты)
    3. $return – переменная содержит ссылку на шаблон account/return/insert (обращается к контроллеру return и его функции insert), возврат товара.
    4. $sitemap – переменная содержит ссылку на шаблон information/sitemap (карта сайта, шаблон автоматом выводит все ссылки каталогов, статей и т.п., менять его вряд ли придется)
    5. $voucher – переменная содержит ссылку на шаблон account/voucher (шаблон «подарочный сертификат», служит для посылки на email адрес подарочного сертификата одним покупателем другому покупателю)
    6. $affiliate – переменная содержит ссылку на шаблон affiliate/account (шаблон «партнерская программа» это форма обратной связи с владельцем магазина (с нами))
    7. $special – переменная содержит ссылку на шаблон product/special (акции, шаблон автоматом формирует список товаров с акциями, менять его вряд ли придется). Для того что бы добавить акцию, необходимо в админ панель нажать «изменить» напротив нужного товара, далее закладка «Акции». 14.jpg
    8. $account — переменная содержит ссылку на шаблон account/account (личный кабинет аккаунта), данная переменная доступна также и шаблоне header.tpl.
    9. $order — переменная содержит ссылку на шаблон account/order (история заказов, если не выполнен вход то произойдет редирект на шаблон account/login (вход в личный кабинет)).
    10. $wishlist — переменная содержит ссылку на шаблон account/wishlist (закладки, если не выполнен вход то произойдет редирект на шаблон account/login (вход в личный кабинет)).
    11. $newsletter — переменная содержит ссылку на шаблон account/newsletter (рассылка, если не выполнен вход то произойдет редирект на шаблон account/login (вход в личный кабинет)).
    12. $powered – переменная содержит html код, при выводе отображающая следующие 2016-11-06_205818.png