Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

lavka

Пользователи
  
  • Публикаций

    240
  • Зарегистрирован

  • Посещение

Все публикации пользователя lavka

  1. В файле catalog/model/localisation/zone.php изменить запрос в функции getZonesByCountryId: public function getZonesByCountryId($country_id) { $zone_data = $this->cache->get('zone.' . (int)$country_id); if (!$zone_data) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND status = '1' ORDER BY zone_id!=2761,zone_id!=2722,zone_id!=2785,name"); $zone_data = $query->rows; $this->cache->set('zone.' . (int)$country_id, $zone_data); } return $zone_data; } Было ORDER BY name Стало ORDER BY zone_id!=2761,zone_id!=2722,zone_id!=2785,name Москва, МО, Питер стали впереди остальных. Список zone_id:
  2. lavka

    filter Pro [Поддержка]

    Это из-за того, что автор использует ajax-пагинацию (без перезагрузки страницы) вместо стандартной.
  3. Подскажите, пожалуйста, как сделать, чтобы при определенной сумме товаров в корзине все способы доставки становились бесплатными, с ценой 0 рублей. Модуль "бесплатная доставка" не подходит, поскольку клиенту нужно предоставить именно выбор способа - курьер, почта или терминал и соответственно, для каждого способа свои поля для заполнения. Точно видел магазин на опенкарте, у которого так сделано.
  4. Здравствуйте. Нажимаю кнопку "Обновить" и в списке доставок пропадает вообще все, даже которая была выбрана пользователем. Установлена Simple доставка, в которой нет проверки на страну, индекс и город. Также отключил проверку на эти поля в /admin/controller/sale/order.php, чтобы можно было менять заказ. Даже если заполняю индекс и страну с городом, доставки не появляются. :(
  5. Подниму тему - актуально. После ввода купона или сертификата СУММА становится меньше границы бесплатной доставки, а ее все равно можно выбрать.
  6. Разумеется, это будет идеально. Единственное, я пользуюсь этим модулем https://opencartforum.com/topic/10288-csv-price-pro-importexport/, поскольку в нем все прямо и однозначно - что скормил, то и получил.
  7. К сожалению, я не сумел составить запрос, чтобы получить цену. Но в любом случае спасибо вам за помощь!
  8. Ха, я с ним только что вот и обсуждал вопрос в личке. Он говорит, что модуль формально подходит - можно задать опциям артикулы, но работать с ними некому, импорт-экспорт не происходит и нужно допиливать.
  9. Вот это реальная работающая штука для любых модулей - Акции, Рекомендуемые и прочее. Нужно только учитывать разные переменные.
  10. Мне кажется, это может быть решением. Только не импорта-экспорта опции, а обновления наличия для опции по файлу из CSV Основная проблема в том, как обновлять наличие - ведь поставщик дает наличие по каждому артикулу.
  11. От поставщика получаю информацию в CSV в формате Товар............Артикул Платье S.......Pl_S Платье M......Pl_M Платье L.......Pl_L Так как это одна и та же модель, в магазине лежат три одинаковых на вид товара лишь с разными размерами в названии, что очень неудобно для клиента (например, модель обуви в шести вариантах по количеству доступных размеров) Сейчас пользуюсь модулем CSV Import/Export и он обновляет точно по артикулам поставщика. Хочу свести подобные товары в одну позицию в каталоге, но не знаю, как тогда будет происходить обновление количества от поставщика. Какие могут быть решения этой проблемы?
  12. Начну с конца. Про привязку к магазину - вы, очевидно, о AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' Я не могу пока понять принцип использования оператора JOIN, так что не весь ваш код разобрал. Я взял второй запрос из моего файла и дописал в него условие совпадения производителя: SELECT * FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p2c.category_id IN (SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "') AND p.manufacturer_id IN (SELECT manufacturer_id FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product_id . "') AND p.product_id != '" . (int)$product_id . "' AND p.status = '1' AND p.quantity > 0 AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY RAND() LIMIT 0," . $num_related Правильно? Вроде бы работает, но я, как вы понимаете, не уверен в своем колдунстве. Как я могу получить цену товара? Брать как-то из базы или подставлять переменную через PHP? Как сделать вычитание определенного процента от цены? Дописать "-PRICE*0.1"?
  13. Если честно - да. Я худо-бедно разобрался с PHP, но SQL для меня дремучий лес, хотя я просмотрел уже какие только можно готовые запросы, чтобы уловить семантику языка. :) PS. Действительно извиняюсь за потребительский подход.
  14. Хочу сделать автоматический выбор похожих товаров в файле /catalog/model/catalog/product.php Добавил в функцию public function getProductRelated($product_id) следующий код: (код взял из http://www.opencart.com/index.php?route=extension/extension/info&extension_id=14277&filter_search=Auto%20Related) Теперь выводятся 2 товара того же производителя и еще 4 из категории товара. Мне нужно, чтобы выводились: 2 товара того же производителя, из той же категории и близкие по цене 4 товара из той же категории близкие по цене Подскажите, пожалуйста, правильный запрос. Заранее благодарю!
  15. Сам спросил - сам ответил. В файле catalog/model/catalog/product.php копируем всю функцию public function getProduct($product_id) и вставляем ее сразу ниже, изменив имя на public function getFeaturedProduct($product_id) public function getFeaturedProduct($product_id) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '" . $this->NOW . "') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '" . $this->NOW . "')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); if ($query->num_rows) { return array( 'seo_title' => $query->row['seo_title'], 'seo_h1' => $query->row['seo_h1'], 'product_id' => $query->row['product_id'], 'name' => $query->row['name'], 'description' => $query->row['description'], 'meta_description' => $query->row['meta_description'], 'meta_keyword' => $query->row['meta_keyword'], 'tag' => $query->row['tag'], 'model' => $query->row['model'], 'sku' => $query->row['sku'], 'upc' => $query->row['upc'], 'ean' => $query->row['ean'], 'jan' => $query->row['jan'], 'isbn' => $query->row['isbn'], 'mpn' => $query->row['mpn'], 'location' => $query->row['location'], 'quantity' => $query->row['quantity'], 'stock_status' => $query->row['stock_status'], 'image' => $query->row['image'], 'manufacturer_id' => $query->row['manufacturer_id'], 'manufacturer' => $query->row['manufacturer'], 'price' => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']), 'special' => $query->row['special'], 'reward' => $query->row['reward'], 'points' => $query->row['points'], 'tax_class_id' => $query->row['tax_class_id'], 'date_available' => $query->row['date_available'], 'weight' => $query->row['weight'], 'weight_class_id' => $query->row['weight_class_id'], 'length' => $query->row['length'], 'width' => $query->row['width'], 'height' => $query->row['height'], 'length_class_id' => $query->row['length_class_id'], 'subtract' => $query->row['subtract'], 'rating' => round($query->row['rating']), 'reviews' => $query->row['reviews'] ? $query->row['reviews'] : 0, 'minimum' => $query->row['minimum'], 'sort_order' => $query->row['sort_order'], 'status' => $query->row['status'], 'date_added' => $query->row['date_added'], 'date_modified' => $query->row['date_modified'], 'viewed' => $query->row['viewed'] ); } else { return false; } } Затем в файле catalog/controller/module/featured.php на строке 34 меняем $product_info = $this->model_catalog_product->getProduct($product_id) на $product_info = $this->model_catalog_product->getFeaturedProduct($product_id) Теперь у Рекомендуемых своя функция и мы можем решать, отображать ли в ней товары с остатком 0.
  16. Если сделать это изменение во всех местах, то товар с наличием 0 становится недоступен даже по прямой ссылке. Я решил следующим образом: дописал "AND p.quantity > 0" везде, кроме первого места в файле: public function getProduct($product_id) $query= В этой переменной я оставил как было - "p.status = '1'". Во всех местах товары не отображаются, но по прямой ссылке доступен. Проблема: Если товар добавлен в рекомендуемые - он отображается, даже если его нет. Исследование: Выяснил, что модуль Рекомендуемые (catalog/controller/module/featured.php) не имеет своей собственной функции выбора продуктов, как остальные модули (Bestsellers (getBestSellerProducts), Latest (getLatestProducts), Special (getProductSpecials), Related (getProductRelated)). Он пользуется общей функцией getProduct, в которой я не могу вписать "AND p.quantity > 0", потому что тогда товар недоступен по прямой ссылке. Как быть? Может кто-нибудь накидать функцию для Featured?
  17. Интересное предложение, спасибо. А вы уверены, что так сделать нельзя? У многих конкурентов видел это (не опенкарт) Не могу пока разобраться с апдейтами - сайт в индексе с начала марта, после изменения SEO URL категорий (ставили редиректы со старых урлов) прошло уже три недели, а в выдаче гугла есть старые SEO URL. А яндекс и вовсе показывает не основной домен, а зеркало в зоне рф...
  18. Подскажите, пожалуйста, как сделать редирект в ту категорию, где был отключенный/удаленный товар? Пользователь приходит из поиска и получает 404 страницу, а нужно, чтобы было так: Заходит на несуществующую страницу www.мойсайт.ру/категория/товар.html Попадает на www.мойсайт.ру/категория/
  19. Слушайте, само прошло. Не знаю, в чем было дело - никакие действия не предпринимал.
  20. ОС15511 Пример: Установлено округление цены до рублей, без копеек. Товар стоит 2550 и клиент к нему применяет купон на скидку на 15%. Математически это должно быть так 2550 - 382,5 = 2167,5. Округляя цену, к оплате 2168 рублей. Но магазин помимо итоговой цены округляет и скидку, так что клиент видит математику: 2550 - 383 = 2168 Что просто дико и Пифагор с Евклидом и Лобачевским негодуют. Как можно это исправить? Доводить цены до целых сотен не хочется. Может, показать копейки в скидке и округлять только итог? Это реально сделать? Какие еще идеи?
  21. И не забыть поотключать подсчет товаров в категории. В настройках и даже в коде (делали по этой статье http://opencart.in.ua/tormozit-opencart-chast-1/) 15000 стали достаточно сносно работать, страница открывается максимум полторы секунды
  22. OC15511 Поставщик не сообщает количество товара на складе, только факт наличия, то есть все товары в магазине в количестве 1. Внес изменение, чтобы в магазине не отображался товар с остатком 0. Как можно сделать, чтобы покупатель мог заказать несколько единиц товара одного вида, если количество на складе 1, но не мог, если количество 0? Сейчас если выключаю возможность заказа при недостатке на складе, то заказать 2 единицы товара уже невозможно. Заранее спасибо.
  23. Здравствуйте. OC15511, установлен Simple заказ (кажется, так называется) Включаю возможность бесплатной доставки при сумме от 3000 рублей, например. При заказе в выборе способа доставки Бесплатной нет (в корзине товара на 10000 рублей). Если принудительно в настройках модуля доставки вывести Бесплатную, ее переключатель серый, недоступный. Любой другой способ при включении сразу же доступен пользователю для выбора. В чем может быть дело?

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.