Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

efremovxp

Users
  
  • Posts

    459
  • Joined

  • Last visited

Everything posted by 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. Может имеет смысл всё запихать в memcached?
  13. Попробуйте спарсить отсюда все ссылки на товары (html, у сайта нет sitemap.xml) https://www.repashy.co.uk/index.php?main_page=index&cPath=2 Спарсятся только те, у которых &, а & нет. Я только знакомлюсь с модулем и не знаю как раскидывать товары по категориям, которые я сам создал. У меня категории называются по другому, а не как на сайте доноре. Можно после парсинга товаров в Редакторе товаров задать категории товарам и мой выбор будет учтен в дальнейшем, что этот товар будет всегда в выбранной категории?
  14. @Rassol2 Что из этого поддерживается? XPath, CSS селекторы, RegEx (границы у вас это вроде бы оно, но это только частный случай регулярных выражений), JS (для ajax) Спасибо.
  15. Говорю же, совет "для бедных", кому надо всё бесплатно. От безысходности. Конечно же я это порекомендовал не на серьезных щщах) А кто при деньгах, обратится к кому надо за помощью.
  16. Если у человека шаред хостинг и сотни тысяч товаров, но позволить себе сервер помощнее не может. Какие меры советовать бесплатно сделать своими силами. Я же не про конкретно твой пост, а для тех, кто страдает В качестве бесплатного совета и 190шт сойдет )
  17. Если 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 Это "инструкция" для новичков, чтобы чуть чуть снизить нагрузку.
  18. Т.е. на стандартном мультимазине (на поддоменах) работать не будет? Ладно, куплю, протестирую)
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.