Управление категориями товаров
Стандартные шаблоны партнерских магазинов PowerPartners.ru задают и позволяют оперировать лишь с ограниченным набором категорий товаров, единым для всех партнерских магазинов. Однако, зачастую, возникает необходимость создать свои категории, распределив по ним товары в соответствии с некоторыми правилами.
Наиболее часто это задача возникает при SEO-оптимизации партнерских магазинов с целью сокрытия от поисковых систем факта участия магазина в партнерской программе и уникализации структуры магазина.
Определение стандартных категорий в партнерских магазинах
Стандартные категории товаров определяются хэш-массивом $nav
в файле base_cat.php. Массив определяется следующим образом:
$nav = array(
'stab' => array(
'xpath' => "//product[category='Стабилизатор напряжения']",
'caption' => "Стабилизаторы напряжения",
'title' => "Стабилизаторы напряжения | Интернет магазин электрооборудования",
'keywords' => "стабилизатор напряжения",
'description' => ""
),
....
);
Каждый элемент этого массива задает категорию товаров. В качестве ключа выступает код категории, который используется как
параметр при обращении к скрипту cat.php?cat=xxx
, отображающему список товаров из заданной категории.
Значением каждого элемента массива $nav
является вложенный хэш-массив, в состав которого входят обязательные элементы (xpath
),
рекомендуемые (caption
, title
, keywords
, description
), а так же элементы, произвольно определяемые веб-мастером
и участвующие в формировании страницы категории.
Обязательный элемент xpath
определяет для данной категории XPath-запрос,
при помощи которого осуществляется выборка товаров данной категории из XML-файла.
Остальные элементы массива не являются обязательными, и служат лишь для передачи переменных в шаблон страницы категории. Однако, все шаблоны
партнерских магазинов используют переменные caption
, title
, keywords
и description
при формирования страницы
категории, для отображения текста h1, заголовка страницы, meta-тега ключевых слов и meta-тега описания соответственно.
Поэтому, в случае использования стандартных шаблонов, крайне желательно корректно определять эти элементы.
Переопределение категорий
Переопределение категорий товаров осуществляется путем изменения массива $nav
. Переопределение должно осуществляться в файле
/custom/custom_cat.php
, поскольку изменения оригинального файла cat.php
могут быть затерты
системой автоматического обновления. Скрипт /custom/custom_cat.php
вызывается, при условии
существования файла, после стандартного заполнения массива категорий $nav
, но, перед его использованием и
позволяет переопределить массив категорий.
Разберем практический пример, допустим, мы хотим сделать следующие категории товаров на партнерском сайте:
-
Стабилизаторы напряжения Sassin SVC
- Однофазные стабилизаторы Sassin SVC
- Трехфазные стабилизаторы Sassin SVC
-
Стабилизаторы Sassin РСН
- Однофазные стабилизаторы Sassin РСН
- Трехфазные стабилизаторы Sassin РСН
Полностью исключив из ассортимента стабилизаторы напряжения Энергия и бензогенераторы Etalon. Плюс к этому мы хотим снабдить каждую категорию некоторым описанием, которое будет выводится на странице вместе с товарами этой категории.
Для этого, создаем в каталоге /custom/
файл custom_cat.php
следующего содержания:
<?php
$nav['svc'] = array(
'xpath' => "//product[category='Стабилизатор напряжения' and trademark='Sassin' and type=1]",
'caption' => "Стабилизаторы напряжения Sassin SVC",
'title' => "Стабилизаторы напряжения Sassin SVC",
'keywords' => "стабилизатор напряжения Sassin SVC",
'description' => "список стабилизаторов напряжения Sassin SVC",
'text' => "Сопроводительный текст с стабилизаторам Sassin SVC",
);
$nav['svc1'] = array(
'xpath' => "//product[category='Стабилизатор напряжения' and trademark='Sassin' and type=1 and phases=1]",
'caption' => "Однофазные стабилизаторы напряжения Sassin SVC",
'title' => "Однофазные стабилизаторы напряжения Sassin SVC",
'keywords' => "однофазный стабилизатор напряжения Sassin SVC",
'description' => "список однофазных стабилизаторов напряжения Sassin SVC",
'text' => "Сопроводительный текст с однофазным стабилизаторам Sassin SVC",
);
$nav['svc3'] = array(
'xpath' => "//product[category='Стабилизатор напряжения' and trademark='Sassin' and type=1 and phases=3]",
'caption' => "Трехфазные стабилизаторы напряжения Sassin SVC",
'title' => "Трехфазные стабилизаторы напряжения Sassin SVC",
'keywords' => "трехфазный стабилизатор напряжения Sassin SVC",
'description' => "список трехфазных стабилизаторов напряжения Sassin SVC",
'text' => "Сопроводительный текст с трехфазным стабилизаторам Sassin SVC",
);
$nav['rsn'] = array(
'xpath' => "//product[category='Стабилизатор напряжения' and trademark='Sassin' and type=2]",
'caption' => "Релейные стабилизаторы Sassin РСН",
'title' => "Релейные стабилизаторы Sassin РСН",
'keywords' => "стабилизатор напряжения Sassin РСН",
'description' => "список релейных стабилизаторов Sassin РСН",
'text' => "Сопроводительный текст с релейным стабилизаторам Sassin РСН",
);
$nav['rsn1'] = array(
'xpath' => "//product[category='Стабилизатор напряжения' and trademark='Sassin' and type=2 and phases=1]",
'caption' => "Релейные однофазные стабилизаторы Sassin РСН",
'title' => "Релейные однофазные стабилизаторы Sassin РСН",
'keywords' => "однофазный стабилизатор напряжения Sassin РСН",
'description' => "список однофазных релейных стабилизаторов Sassin РСН",
'text' => "Сопроводительный текст с однофазным релейным стабилизаторам Sassin РСН",
);
$nav['rsn3'] = array(
'xpath' => "//product[category='Стабилизатор напряжения' and trademark='Sassin' and type=2 and phases=3]",
'caption' => "Трехфазные релейные стабилизаторы Sassin РСН",
'title' => "Трехфазные релейные стабилизаторы Sassin РСН",
'keywords' => "трехфазный релейный стабилизатор Sassin РСН",
'description' => "список трехфазных релейных стабилизаторов Sassin РСН",
'text' => "Сопроводительный текст с трехфазным релейным стабилизаторам Sassin РСН",
);
Таким образом, мы переопределили категории товаров партнерского магазина, создав новые категории с кодами
svc
, svc1
, svc3
, rsn
, rsn1
и rsn3
. Теперь, обращение по URL
http://mysite.ru/cat.php?cat=rsn1
отобразится список однофазных релейных стабилизаторов напряжения Sassin РСН.
При построении XPath запросов мы дополнительно задействовали в условиях узлы trademark
и type
XML-файла
товаров.
Теперь, для того чтобы включить новые категории в навигацию сайта, необходимо внести изменения в шаблоны магазина.
Для этого, в нужный .tmpl-файл каталога /theme/
(обычно, меню навигации по категориям расположено в шаблоне
header.tmpl
) добавляем следующий HTML-код:
<h3>Продукция</h3>
<ul>
<li>
<a href="cat.php?cat=svc">Стабилизаторы напряжения Sassin SVC</a>
<ul>
<li><a href="cat.php?cat=svc1">Однофазные стабилизаторы Sassin SVC</a></li>
<li><a href="cat.php?cat=svc3">Трехфазные стабилизаторы Sassin SVC</a></li>
</ul>
</li>
<li>
<a href="cat.php?cat=rsn">Стабилизаторы напряжения Sassin РСН</a>
<ul>
<li><a href="cat.php?cat=rsn1">Однофазные стабилизаторы Sassin РСН</a></li>
<li><a href="cat.php?cat=rsn3">Трехфазные стабилизаторы Sassin РСН</a></li>
</ul>
</li>
</ul>
Кроме того, для каждой категории, мы задали небольшой сопроводительный текст в параметре text
, для его отображения
необходимо внести изменения в шаблон отображения категории товаров /theme/cat.tmpl
. Добавляем в нужное место шаблона
строку
<TMPL_VAR NAME="text">
которая отображает переменную text
определенную для каждой категории в массиве $nav
.
Также существует возможность вставки на страницы категорий html-блоков. Для этого, html-код помещается в файлы в каталоге /custom/cat/
,
и их названия, указывается в специальном параметре include
с указанием идентификаторов html-блоков. Например, так:
$nav['stab'] = array(
'xpath' => "//product[category='Стабилизатор напряжения']",
'caption' => "Стабилизаторы напряжения",
'title' => "Стабилизаторы напряжения | Интернет магазин электрооборудования",
'keywords' => "стабилизатор напряжения",
'description' => "",
'include' => array(
'html_block_header' => 'stabs_header.htm',
'html_block_footer' => 'stabs_footer.htm',
),
);
В этом примере определены 2 html-блока с идентификаторами html_block_header
и html_block_footer
, и указано, что для
категории stab
, содержимое блоков следует брать из файлов stabs_header.htm
и stabs_footer.htm
соответственно.
Теперь в шаблон /theme/cat.tmpl
в нужные места необходимо вставить тэги
<TMPL_VAR NAME="html_block_header">
и
<TMPL_VAR NAME="html_block_footer">
для отображения html-блоков.
Описанная выше методика, в совокупности с возможностями уникализации контента, позволяет веб-мастерам создавать собственные интернет-магазины абсолютно не похожие на другие партнерские веб-ветрины и удачно избегать фильтров поисковых систем, налагаемых на зеркала.