Фильтр товаров по городу

Тема в разделе "Общие вопросы", создана пользователем alexrasta, 24 май 2016.

  1. alexrasta

    alexrasta Новичок

    Сообщения:
    20
    Симпатии:
    0
    Здравствуйте,
    Интересует такой вариант как фильтр по городам. Что бы он отображался в хеадере и пользователь мог выбрать город и все товары выводяться которые в этом городе.

    Если нет готового решения ищу кто сделает. Писать в ЛС если что!
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    3.870
    Симпатии:
    936
    Бесплатно не видел. Но думаю кто нибудь реализует 5-10т.р.
     
  3. mars1an

    mars1an Специалист

    Сообщения:
    621
    Симпатии:
    499
    Пусть пока будет тут.
    Реализации такого решения в АЛЬФА версии. Подходит только для OC 2.2.0.0 с дефолтным шаблоном
    После установки необходимо:
    1. составить список городов в Система-Локализация-Города (только зачем тут, я сам ещё не знаю :));
    2. в настройках магазина, на вкладке Локализация, выбрать город по умолчанию (это по моему всё же лишнее);
    3. в карточках товаров, на вкладке Связи, выбрать необходимые города.
    Ну и получается как-то так:
    screenshot-shop.prime.local 2016-05-26 15-37-26.png screenshot-shop.prime.local 2016-05-26 15-37-51.png screenshot-shop.prime.local 2016-05-26 17-39-31.png screenshot-shop.prime.local 2016-05-26 17-37-39.png screenshot-shop.prime.local 2016-05-26 17-38-00.png

    Есть планы по развитию модификатора, например GeoIP прикрутить, изменение контактов в зависимости от выбранного города, вывод в карточке товара городов где ещё продаётся этот товар, ну и ещё можно придумать что-то ;)
     

    Вложения:

    • city.ocmod.zip
      Размер файла:
      17,8 КБ
      Просмотров:
      29
    Ravilr, Vlad, tsap и 2 другим нравится это.
  4. alexrasta

    alexrasta Новичок

    Сообщения:
    20
    Симпатии:
    0
    mars1an один из тех людей который решился помочь, да ещё и бесплатно. Таким людям только респект и уважения!
     
  5. Vlad

    Vlad Эксперт

    Сообщения:
    3.870
    Симпатии:
    936
    согласен полностью. Не зря звание Специалиста дали ;)
    И тут увидал запрос о котором недавно спрашивали... )) В общем, так держать !!!! ;)
     
    Последнее редактирование: 27 май 2016
  6. mars1an

    mars1an Специалист

    Сообщения:
    621
    Симпатии:
    499
    Да я вообще крутой, спасу нет! А главное - скромный. © Гоблин
     
  7. alexrasta

    alexrasta Новичок

    Сообщения:
    20
    Симпатии:
    0
    Жду на 2.1.ХХ
     
  8. mars1an

    mars1an Специалист

    Сообщения:
    621
    Симпатии:
    499
    Добавил поддержку ОС < 2.2.0.0
    Но пока всё ещё тестовая версия. Не могу избавиться от ошибки при первом посещении сайта - не устанавливается город по умолчанию и соответственно одна из переменных не существует.
    Может кто пнёт в нужном направлении? Вот тут это
    Код:
    <file path="index.php">
            <operation>
                <search><![CDATA[
                    $registry->set('affiliate', new Affiliate($registry));
                ]]></search>
                <add position="after"><![CDATA[
                    // City
                    $citys = array();
    
                    $query = $db->query("SELECT * FROM " . DB_PREFIX . "city");
    
                    foreach ($query->rows as $result) {
                        $citys[$result['city_id']] = $result;
                    }
                   
                    if (isset($session->data['city']) && array_key_exists($session->data['city'], $citys)) {
                        $city_id = $session->data['city'];
                    } elseif (isset($request->cookie['city']) && array_key_exists($request->cookie['city'], $citys)) {
                        $city_id = $request->cookie['city'];
                    } else {
                        $city_id = $config->get('config_city');
                    }
                   
                    if (!isset($session->data['city']) || $session->data['city'] != $city_id) {
                        $session->data['city'] = $city_id;
                    }
    
                    if (!isset($request->cookie['city']) || $request->cookie['city'] != $city_id) {
                        setcookie('city', $city_id, time() + 60 * 60 * 24 * 30, '/', $request->server['HTTP_HOST']);
                    }
    
                    $config->set('config_city_id', $city_id);
                    $registry->set('city', $city_id);
                ]]></add>
            </operation>
        </file>
    а обращение идет в контроллере пользовательской части
    Код:
    $data['city_id'] = $this->session->data['city'];
    и получаем ошибку
    Код:
    Notice: Undefined index: city in /var/www/old_oc/catalog/controller/common/city.php on line 10
     

    Вложения:

  9. Vlad

    Vlad Эксперт

    Сообщения:
    3.870
    Симпатии:
    936
    при первом посещении вот это работает ??
    PHP:
    if (!isset($session->data['city']) || $session->data['city'] != $city_id) {
                        
    $session->data['city'] = $city_id;
                    }
     
  10. mars1an

    mars1an Специалист

    Сообщения:
    621
    Симпатии:
    499
    Да.
    В предыдущем условии он получает city_id из настроек в админке, если он не определён сессией или куками (первое посещение)
    Код:
    $city_id = $config->get('config_city');
    Что-то я сегодня плохо соображаю )) видимо последствия вчерашней посиделки с земляками. Завтра включу E_ALL и отдебажу, а сегодня пойду лучше физически поработаю.
     
    alexrasta нравится это.
  11. mars1an

    mars1an Специалист

    Сообщения:
    621
    Симпатии:
    499
    Ну есть же тут ещё программисты, и получше меня, почему у меня не получается запихать в сессию значение из БД setting? при первом посещении сайта?
     
  12. Ален

    Ален Эксперт

    Сообщения:
    2.055
    Симпатии:
    634
    сегодня все проверю и скажу что да как..
     
  13. Ален

    Ален Эксперт

    Сообщения:
    2.055
    Симпатии:
    634
    окмод не может работать с index.php , а вы пытаетесь. В этом и ошибка.
     
    mars1an нравится это.
  14. f4rr3ll1990

    f4rr3ll1990 Пользователь

    Сообщения:
    34
    Симпатии:
    1
    а не подскажете как можно получить название города в карточке товара?
    мне нужно реализовать чтобы при выборе города отображались все товары, но в карточке выводился город у которого товар в наличии.
    Я убрал из выборки условие:
    Код:
    AND ( p2ct.city_id = '" . (int)$this->config->get('config_city_id') . "' OR p2ct.city_id = '0' ) 
    товары стали отображаться все, а вот получить город в карточке затрудняюсь ((
     
  15. mars1an

    mars1an Специалист

    Сообщения:
    621
    Симпатии:
    499
    Добавил в задачи, если будет время на выходных не жалко, то напишу ))
     
    f4rr3ll1990 нравится это.
  16. bitpad

    bitpad Новичок

    Сообщения:
    1
    Симпатии:
    0
    Добрый день! Нет, случайно, рабочей версии для 2.3?