Здравствуйте, Интересует такой вариант как фильтр по городам. Что бы он отображался в хеадере и пользователь мог выбрать город и все товары выводяться которые в этом городе. Если нет готового решения ищу кто сделает. Писать в ЛС если что!
Пусть пока будет тут. Реализации такого решения в АЛЬФА версии. Подходит только для OC 2.2.0.0 с дефолтным шаблоном После установки необходимо: составить список городов в Система-Локализация-Города (только зачем тут, я сам ещё не знаю ); в настройках магазина, на вкладке Локализация, выбрать город по умолчанию (это по моему всё же лишнее); в карточках товаров, на вкладке Связи, выбрать необходимые города. Ну и получается как-то так: Есть планы по развитию модификатора, например GeoIP прикрутить, изменение контактов в зависимости от выбранного города, вывод в карточке товара городов где ещё продаётся этот товар, ну и ещё можно придумать что-то
mars1an один из тех людей который решился помочь, да ещё и бесплатно. Таким людям только респект и уважения!
согласен полностью. Не зря звание Специалиста дали И тут увидал запрос о котором недавно спрашивали... )) В общем, так держать !!!!
Добавил поддержку ОС < 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
при первом посещении вот это работает ?? PHP: if (!isset($session->data['city']) || $session->data['city'] != $city_id) { $session->data['city'] = $city_id; }
Да. В предыдущем условии он получает city_id из настроек в админке, если он не определён сессией или куками (первое посещение) Код: $city_id = $config->get('config_city'); Что-то я сегодня плохо соображаю )) видимо последствия вчерашней посиделки с земляками. Завтра включу E_ALL и отдебажу, а сегодня пойду лучше физически поработаю.
Ну есть же тут ещё программисты, и получше меня, почему у меня не получается запихать в сессию значение из БД setting? при первом посещении сайта?
а не подскажете как можно получить название города в карточке товара? мне нужно реализовать чтобы при выборе города отображались все товары, но в карточке выводился город у которого товар в наличии. Я убрал из выборки условие: Код: AND ( p2ct.city_id = '" . (int)$this->config->get('config_city_id') . "' OR p2ct.city_id = '0' ) товары стали отображаться все, а вот получить город в карточке затрудняюсь ((