Верстальщику

Это информация для верстальщиков. В PHPShop используется собственный оригинальный шаблонизатор, позволяющий персонализировать дизайн сайта под любые задачи и разделять php код проекта от дизайна.+

Структура

Файлы шаблона сгруппированы в папки с именем шаблона в /phpshop/templates/ и разделены на группы по имени применения:+

  • product - шаблоны товаров

  • catalog - шаблоны категорий

  • banner - шаблоны баннеров

  • news - шаблоны новостей

  • page - шаблоны страниц

  • selection - шаблоны фильтров товаров

  • ружим

  • users - шаблоны личного кабинета пользователей

  • order - шаблоны формы заказа

  • search - шаблоны поиск

  • gbook - шаблоны отзывов

  • map - шаблоны карты сайта

  • php - код раширений дизайн-хуков

  • images - картинки, исползующиеся в шаблоне

  • style.css - файл CSS стилей шаблона

Стили оформления CSS

CSS стили оформления размещаются в /phpshop/templates/имя_шаблона/style.css. Цветовые темы стилей размещаются в /phpshop/templates/имя_шаблона/css/ в файлах формата bootstrap-theme-цвет.css.+

Создание нового шаблона

Редактировать файлы шаблонов *.tpl можно в любом текстовом редакторе, поддерживающий разметку HTML. Для создания собственного шаблона под именем "my_template" нужно проделать следующие шаги:+

  • Берем за исходный шаблон с именем "bootstrap", расположенный в папке /phpshop/templates/bootstrap

  • Копируем его в ту же папку /phpshop/templates/, но под именем /phpshop/templates/my_template

  • В панели управления Настройки - Основные выбираем шаблон с именем "my_template"

  • Основные файлы, которые нужно править:

    • /phpshop/templates/my_template/index.tpl - вид первой страницы сайта (имя_сайта/)

    • /phpshop/templates/my_template/shop.tpl - вид всех остальных страниц (имя_сайта/shop/, имя_сайта/news/ и т.д.)

  • Исходя из собственного дизайна, вносим изменения в верстку страницы /phpshop/templates/my_template/index.tpl.

  • После внесения изменений нужно нажать клавишу F5 для перезагрузки браузера.

  • Такие же манипуляции проводим с файлом внутренних страниц /phpshop/templates/my_template/shop.tpl

  • Изображения для шаблона хранятся в папке /phpshop/templates/my_template/images

    • /phpshop/templates/my_template/images - персональные изображения для шаблона

    • /phpshop/templates/my_template//phpshop/templates/faqbootstrap/images/shop - изображения для закрытых от редактирования функций.

Путь к изображению должен иметь вид:+

img src="imagеs/my_pic.jpg" alt="Картинка">

При выводе дизайна, скрипт заменяет адрес imаges/my_pic.jpg на /phpshop/templates/faqbootstrap/images/my_pic.jpg, что делает шаблон независимым от своего имени и расположения. Важно знать, что все вхождения пути imаges будут в дизайне и в скрипте заменены на /phpshop/templates/faqbootstrap/images/. Особенно это правило нужно учитывать при создании раздела "Полезные ссылки", где прописываются коды кнопок-ссылок.+

Имена изображений должны носить латинское название и не содержать пробелов:+

  • картинка.jpg - не правильно

  • my img.jpg - не правильно

  • my_img.jpg - верно

Редактор шаблонов

Для редактирования дизайна из панели управления используется функция редактора в меню Настройки - Шаблоны дизайна. Он позволяет быстро находить нужный шаблон и подсвечивать переменные, доступные в нем. Для ознакомления со всеми возможностями редактора шаблонов следует запустить режим Обучение в выпадающем меню . Для перехода в продвинутый режим правки шаблонов с возможностью отображения реальных имен файлов служит опция "Расширенный режим".+

Редактор шаблонов

Отладка шаблона

