Обычный - категория показывается так же и там же, где и всегда.
Производитель - категория НЕ ПОКАЗЫВАЕТСЯ нигде кроме бокового блока "Производители".
Еще что-нибудь - Категория НЕ ПОКАЗЫВАЕТСЯ нигде кроме блока "Еще что-нибудь", который Вы напишете сами .
Главная радость с такого модуля "Производители" относительно других в том, что по ссылке на производителя поисковик попадает
не на страницу результата поиска по характеристике "Производитель" с одними и теми же метатегами и кейвордсами у разных производителей,
а в полноценную категорию со своим описанием и метатегами.
Заполняются эти категории путем прописывания товару соответствующей дополнительной категории.
Comment: В таблицу категорий (xxxx_categories, CATEGORIES_TABLE) добавлено поле shadow TINYINT(1) DEFAULT 0.
shadow = 0 - Обычная категория
shadow = 1 - Производитель
shadow = 2 - Еще что-нибудь (на будущее)
Соответственно, если где-то в стороннем блоке производится SQL-запрос для получения списка категорий,
то для непопадания "лишних" категорий в результат надо в запрос добавить условие shadow=0.
В принципе, можно использовать этот модуль и не для "Производителей" а, например, для показа двух раздельных каталогов в двух разных местах сайта.
Спонсор: Lenivec
1.JPG 10.38К 95 Количество загрузок:
Установка:
----------
1. копируем файлы (они не совпадают по имени со штатными, можно смело копировать).
providers_menu.tpl.html -> core/tpl/user/[шаблон]/blocks
addon.php -> core/includes/admin
Файл addon.php нужен ОДИН РАЗ для создания в таблицах новых полей.
После первого же захода в админку его можно удалить, если он не удалился сам.
2. в файле admin.php
2.1 после второго (!) вхождения строки (т.е. вставляем в поиск эту строку и первую найденную пропускаем)
", allow_products_search=".$allow_products_search." ".", show_subcategories_products=".$show_subcategories_products." ".
вставляем
# BEGIN Providers-from-category
", shadow=".(int)$_POST["shadow"].
# END Providers-from-category
2.2 после строк
echo ADMIN_SHOW_PRODUCT_IN_SUBCATEGORY;
?></label></td></tr>
вставляем
<!-- BEGIN Providers-from-category -->
<tr>
<td align="left">
<select name='shadow'>
<option value="0"<?php if ($row['shadow'] == 0) echo ' selected'?>>Обычная</option>
<option value="1"<?php if ($row['shadow'] == 1) echo ' selected'?>>Производитель</option>
<option value="2"<?php if ($row['shadow'] == 2) echo ' selected'?>>Еще что-нибудь</option>
</select>
</td>
<td align="left"> Тип категории</td>
</tr>
<!-- END Providers-from-category -->
2.3 перед вторым (!) вхождением строки (т.е. вставляем в поиск эту строку и первую найденную пропускаем)
$updatedValues = ScanPostVariableWithId(array("option_value", "option_radio_type"));
вставляем
# BEGIN Providers-from-category
db_query("UPDATE ".PRODUCTS_TABLE." SET shadow=".(isset($_POST['shadow']) ? 1 : 0)." WHERE productID=".(int)$productID);
# END Providers-from-category
3. в файле category_functions.php
3.1 в функции catGetCategoryCompactCList
вместо строки
" where parent=1 ".
вставляем
# BEGIN Providers-from-category
#" where parent=1 ".
" where parent=1 AND shadow=0".
# END Providers-from-category
3.2 в функции _recursiveGetCategoryCList
после строки
$row = $fc[(int)$rcat[$i]];
вставляем
# BEGIN Providers-from-category
if (!isset($row['shadow']) || $row['shadow'] == 0)
{
# END Providers-from-category
перед строкой
return $result;
вставляем закрывающую фигурную скобку
# BEGIN Providers-from-category
}
# END Providers-from-category
3.3 в функции catGetSubCategories
вместо строки
$q = db_query("select categoryID from ".CATEGORIES_TABLE." where parent=".(int)$categoryID);
вставляем
# BEGIN Providers-from-category
#$q = db_query("select categoryID from ".CATEGORIES_TABLE." where parent=".(int)$categoryID);
$q = db_query("select categoryID from ".CATEGORIES_TABLE." where parent=".(int)$categoryID." AND shadow=0");
# END Providers-from-category
3.4 в функции catGetCategoryById
после строки
" products_count_admin, sort_order, viewed_times, allow_products_comparison, allow_products_search, ".
вставляем
# BEGIN Providers-from-category
"shadow,".
# END Providers-from-category
4. в файле index.php
строку
$q = db_query("select categoryID, name, products_count, products_count_admin, parent, picture, subcount FROM ".CATEGORIES_TABLE." ORDER BY sort_order, name");
заменяем на
# BEGIN Providers-from-category
#$q = db_query("select categoryID, name, products_count, products_count_admin, parent, picture, subcount FROM ".CATEGORIES_TABLE." ORDER BY sort_order, name");
$q = db_query("select categoryID, name, products_count, products_count_admin, parent, picture, subcount, shadow FROM ".CATEGORIES_TABLE." ORDER BY sort_order, name");
# END Providers-from-category
5. в файле pricelist.php в функции pricessCategories
строку
" where parent=".(int)$parent." order by sort_order, name");
меняем на
# BEGIN Providers-from-category
#" where parent=".(int)$parent." order by sort_order, name");
" where parent=".(int)$parent." AND shadow=0 order by sort_order, name");
# END Providers-from-category
6. подключаем в "Управление блоками" файл providers_menu.tpl.html как боковой блок. В нем будут показаны категории, у которых параметр "Тип категории" выставлен в "Производители".