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

Yesvik

Ветеран сообщества
  
  • Posts

    1,939
  • Joined

  • Last visited

Everything posted by Yesvik

  1. На примере дефолтного шаблона должно получиться примерно так контроллер шаблон
  2. Компьютер делает не то что вы хотите, а то что ему приказывают делать. 1590/100*5=79,5 1590+250-79,5=1760,5 Округляли при отображении и получили: 79,5 при округлении 80 1760,5 при округлении 1761 Округлять надо не там где отображается, а там где рассчитывается... 1590/100*5=79,5 и сразу округлили = 80 1590+250-80=1760 В файле catalog/model/extension/total/coupon.php найти $discount = $product['total'] / 100 * $coupon_info['discount']; и округлить вот так $discount = ceil($product['total'] / 100 * $coupon_info['discount']);
  3. Не надо удалять всё... как минимум надо корректно закрыть HTML теги. Для тройки надо оставить вывод скриптов в шаблоне и контроллере. Если надо - оставить считалку пользователей онлайн... Вообще всё зависит от шаблона и надо смотреть что в контроллере и шаблоне. После внесения изменений обнови модификаторы
  4. Это не та реализация... На баннере часы без стрелок https://www.rolex.com/content/dam/rolexcom/otw/m126333-0010/portrait_big.jpg а стрелки накладываются на изображение баннера.
  5. Уберите боковую панель Сделайте горизонтальный фильтр Товары выводите только в категориях коллекций Закажите модуль стены категорий с отображением цены на основную плитку (я не встречал готовых, но написать не проблема) Другой вариант: Уберите боковую панель Сделайте горизонтальный фильтр Свяжите товары коллекции этим модулем Главной картинкой настенной или напольной плитки сделайте фото экспозиции коллекции. Декоры, бордюры и т.д. будут отображаться когда войдёте в карточку основной плитки. Этот вариант позволит построить нечто похожее на стену категорий, но с ценой. Позовём @AWARO, он лучше расскажет что и как можно сделать его модулем
  6. Надо именно скрыть товары или товары отображать, но не показывать цены и не позволять оформить заказ без регистрации? Инвайт одноразовый или по одному инвайту могут зарегистрироваться несколько клиентов?
  7. Это все таблицы которые зачищаются при удалении товаров через админку. При этом могут остаться упоминания о товарах в таблицах oc_cart, oc_order_product, oc_customer_wishlist, oc_return Всё зависит от того с какой целью делается зачистка...
  8. Тогда второй запрос должен быть такой $this->db->query("UPDATE `" . DB_PREFIX . "category` AS `c`, `" . DB_PREFIX . "category` AS `pc` SET `c`.`image` = `pc`.`image` WHERE `c`.`category_id` = `pc`.`parent_id` AND `c`.`image` = '' AND `pc`.`image` <> ''"); Во всех запросах которые я предложил не изменяются установленные изображения Странно, выборка идёт из основных изображений товаров, а не из дополнительных... получается вопрос с адекватностью надо решать руками
  9. Можно ) public function setCategoriesImage() { $this->db->query("UPDATE `" . DB_PREFIX . "category` AS `c`, `" . DB_PREFIX . "product_to_category` AS `ptc`, `" . DB_PREFIX . "product` AS `p` SET `c`.`image` = `p`.`image` WHERE `c`.`category_id` = `ptc`.`category_id` AND `ptc`.`product_id` = `p`.`product_id` AND `c`.`image` = '' AND `p`.`image` <> '' AND `ptc`.`main_category` = 1"); } Изображения для категорий берёт из товаров основной категории. Если надо устанавливать изобрахения в вышестоящих категориях и в них нет товаров - то вот такой вариант установит изображения из подкатегорий public function setCategoriesImage() { $this->db->query("UPDATE `" . DB_PREFIX . "category` AS `c`, `" . DB_PREFIX . "product_to_category` AS `ptc`, `" . DB_PREFIX . "product` AS `p` SET `c`.`image` = `p`.`image` WHERE `c`.`category_id` = `ptc`.`category_id` AND `ptc`.`product_id` = `p`.`product_id` AND `c`.`image` = '' AND `p`.`image` <> '' AND `ptc`.`main_category` = 1"); $this->db->query("UPDATE `" . DB_PREFIX . "category` AS `c`, `" . DB_PREFIX . "product_to_category` AS `ptc`, `" . DB_PREFIX . "product` AS `p` SET `c`.`image` = `p`.`image` WHERE `c`.`category_id` = `ptc`.`category_id` AND `ptc`.`product_id` = `p`.`product_id` AND `c`.`image` = '' AND `p`.`image` <> ''"); } Это варианты для ocStore, для opencart вот так public function setCategoriesImage() { $this->db->query("UPDATE `" . DB_PREFIX . "category` AS `c`, `" . DB_PREFIX . "product_to_category` AS `ptc`, `" . DB_PREFIX . "product` AS `p` SET `c`.`image` = `p`.`image` WHERE `c`.`category_id` = `ptc`.`category_id` AND `ptc`.`product_id` = `p`.`product_id` AND `c`.`image` = '' AND `p`.`image` <> ''"); } А если в методы addCategory и editCategory модели категорий перед строкой $this->cache->delete('category'); добавить строку $this->db->query("UPDATE `" . DB_PREFIX . "category` AS `c`, `" . DB_PREFIX . "product_to_category` AS `ptc`, `" . DB_PREFIX . "product` AS `p` SET `c`.`image` = `p`.`image` WHERE `c`.`category_id` = `ptc`.`category_id` AND `ptc`.`product_id` = `p`.`product_id` AND `c`.`image` = '' AND `p`.`image` <> '' AND `ptc`.`main_category` = 1"); то и кнопка не понадобится...
  10. Какая разница через внешний источник или через v7mysql.dll реализуется связь 1С с сайтом, важно что к этому нужна либо обработка, либо расширение без которых ничего работать не будет! А что и как сделано в обработке - загадка, в отличие от обмена по стандарту CommerceML.
  11. Если бы обмен 1С с сайтом был сделан на CommerceML - понятно что делать и можно объяснить как это сделать на стороне 1С, а когда сделана прямая загрузка в mysql - фиг его знает что и как там реализовано. Теперь владелец чудо-сайта пытается найти спеца по 1С + верстальщика + сеошника + прогера php в одном лице.
  12. Одним не обойтись, а двумя можно всё грохнуть ) Это для одного языка Если языков больше - надо запрос подшаманить Если описания с пустыми HTML тегами тоже считать пустыми, можно вместо t0.description = '' отбирать по длине описания CHAR_LENGTH(t0.description) < 20 DELETE `t01`,`t02`,`t03`,`t04`,`t05`,`t06`,`t07`,`t08`,`t09`,`t10`,`t11`,`t12`,`t13`,`t14`,`t15`,`t16`,`t17`,`t18`,`t19` FROM `oc_product_description` AS `t0` LEFT JOIN `oc_product` AS `t01` ON(`t0`.`product_id` = `t01`.`product_id`) LEFT JOIN `oc_product_attribute` AS `t02` ON(`t0`.`product_id` = `t02`.`product_id`) LEFT JOIN `oc_product_discount` AS `t03` ON(`t0`.`product_id` = `t03`.`product_id`) LEFT JOIN `oc_product_filter` AS `t04` ON(`t0`.`product_id` = `t04`.`product_id`) LEFT JOIN `oc_product_image` AS `t05` ON(`t0`.`product_id` = `t05`.`product_id`) LEFT JOIN `oc_product_option` AS `t06` ON(`t0`.`product_id` = `t06`.`product_id`) LEFT JOIN `oc_product_option_value` AS `t07` ON(`t0`.`product_id` = `t07`.`product_id`) LEFT JOIN `oc_product_recurring` AS `t08` ON(`t0`.`product_id` = `t08`.`product_id`) LEFT JOIN `oc_product_related` AS `t09` ON(`t0`.`product_id` = `t09`.`product_id`) LEFT JOIN `oc_product_related` AS `t10` ON(`t0`.`product_id` = `t10`.`related_id`) LEFT JOIN `oc_product_reward` AS `t11` ON(`t0`.`product_id` = `t11`.`product_id`) LEFT JOIN `oc_product_special` AS `t12` ON(`t0`.`product_id` = `t12`.`product_id`) LEFT JOIN `oc_product_to_category` AS `t13` ON(`t0`.`product_id` = `t13`.`product_id`) LEFT JOIN `oc_product_to_download` AS `t14` ON(`t0`.`product_id` = `t14`.`product_id`) LEFT JOIN `oc_product_to_layout` AS `t15` ON(`t0`.`product_id` = `t15`.`product_id`) LEFT JOIN `oc_product_to_store` AS `t16` ON(`t0`.`product_id` = `t16`.`product_id`) LEFT JOIN `oc_review` AS `t17` ON(`t0`.`product_id` = `t17`.`product_id`) LEFT JOIN `oc_coupon_product` AS `t18` ON(`t0`.`product_id` = `t18`.`product_id`) LEFT JOIN `oc_url_alias` AS `t19` ON(CONCAT('product_id=',`t0`.`product_id`) = `t19`.`query`) WHERE `t0`.`description = ''; DELETE `pd` FROM `oc_product_description` AS `pd` LEFT JOIN `oc_product` AS `p` ON(`pd`.`product_id` = `p`.`product_id`) WHERE `p`.`product_id` IS NULL;
  13. Вот точно такая же ошибка А причина в том, что на вкладке "Витрина" обязательное поле "Название магазина" заполнено только для русского языка, для английского - не заполнено
  14. Судя по скриншоту сейчас на сайте включен один язык - русский, а изначально был английский... если добавили русский, а английский выключили - вполне может быть, что на вкладке Blog обязательные поля заполнены только для английского языка, а для русского не заполнены... вот и ругается.
  15. Скорее всего не заполнены обязательные поля...
  16. Может не разные страницы, а одна страница с динамической подменой на основании поисковой фразы? Например... есть одна страница с H1 - iPhone XS и опциями по цвету и памяти Прилетел клиент с поисковой фразой iphone xs 256 gold купить в устьпендюринске На основании этой поисковой фразы на странице делаются подмены: H1 - iPhone XS 256Gb Gold с бесплатной доставкой в Устьпендюринск, основное изображение в цвете Gold, цена конкретно на модель с 256Gb в золотом цвете и т.д. Т.е. страница подстраивается под конкретное желание клиента. Наклепать кучу страниц не сложно... сложно и дорого эту кучу страниц продвигать.
  17. А вот такое не подсветишь в привычных цветах )
  18. Нажимаешь кнопку "Код" В открывшемся окне вставляешь код, выбираешь синтаксис подсветки и жмешь кнопку "Вставить в сообщение" В итоге получаешь вот такое сообщение } else { $default = $this->config->get($this->config->get('config_theme') . '_product_limit'); } if ($this->config->get('sortslimits_limits')) { $limits = array($default) + explode(',', ','.$this->config->get('sortslimits_limits')); } и пофиг из какого редактора скопирован код ) Для больших кусков кода сначала жмёшь кнопку "Спойлер", потом "Код" и далее как описано выше.
  19. Всё верно... я и написал что кеш product.seopath не нужен, а category.seopath можно извлечь из БД одним запросом и положить в кеш на долго... тогда cache->set cache->set cache->set не будет
  20. От сериализации отказались из-за наличия уязвимостей https://www.php.net/manual/ru/function.unserialize.php
×
×
  • 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.