Для перехода в режим отладки шаблона следует в режиме правки шаблона кликнуть по одноименной кнопке. Режим отладки поддерживает шаблоны diggi, astero и spice. В режиме отладки подсвечиваются пунктирной линией участки кода, сформированные шаблонизатором. При наведении мышкой на такой элемент появляется подсказка Показать [Ctrl + ↵] с возможностью перехода в нужный файл шаблона по сочетанию клавиш Ctrl и Ввод, или Ctrl и клик мышкой. Переход происходит во внутренний редактор шаблонов в панели управления. Отладка позволяет быстро найти нужный шаблон и отредактировать его.+

Редактор шаблонов

Схема шаблона

Интерактивная схема шаблона доступна в разделе Настройки - Шаблоны дизайна - Имя шаблона.+и предназначена для быстрого визуального восприятия шаблона и возможности быстро найти нужный элемент в нем. При наведении на каждый элемент показывается подсказка с описанием функции и ссылкой на редактирование файла в html редакторе.

Редактор шаблонов

PHP код

Поддерживается использование нативного php кода между тегами @php ..... php@, пример:+

@php
if(isset($_GET['v']))
echo "Выбраны характеристики";
php@

Существует список разрешенных php-функций и условных выражений для использований в шаблонизаторе для предотвращения внедрения вируса на сайт. Доступные функции:+

if
else
switch
for
foreach
echo
print
print_r
array
isset
empty
chr
str_replace
empty

Добавить новые функции можно через общий конфигурационный файл /phpshop/inc/config.ini секция [function]:+

[function]
guard = "true";
allowed = "leftCatal,isset,getElementById,empty,UserLogOut,exit,set,get";
deny = "include,include_once,require,require_once,file,chmod";

Защитник кода отключается параметром guard = "false"+

Для использования переменных шаблонизатора @переменная@ в тегах @php .. php@ применяется глобальный массив $GLOBALS['SysValue']['other'][переменная] или PHPShopParser::get('переменная').+

Существует возможность задавать условия вывода блоков с учетом наличия той или иной не пустой переменной, пример:+

div class="@php __hide('now_buying'); php@"

К элементу div добавится класс hide при условии, что переменная @now_buying@ пустая, те блок не выведется. Таким способом можно скрывать новости, если их нет и т.д.

Управление разделителем между товарами

В версиях PHPShop 4 и выше существует алгоритм упрощенной смены варианта разделителя товаров с табличной верстки на блочную. В конфигуратор шаблона phpshop/templates/имя_шаблона/php/inc/config.ini добавлен раздел выбора типа разделителя для вывода товаров (li, div, table или bootstrap). Данный подход намного упрощает верстку шаблонов с современными визуальными эффектами.

Пример из шаблона bootstrap

[html]
phpshopshopcore="bootstrap";
phpshopproductindexelements ="bootstrap";
phpshopproducticonelements ="bootstrap-4";
phpshopshopcatalogelement="bootstrap-2";

Таблица сравнения результатов

Метод

Результат вывода

bootstrap

<div class="row">Товар А</div>

div

<div>Товар А</div>

li

<li>Товар А</li>

table

<tr><td class="panel_l">Товар А</td></tr>

Таблица переменных

Класс

Переменные

phpshopshopcore

@productPageDis@

phpshopproductindexelements

@specMain@

phpshopproducticonelements

@specMainIcon@, @nowBuy@

phpshopshopcatalogelement

@leftCatalTable@

Цифирное обозначение после имени (bootstrap-4) назначает принудительно саму сетку, т.е. кол-во товара в длину при выводе без использования дизайн-хука. При смене сетки товара 1-5 не забывайте менять имя класса (col-md-[1-12]) в самом шаблоне на основе Grid system

База дизайн-хуков - поиск и товары

