Актуально для версии ShopCMS 3.1.2 VIP
Дополнение добавляет галочку (см. скриншот) в раздел "Расширенный поиск" формы редактирования категории товаров. Если активировать эту функцию - все настройки в разделе расширенного поиска будут наследоваться всеми подкатегорими, находящимися в дочерних отношениях к редактируемой категории (даже если там многоуровневая система подкатегорий).
category_edit_new.jpg 61.5К 71 Количество загрузок:
Внимание! В основном меняем код вручную в файле \admin.php (работает только на версии VIP с открытым исходным кодом).
Инструкция по установке:
1. Открываем файл \admin.php и ищем такой комментарий: // update serarch option settings, выделяем находящийся сразу под этим комментарием код до следующей строки (не включаем ее в выделение!):
if (isset($_FILES["picture"]) && $_FILES["picture"]["name"] && $_FILES["picture"]["size"] >
2. Заменяем выделенный участок на такой код:
// NEW CODE (subcategory submit filter) if (isset($_POST["subcat_filter"])) { $catIDs = recursiveCat((int)$pid); foreach ($catIDs as $key => $categoryID) { schUnSetOptionsToSearch($categoryID); $data = ScanPostVariableWithId(array("checkbox_param")); foreach ($data as $optionID => $val) { schUnSetVariantsToSearch($categoryID, $optionID); if (isset($_POST["select_arbitrarily_".$optionID])) $set_arbitrarily = $_POST["select_arbitrarily_".$optionID]; else $set_arbitrarily = 1; schSetOptionToSearch($categoryID, $optionID, $set_arbitrarily); if ($set_arbitrarily == 0) { $variants = optGetOptionValues($optionID); foreach ($variants as $var) if (isset($_POST["checkbox_variant_".$var["variantID"]])) schSetVariantToSearch($categoryID, $optionID, $var["variantID"]); } } } } // END
3. Далее ищем такой код:
echo ADMIN_SELECT_PARAMETRS_PROMPT; ?></td></tr></table>
и вставляем сразу после него следующее:
<!-- NEW CODE (subcategory filter submit) --> <?php if ($n != "") { ?> <table class="adn"><tr><td align="left" valign="middle" style="padding-left:5px;"> <input type="checkbox" name="subcat_filter" value="1"> </td><td align="left" width="100%"> <label for="subcat_filter" style="color:green; text-decoration:underline;l"> Применить настройки расширенного поиска ко всем дочерним категориям </label></td></tr></table><br /> <?php } ?> <!-- // END -->
4. Теперь открываем файл \core\functions\search_function.php и добавляем новую функцию (я поставил после функции schVariantIsSetToSearch):
// NEW CODE function recursiveCat($categoryID,$arrayID=array()) { $arrayID[]=$categoryID; $data = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE parent=".$categoryID); while ($row = db_fetch_assoc($data)) $arrayID = recursiveCat($row['categoryID'],$arrayID); return $arrayID; } // END
Чистим кэш и пробуем.
Отдельное спасибо badisoft за код функции recursiveCat, которую я спер у него из развесистого фильтра!