Перейти к содержимому


Применение настроек расширенного поиска к дочерним категориям

настройки категории фильтр

  • Вы не можете ответить в тему
Сообщений в теме: 5

#1 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 05 June 2013 - 09:30 PM

Применение настроек расширенного поиска к дочерним категориям
Актуально для версии 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, которую я спер у него из развесистого фильтра!
  • 1

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 June 2013 - 08:51 AM

Отдельное спасибо badisoft за код функции recursiveCat, которую я спер у него из развесистого фильтра

Лучше бы ее переименовать, иначе при установленном фильтре будет конфликт. Понятно, что при установленном фильтре эта функция не нужна, т.к. уже есть, но либо это надо описать, либо переименовать без всех этих хлопот.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 06 June 2013 - 09:08 PM

Кофликта быть не должно, т.к. у тебя эта функция прописана в \core\includes\advanced_search_in_category.php и подгружается только в каталог или с твоим последним обновлением вообще по всей клиентской части, а обратный конфликт тоже скорее всего не произойдет, т.к. твоя локальная функция подменит ранее созданную в \functions\ и все, т.к. имена совпадают. Изменение в самой фугкции есть, но чисто косметическое и return идентичен.
  • 1

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 June 2013 - 09:36 PM

и подгружается только в каталог или с твоим последним обновлением вообще по всей клиентской части

Да, торможу. Твое дополнение ведь для админки.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 Valentin

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 146 сообщений
Репутация: 6
Начинающий
  • ГородШахты Ростовская область

Отправлено 20 July 2013 - 03:42 PM

Здравствуйте.
micehide спасибо за модуль, а подскажите почему флажок Применить настройки расширенного поиска ко всем дочерним категориям

не отобразился в главной категории, где всегда ноль товаров?
Думаю, что было бы удобно применить эту возможность сразу ко всем категориям которые находятся в главной.
  • 0
Социально-информационный проект Nvda.ru о бесплатной программе экранного доступа Nvda для незрячих и слабовидящих.
С уважением ко всем Valentin-Kupriyanov.ru

#6 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 22 July 2013 - 11:42 PM

почему флажок Применить настройки расширенного поиска ко всем дочерним категориям не отобразился в главной категории, где всегда ноль товаров?
Думаю, что было бы удобно применить эту возможность сразу ко всем категориям которые находятся в главной.


А разве можно войти в редактирование главной категории? Там, кстати, не всегда 0 товаров, могут и там быть товары, если их туда добавить.
  • 0