Если в инструкции указана необходимость создания файла, а в вашем шаблоне уже присутствует такой файл, то файл дополняется по правилам составления Дизайн-хуков. Для быстрого включения/выключения дизайн-хука нужно поставить знак решетки # перед его определением в config.ini, пример:

  • #phpshopprice="php/hook/price.hook.php"; - выключен

  • phpshopprice="php/hook/price.hook.php"; - включен

или поставить знак решетки # в массиве перехвата $addHandler в файле хука, пример:

  • $addHandler=array(''''#'''product'=>'product_pricecore_hook'); - выключен

  • $addHandler=array('product'=>'product_pricecore_hook'); - включен

Ключ секции [hook] должен быть уникален, если требуется создать новый хук на тот же класс(ключ), то требуется объединить хуки по правилам составления дизайн-хуков.

Поиск

Изменение сетки вывода товара

В форме вывода результат поиска используется ячейка в один товар, нужно его поменять на вывод в 2 ячейки в длину.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/search.hook.php с содержанием

    /**
    * Изменение сетки товаров в поиске
    */
    function words_searchcore_hook($obj,$row,$rout) {
    if($rout == 'START'){
    // Задаем новую сетку
    $obj->cell=2;
    // Добавляем для красоты разделите между сеткой
    $obj->line=true;
    $obj->grid=true;
    // Корректировка количества товара на странице поиска
    $obj->num_row=50;
    }
    }
    $addHandler=array
    (
    'words'=>'words_searchcore_hook',
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopsearch="php/hook/search.hook.php";

Товары

Вывод хлебных крошек в подробном описании товара под ценой

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/uid.hook.php с содержанием

    /**
    * Хук хлебных крошек
    */
    function uid_bread_crumbs_hook($obj, $row, $rout) {
    if($rout == 'MIDDLE'){
    // Навигация хлебных крошек с сылками
    $obj->navigation($obj->category, $row['name']);
    // Имя каталога
    $obj->set('catalogCategory', $obj->category_name);
    // ID категории
    $obj->set('pcatalogId', $obj->category);
    }
    }
    $addHandler = array
    (
    'UID' => 'uid_bread_crumbs_hook'
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopshop="php/hook/uid.hook.php";
  3. Добавить @breadCrumbs@,@catalogCategory@ и @pcatalogId@ в шаблон product/main_product_forma_full.tpl

Добавление в Title подробного описания артикул товара

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/title.hook.php с содержанием

    /**
    * Хук замены title
    */
    function set_meta_hook($obj, $row) {
    $obj->doLoadFunction('PHPShopShop', 'set_meta', $row);
    $obj->title=str_replace($row['name'],$row['name'].' '.$row['uid'],$obj->title);
    return true;
    }
    $addHandler = array
    (
    'set_meta' => 'set_meta_hook'
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopshopcore="php/hook/title.hook.php";

Изменение количества товаров на странице спецпредложений

Требуется изменить количество товаров на странице спецпредложений /spec/.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/spec.hook.php с содержанием

    /**
    * Изменение сетки товаров в спецпредложениях
    */
    function index_speccore_hook($obj,$row,$rout) {
    if($rout == 'START')
    $obj->cell=4;
    }
    $addHandler=array
    (
    'index'=>'index_speccore_hook',
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopspec="php/hook/spec.hook.php";

Форматирование цены

Требуется отформатировать цену у товара для разделение тысяч (10 200 руб.)

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/priceformat.hook.php с содержанием

    /**
    * Форматирование цены
    */
    function price_format_hook($obj, $row, $newprice) {
    // Если есть новая цена
    if (empty($newprice))
    $price = $row['price'];
    else
    $price = $row['price_n'];
    $price = number_format(PHPShopProductFunction::GetPriceValuta($row['id'], array($price, $row['price2'], $row['price3'], $row['price4'], $row['price5']), $row['baseinputvaluta']), 2, '.', ' ');
    return $price;
    }
    $addHandler=array
    (
    'price'=>'price_format_hook',
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopshopcore="php/hook/priceformat.hook.php";

Форматирование цены элементов новинок и спецпредложений произведем через дизайн хук класса PHPShopProductElements.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/priceformatelement.hook.php с содержанием

    /**
    * Форматирование цены
    */
    function price_formatelement_hook($obj, $row, $newprice) {
    // Если есть новая цена
    if (empty($newprice))
    $price = $row['price'];
    else
    $price = $row['price_n'];
    $price = number_format(PHPShopProductFunction::GetPriceValuta($row['id'], array($price, $row['price2'], $row['price3'], $row['price4'], $row['price5']), $row['baseinputvaluta']), 2, '.', ' ');
    return $price;
    }
    $addHandler=array
    (
    'price'=>'price_formatelement_hook',
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopproductelements="php/hook/priceformatelement.hook.php";

Вывод заданной характеристики в закладке

Требуется в подробном описании товара создать дополнительную метку вывода характеристики "Тип загрузки". За вывод подробного описания товара отвечает шаблон /phpshop/templates/имя_шаблона/product/main_product_forma_full.tpl. Для добавления новой закладки следует добавить в него переменную @addseamplysort@. Переменную вывода значение характеристики @addseamplysort@ зададим через дизайн хук класса PHPShopShop.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/sort.hook.php с содержанием

    /**
    * Вывод значения характеристики
    */
    function UID_addseamplysort_hook($obj,$row,$rout) {
    if($rout == 'MIDDLE'){
    PHPShopObj::loadClass('sort');
    $search= new PHPShopSortSearch('Тип загрузки');
    $obj->set('addseamplysort',$search->search(unserialize($row['vendor_array'])));
    }
    }
    $addHandler=array
    (
    'UID'=>'UID_addseamplysort_hook',
    );

    Для вывода характеристики используем класс PHPShopSortSearch с параметров в виде имени требуемой характеристики.

  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopshop="php/hook/sort.hook.php";

Изменение сортировки товара по дате в спецпредложениях

Требуется изменить сортировку по умолчанию в каталоге товаров на странице /spec/ на вывод товаров в убывающем порядке на основе параметра даты создания/изменения товара.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/spec.hook.php с содержанием

    /**
    * Изменение сортировки товара в спецпредложениях
    */
    function query_filter_speccore_hook() {
    if (empty($_GET['f']) and empty($_GET['f']) and empty($_GET['s']))
    return array('order' => 'datas desc');
    }
    $addHandler = array
    (
    'query_filter' => 'query_filter_speccore_hook'
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopspec="php/hook/spec.hook.php";

Дописывание в имя товара данных из значений характеристик

Требуется дописать в имя товара значение характеристики Бренд. Имеем имя товара "Машинка для стрижки 5070", требуется выводить "Машинка для стрижки 5070 PHILIPS".

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/name.hook.php с содержанием

    // Глобальный массив данных по требуемой характеристики. Указываем имя Бренд, по которому будет производиться поиск.
    PHPShopObj::loadClass('sort');
    if(empty($GLOBALS['PHPShopSortSearch']))
    $GLOBALS['PHPShopSortSearch'] = new PHPShopSortSearch('Бренд');
    /**
    * Добавление имени характеристики к товару
    */
    function product_grid_hook($obj,$row) {
    global $PHPShopSortSearch;
    // Ищем значение характеристики
    $sort=$PHPShopSortSearch->search(unserialize($row['vendor_array']));
    // Дописываем бренд в конец имени товара
    $obj->set('productName',' ('.$sort.')',true);
    // Дописываем бренд в конец описания
    $obj->set('productDes',' Бренд: '.$sort,true);
    }
    $addHandler=array
    (
    'product_grid'=>'product_grid_hook',
    'UID'=>'product_grid_hook'
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

    [hook]
    phpshopshopcore="php/hook/name.hook.php";
    phpshopproductelements="php/hook/name.hook.php";
    phpshopshop="php/hook/name.hook.php";

    Для вывода значения Мощность вместо Бренд нужно указать требуемое имя в вызове класса $GLOBALS['PHPShopSortSearch'] = new PHPShopSortSearch('Мощность'); Имя характеристики должно совпадать по базе в точности до буквы.

    Добавление пятого товара в ячейке каталога

    В карточке каталога можно выставит параметр вывода товара от 1 до 4.

    1. Создать файл /phpshop/templates/имя шаблона/php/hook/shopcore.hook.php с содержанием

      /**
      * Добавление пятого товара
      */
      function CID_Product_hook($obj,$row,$rout) {
      if($rout == 'START'){
      $obj->SysValue['templates']['main_product_forma_5']="product/main_product_forma_4.tpl";
      $obj->PHPShopCategory->setParam('num_row', 5);
      }
      }
      $addHandler=array
      (
      'CID_Product'=>'CID_Product_hook'
      );
    2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

      [hook]
      phpshopshop="php/hook/shopcore.hook.php";
    3. Создать копию шаблона //phpshop/templates/имя_шаблона/product/main_product_forma_4.tpl под именем main_product_forma_5.tpl

    Снятие лимита на вывод всех товаров

    Ссылка "Показать все" по умолчанию выводит не более 100 товаров из-за возможности наложения лимитов у хостингов. При наличии мощного хостинга и нужды вывода всех товаров, можно изменить этот лимит.

    1. Создать файл /phpshop/templates/имя шаблона/php/hook/shopcore.hook.php с содержанием

      /**
      * Изменение лимита вывода товаров до 500
      */
      function CID_Product_hook($obj,$row,$rout) {
      if($rout == 'START'){
      $obj->max_item=500;
      }
      }
      $addHandler=array
      (
      'CID_Product'=>'CID_Product_hook'
      );
    2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

      [hook]
      phpshopshop="php/hook/shopcore.hook.php";

    Добавление автоматического переноса строк в карточку подробного описания товара

    Необходимо заменять переводы строк n на тег на странице подробного описания.

    1. Создать файл /phpshop/templates/имя шаблона/php/hook/description.hook.php с содержанием

      /**
      * Добавление краткого описания
      */
      function UID_description_hook($obj,$row,$rout) {
      if($rout == "MIDDLE")
      $obj->set('productDes',nl2br($row['content']));
      }
      $addHandler=array
      (
      'UID'=>'UID_description_hook'
      );
    2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

      [hook]
      phpshopshop="php/hook/description.hook.php";
    3. В зависимости от задачи, добавить соответствующую новую переменную @productSmallDescription@ в шаблон вывода товара //phpshop/templates/имя_шаблона/product/main_product_forma_full.tpl.

    Замена информации о наличии товара на складе

    Необходимо заменить надпись при выводе товара "В наличие: кол-во шт." на картинку. Если товар есть в наличии, выводится одна картинка, если товара в наличии нету - выводится другая картинка.

    1. Создать файл /phpshop/templates/имя шаблона/php/hook/items.hook.php с содержанием

      /**
      * Изменение вида информации о складе
      */
      function checkStore_hook($obj,$row) {
      // Изображение наличие на складе
      if(empty($row['items']))
      $obj->set('productSklad',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/items_on.gif'));
      else $obj->set('productSklad',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/items_off.gif'));
      // Изображение товар под заказ
      if(empty($row['sklad']))
      $obj->set('enabledIco',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/sklad_onn.gif'));
      // Изображение наличие иконки к товару
      if(!empty($row['pic_small']))
      $obj->set('picOn',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/pic_on.gif'));
      // Изображение статуса новинки
      if(!empty($row['newtip']))
      $obj->set('newtipIco',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/newtip_ok.gif'));
      // Изображение статуса спецпредложения
      if(!empty($row['spec']))
      $obj->set('newtipIco',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/spec_ok.gif'));
      // Прячем вывод цена и корзины при нулевой цене
      if(!empty($row['price'])) {
      $obj->set('ComStartCart', PHPShopText::comment('<'));
      $obj->set('ComEndCart', PHPShopText::comment('>'));
      $obj->set('productPrice', null);
      $obj->set('productValutaName', null);
      }
      return true;
      }
      $addHandler=array
      (
      'checkStore'=>'checkStore_hook'
      );

      где items_on.gif - путь картинки положительного склада, items_off.gif - отрицательного склада и т.д. Картинки должны лежать в папке //phpshop/templates/имя_шаблона//phpshop/templates/faqbootstrap/images/shop/

    2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

      [hook]
      phpshopshopcore="php/hook/items.hook.php";
    3. В зависимости от задачи, добавить соответствующие новые переменные @newtipIco@, @enabledIco@, @picOn@ в шаблоны вывода товара main_product_forma_х.tpl], где х - значение кол-ва товаров в ряд (1-5).

    Добавление второй цены

    Требуется вывести вторую цену товара.

    1. Создать файл /phpshop/templates/имя шаблона/php/hook/items.hook.php с содержанием

      function checkStore_hook($obj,$row) {
      // Вторая цена
      $obj->set('productPrice2',PHPShopProductFunction::GetPriceValuta($row['id'],$row['price2'],$row['baseinputvaluta']));
      // Если нужны остальные цены
      $obj->set('productPrice3',PHPShopProductFunction::GetPriceValuta($row['id'],$row['price3'],$row['baseinputvaluta']));
      $obj->set('productPrice4',PHPShopProductFunction::GetPriceValuta($row['id'],$row['price4'],$row['baseinputvaluta']));
      $obj->set('productPrice5',PHPShopProductFunction::GetPriceValuta($row['id'],$row['price5'],$row['baseinputvaluta']));
      return true;
      }
      $addHandler=array
      (
      'checkStore'=>'checkStore_hook'
      );
    2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

      [hook]
      phpshopshopcore="php/hook/items.hook.php";
    3. Добавить переменную @productPrice2@ во все требуемые шаблоны вывода товара из папки /phpshop/templates/имя шаблона/product/main_product_forma_XX.tpl

    Добавление второй цены в другой валюте

    Требуется вывести вторую цену товара в другой валюте рядом с первой.

    1. Создать файл /phpshop/templates/имя шаблона/php/hook/items.hook.php с содержанием

      function checkStore_hook($obj,$row) {
      global $PHPShopValutaArray;
      // ИД второй валюты
      $duo_currency=5;
      $Valuta=$PHPShopValutaArray->getArray();
      $format = $obj->PHPShopSystem->getSerilizeParam("admoption.price_znak");
      // Если валюта совпадает
      if($_SESSION['valuta'] == $duo_currency) {
      $currency=$obj->PHPShopSystem->getValue('dengi');
      }
      else
      $currency=$duo_currency;
      $price=PHPShopProductFunction::GetPriceValuta($row['id'],$row['price'],$row['baseinputvaluta']);
      $code=$Valuta[$currency]['code'];
      // Если валюта совпадает
      if($_SESSION['valuta'] == $duo_currency) {
      echo 1;
      $price=$price/$Valuta[$duo_currency]['kurs'];
      }
      else {
      $price=$price*$Valuta[$currency]['kurs'];
      }
      // Наценка
      $price=($price+(($price*$obj->PHPShopSystem->getValue('percent'))/100));
      $obj->set('productPrice2',number_format($price,$format,'.','').' '.$code);
      return true;
      }
      $addHandler=array
      (
      'checkStore'=>'checkStore_hook'
      );
    2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

      [hook]
      phpshopshopcore="php/hook/items.hook.php";
    3. Добавить переменную @productPrice2@ во все требуемые шаблоны вывода товара из папки /phpshop/templates/имя шаблона/product/main_product_forma_XX.tpl

    4. Указать ИД требуемой валюты для второй цены в переменной $duo_currency.