Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

efremovxp

Користувачі
  
  • Публікації

    459
  • З нами

  • Відвідування

Усі публікації користувача efremovxp

  1. Сделал, чтобы на акционные товары не было скидки (но, чтобы они учитывались в общей сумме заказа). Может кому понадобится: Находим в /catalog/model/extension/total/sum_discounts.php foreach ($this->discounts as $discount){ switch ($discount['category_mode']){ case 'include': $products_total = 0; foreach ($this->products as $product){ if (array_intersect($product['categories'], $discount['categories'])){ $products_total += $product['total']; } } break; case 'exclude': $products_total = 0; foreach ($this->products as $product){ if (!array_intersect($product['categories'], $discount['categories'])){ $products_total += $product['total']; } } break; default: $products_total = $this->cart->getTotal(); break; } if ($products_total >= $discount['total']){ if (self::MODE_MAX_TOTAL){ $sum = round($products_total * ($discount['percent'] / 100), 2); if ($discount['total'] > $max_total){ $max_total = $discount['total']; $max_sum = $sum; $max_percent = $discount['percent']; } } else { $sum = round($products_total * ($discount['percent'] / 100), 2); if ($sum > $max_sum){ $max_sum = $sum; $max_percent = $discount['percent']; } } } } Меняем на: foreach ($this->discounts as $discount){ switch ($discount['category_mode']){ case 'include': $products_total = 0; $minusprods = 0; foreach ($this->products as $product){ if (array_intersect($product['categories'], $discount['categories'])){ $prodspecial = $this->model_catalog_product->getProduct($product['product_id']); if ((float)$prodspecial['special']){ $minusprods += $product['total']; } $products_total += $product['total']; } } break; case 'exclude': $products_total = 0; $minusprods = 0; foreach ($this->products as $product){ if (!array_intersect($product['categories'], $discount['categories'])){ $prodspecial = $this->model_catalog_product->getProduct($product['product_id']); if ((float)$prodspecial['special']){ $minusprods += $product['total']; } $products_total += $product['total']; } } break; default: $products_total = $this->cart->getTotal(); break; } if ($products_total >= $discount['total']){ if (self::MODE_MAX_TOTAL){ $sum = round($products_total * ($discount['percent'] / 100) - $minusprods * ($discount['percent'] / 100), 2); if ($discount['total'] > $max_total){ $max_total = $discount['total']; $max_sum = $sum; $max_percent = $discount['percent']; } } else { $sum = round($products_total * ($discount['percent'] / 100) - $minusprods * ($discount['percent'] / 100), 2); if ($sum > $max_sum){ $max_sum = $sum; $max_percent = $discount['percent']; } } } }
  2. @dinox Пока еще не ставил, но не увидел в описании, что есть вывод количества свободного места на диске disk_free_space() Часто бывает так, что клиенты жалуются на какие то ошибки, а оказывается, что банально закончилось свободное место.
  3. @shoputils Здравствуйте. Как сделать, чтобы не учитывались акционные товары? Может быть, с 2014 года вы уже делали кому то правку? Или все таки придется самому?
  4. "Загадка от Жака Фреско. На размышление 30 секунд". Решение в лоб - обновление кеша по cron раз в сутки, 10 сек отработает глубокой ночью - не страшно. Или отказаться от JOINов и попробовать простыми запросами, сравнить время. Я не гуру, но может вместо "LIMIT 0, 3" написать "LIMIT 3"? Это даст какое то различие? Интересно было бы узнать. Точно не ко мне
  5. @Yoda а что, уже всё? Администрация приняла во внимание твою информацию?
  6. Не шантаж, а вымогательство. Сможете доказать, что Йода требует передачи чужого имущества или право на имущество или другие действия имущественного характера? На нет и суда нет)
  7. @SooR Ошибка в кешировании названий статусов наличия при нескольких языках. При переключении языка статусы наличия остаются на том же языке. public function getStockStatuses() { $stock_statuses_data = $this->cache->get('ocfilter.stock_status'); if (false !== $stock_statuses_data) { return $stock_statuses_data; } $query = $this->db->query("SELECT stock_status_id AS value_id, name, 's' AS option_id FROM " . DB_PREFIX . "stock_status WHERE language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY name"); $stock_statuses_data = $query->rows; $this->cache->set('ocfilter.stock_status', $stock_statuses_data); return $stock_statuses_data; } Решение - добавить id текущего языка в название кеша. public function getStockStatuses() { $stock_statuses_data = $this->cache->get('ocfilter.stock_status_'.(int)$this->config->get('config_language_id')); if (false !== $stock_statuses_data) { return $stock_statuses_data; } $query = $this->db->query("SELECT stock_status_id AS value_id, name, 's' AS option_id FROM " . DB_PREFIX . "stock_status WHERE language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY name"); $stock_statuses_data = $query->rows; $this->cache->set('ocfilter.stock_status_'.(int)$this->config->get('config_language_id'), $stock_statuses_data); return $stock_statuses_data; }
  8. Исправлена ли ошибка в работе с последней версией OCFilter на Opencart3? Если да, то в какой версии UltreStore? У меня ultrastore 2. Разработчик OCFilter говорит, что там что то с bs.popover
  9. ajax обновление кол-ва при выборе опций это обычно у каждого шаблона своя реализация. Кому надо, адаптируют под себя))
  10. "Не храните все яйца в одной корзине" - нельзя, чтобы все модули зависли только от opencartforum. Хотя бы вспомните про то, сколько раз opencartforum лежал и как его ломали, как в теме API Opencartforum писали про ошибки. Как минимум, нужно несколько резервных независимых серверов лицензий, на случай, если не доступен основной. И репликация бд между серверами. Сервера должны иметь разные домены в разных зонах и с разной датой регистрации.
  11. Не дождался опций и привязки по мультимагазинам. Привязку к мультимагазинам сделал, делаю опции. Но да, 10 складов * 10 значений опции = 100 вариантов количества для одного товара, это жесть. И хорошо, если нет еще одной опции на 10 значений опций, получится 1000 вариантов наличия ))
  12. Попробуйте спарсить отсюда все ссылки на товары (html, у сайта нет sitemap.xml) https://www.repashy.co.uk/index.php?main_page=index&cPath=2 Спарсятся только те, у которых &, а & нет. Я только знакомлюсь с модулем и не знаю как раскидывать товары по категориям, которые я сам создал. У меня категории называются по другому, а не как на сайте доноре. Можно после парсинга товаров в Редакторе товаров задать категории товарам и мой выбор будет учтен в дальнейшем, что этот товар будет всегда в выбранной категории?
  13. @Rassol2 Что из этого поддерживается? XPath, CSS селекторы, RegEx (границы у вас это вроде бы оно, но это только частный случай регулярных выражений), JS (для ajax) Спасибо.
  14. Говорю же, совет "для бедных", кому надо всё бесплатно. От безысходности. Конечно же я это порекомендовал не на серьезных щщах) А кто при деньгах, обратится к кому надо за помощью.
  15. Если у человека шаред хостинг и сотни тысяч товаров, но позволить себе сервер помощнее не может. Какие меры советовать бесплатно сделать своими силами. Я же не про конкретно твой пост, а для тех, кто страдает В качестве бесплатного совета и 190шт сойдет )
  16. Если Google и Яндекс зверствуют. https://yandex.ru/support/webmaster/service/crawl-rate.html#crawl-rate https://support.google.com/webmasters/answer/48620?hl=ru А с бесполезными и вредными ботами можно расправиться поместив это в htaccess SetEnvIfNoCase User-Agent "Abonti|AspiegelBot|aggregator|AhrefsBot|Aport|asterias|Baiduspider|BDCbot|Birubot|BLEXBot|BUbiNG|BuiltBotTough|Bullseye|BunnySlippers|Butterfly|ca\-crawler|CamontSpider|CCBot|Cegbfeieh|CheeseBot|CherryPicker|coccoc|CopyRightCheck|cosmos|crawler|Crescent|CyotekWebCopy/1\.7|CyotekHTTP/2\.0|DeuSu|discobot|DittoSpyder|DnyzBot|DomainCrawler|DotBot|Download Ninja|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Ezooms|FairShare|Fasterfox|FeedBooster|Foobot|Genieo|GetIntent\ Crawler|Gigabot|gold\ crawler|GrapeshotCrawler|grub\-client|Harvest|hloader|httplib|HTTrack|humanlinks|HybridBot|ia_archiver|ieautodiscovery|Incutio|InfoNaviRobot|InternetSeer|IstellaBot|Java|Java/1\.|JamesBOT|JennyBot|JS-Kit|k2spider|Kenjin Spider|Keyword Density/0\.9|kmSearchBot|larbin|LexiBot|libWeb|libwww|Linguee|LinkExchanger|LinkextractorPro|linko|LinkScan/8\.1a Unix|LinkWalker|lmspider|LNSpiderguy|ltx71|lwp-trivial|lwp\-trivial|magpie|Mata Hari|MaxPointCrawler|MegaIndex|memoryBot|Microsoft URL Control|MIIxpc|Mippin|Missigua Locator|Mister PiX|MJ12bot|MLBot|moget|MSIECrawler|msnbot|msnbot-media|NetAnts|NICErsPRO|Niki\-Bot|NjuiceBot|NPBot|Nutch|Offline Explorer|OLEcrawler|Openfind|panscient\.com|PostRank|ProPowerBot/2\.14|ProWebWalker|ptd-crawler|Purebot|PycURL|Python\-urllib|QueryN Metasearch|RepoMonkey|Riddler|RMA|Scrapy|SemrushBot|serf|SeznamBot|SISTRIX|SiteBot|sitecheck\.Internetseer\.com|SiteSnagger|Serpstat|Slurp|SnapPreviewBot|Sogou|Soup|SpankBot|spanner|spbot|Spinn3r|SpyFu|suggybot|SurveyBot|suzuran|SWeb|Szukacz/1\.4|Teleport|Telesoft|The Intraformant|TheNomad|TightTwatBot|Titan|toCrawl/UrlDispatcher|True_Robot|ttCrawler|turingos|TurnitinBot|UbiCrawler|UnisterBot|Unknown|uptime files|URLy Warning|User-Agent|VCI|Vedma|Voyager|WBSearchBot|Web Downloader/6\.9|Web Image Collector|WebAuto|WebBandit|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|WebSauger|Website Quester|Webster Pro|WebStripper|WebZip|Wget|Wotbox|wsr\-agent|WWW\-Collector\-E|Yeti|YottosBot|Zao|Zeus|ZyBORG" bad_bot Deny from env=bad_bot Это "инструкция" для новичков, чтобы чуть чуть снизить нагрузку.
  17. Т.е. на стандартном мультимазине (на поддоменах) работать не будет? Ладно, куплю, протестирую)
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.