Фильтр товаров simplacms

Тема в разделе "Simplacms", создана пользователем kycher666, 5 янв 2016.

  1. kycher666

    kycher666 Создатель

    Регистр.:
    17 ноя 2012
    Сообщения:
    43
    Симпатии:
    10
    Есть модуль который фильтрует в категориях товары по цене и вариантам.
    Вот он на нашем форуме - ссылка
    Но в нем проблема!
    Когда у варианта товара количество 0, то фильтр все равно его показывает.

    Подскажите куда и какое подставить условие, чтобы фильтр не отображал товаров которых нет в наличии.
     

    Вложения:

  2. kycher666

    kycher666 Создатель

    Регистр.:
    17 ноя 2012
    Сообщения:
    43
    Симпатии:
    10
    проблема актуальна, где условие поставить чтоб заработало? За помощь на телефон 200р!
     
  3. kycher666

    kycher666 Создатель

    Регистр.:
    17 ноя 2012
    Сообщения:
    43
    Симпатии:
    10
    ну неужели за два месяца нет человека которому необходим мультифильтр для simplacms ? И нет php спеца который поможет за бабло, задача уверен для профи php фуфло на 5 минут))
     
    Последнее редактирование: 2 фев 2016
  4. yaskin

    yaskin Создатель

    Заблокирован
    Регистр.:
    1 фев 2010
    Сообщения:
    25
    Симпатии:
    14
    Может ты не весь код вставил?
    В инструкции явно написано
    PHP:
    if(!empty($filter['in_stock']) && $filter['in_stock'])
    $instock_filter $this>db>placehold('AND (v.stock>0 OR v.stock IS NULL)');
    на форуме симплы тоже обсуждалось
     
    kycher666 нравится это.
  5. kycher666

    kycher666 Создатель

    Регистр.:
    17 ноя 2012
    Сообщения:
    43
    Симпатии:
    10
    Спасибо за ответ! Да, я понимаю это) Времени благо очень много потратил и на попытки исправить данный баг и на поиски кто поможет за адекватные деньги( Да и не понятно, тот кто использует фильтр, что легко живут с этим?)
    Средняя зп за час 150-250р, а никому не надо, ну что ж завидую всем им, раз уж это уже не деньги и проектов и работы у всех завались.
    Я предлагал до 300руб. или пиво или обмен на seo аудит или на парсинг любых данных или на подбор слов, бартер к слову... а работа-то сто пудово на 15 минут для не такого тупого как я.

    Ну лан, хватит плакаться, попробую тут написать как работает скрипт этот, а если мало ли, поправьте, направьте, если уж что в голову придет...

    Прикладываю текстовый файл из модуля, там описывается код модуля и что куда...

    api/Variants.php
    Метод get_value_variants.
    Добавляем метод в класс Variants. Получаем весь список вариантов товаров по заданным параметрам (индексы продуктов).
    Я всё думаю, что именно тут скрывается баг... так как stock' как раз кол-во варианта товара, из таблицы s_variants, по умолчанию он NULL (50), но если проставиться 0, то как раз возникает данная ситуация.
    Код:
    if(!empty($filter['in_stock']) && $filter['in_stock'])
    $instock_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)');
    api/Products.php
    Метод get_id_products
    Тут тоже есть in_stock_filter Думал может в нем проблема...
    Изменения в методе get_products
    Изменения в методе count_products

    view/ProductsView.php
    Изменения в методе fetch
    Добавляем обрабочик входного параметра $_GET[‘v’]
    Формируем вывод вариантов в фильтр

    design/[THEME]/html/products.tpl
    Вывод фильтра
    Переключение на выбранный вариант

    Больше ничего не менялось, все отлично работает, кроме этого бага с кол-вом
     

    Вложения:

  6. kycher666

    kycher666 Создатель

    Регистр.:
    17 ноя 2012
    Сообщения:
    43
    Симпатии:
    10
    yaskin - вот пока писал, вы прокомментировали)) Да да именно там я менял и ставил условия и что только не делал)
     
  7. yaskin

    yaskin Создатель

    Заблокирован
    Регистр.:
    1 фев 2010
    Сообщения:
    25
    Симпатии:
    14
    попробуйте заменить
    PHP:
    if(!empty($filter['in_stock']))
    на
    PHP:
    if(isset($filter['in_stock']))
    Функция empty считает $filter['in_stock'] = 0 также пустым значением, поэтому и не отрабатывает. В этом плане функция isset определяет наличие самого значения фильтр и отрабатывает.
     
    kycher666 нравится это.
  8. kycher666

    kycher666 Создатель

    Регистр.:
    17 ноя 2012
    Сообщения:
    43
    Симпатии:
    10
    Да я это пробовал isset, и еще раз сейчас проверил, неа (
    Код:
      if(isset($filter['in_stock']) && $filter['in_stock'])
               $instock_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)'); 
    вообще не уверен что это вообще срабатывает так как instock_filter присваиваю любой бред и ничего не меняется в работе...
     
  9. yaskin

    yaskin Создатель

    Заблокирован
    Регистр.:
    1 фев 2010
    Сообщения:
    25
    Симпатии:
    14
    может CTRL+F5 и очистка кэша поможет?
     
    kycher666 нравится это.
  10. kycher666

    kycher666 Создатель

    Регистр.:
    17 ноя 2012
    Сообщения:
    43
    Симпатии:
    10
    да был бы рад)))) Я тут комплейтед все папки от паранои уже каждый раз чищю, и у меня в мозиле ctr+r чиститься, это не помогает(