Raino

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

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

  • Посещение

Весь контент Raino

  1. Самое простое и бесплатное- это именно проставлять порядок сортировки нужному товару. Каждому товару в каталоге его проставлять нет необходимости. Поле позволяет ставить отрицательные значения, и если у всех прочих товаров стоит по умолчанию порядок 0, то желаемому ставите -1 и он будет выше прочих. Когда это перестало быть актуальным - поставили ему снова 0 и всё.
  2. Этично ли?

    Интересная позиция. А если заказчик попросил поправить некий баг, который мешал ему жить и работа заключается именно в поиске и устранения ошибки присутствующей в сборке изначально, но с которой столкнулся первый именно он, то значит нигде нельзя постить багрепорт о ней, чтобы она была исправлена в сборке? Он ведь заплатил, зачем ее исправлять глобально или постить на форумах решение - это ведь будет не честно по такой логике, т.к. кто-то ранее за эту работу уже заплатил, а теперь другие получат бесплатно, так получается?
  3. Если Вы недавно ничего не меняли в контрольной панели хостинга, не создавали там почтовый домен, не пытались его самостоятельно настраивать и т.д., то могу посоветовать гвоздь в голову вбить техподдержке, если она не видит проблему со своей стороны, 2 и 3 строка в приведенном логе четко описывает проблему. Почта делегирована на внешний сервер, на него указывают mx записи и т.д. и при этом на хостинге естественно находится одноименный домен. При отправке сообщения из магазина хост не отправляет его на тот внешний почтовый сервер, куда делегирована почта, не проверяет mx записи, а просто шлет его сам себе, т.к. имеет это же доменное имя и сам себе отвечает, что у него такого почтового ящика нет. Поэтому, когда указываете в настройках другие почтовые ящики - письма идут отлично, т.к. сервер перестает направлять их сам себе и по этой же причине если отправить на эти доменные ящики письма не их магазина, а из любого другого источника- они доходят. И если раньше этого не было, а сейчас есть, значит хостер (если Вы сами ничего не меняли в панели хостинга) "меняя настройки" доменялся эти самые настройки и почтовика в придачу. И еще ТП можете сообщить что функция php mail() не требует никаких особых данных для простой отправки, которые могут быть "указаны неверно", кроме исходящего мыла, которое проблематично указать неверно. Более того, они даже в приведенном тесте проверяют вообще не тот случай, который вызывает проблему. Если бы они через свой тест скрипт отправили мыло не на некий гмейловский адрес, а на тот, куда блин письма у Вас не доходят в логе, т.е. на info@datiko.ru - получили бы ту же самую ошибку. Если техподдержка все равно не в состоянии будет решить проблему то гуглить на предмет XXX disable local delivery, где XXX - используемая для отправки служба, в данном случае это судя по логу exim.
  4. Если увеличиваете время жизни через session_set_cookie_params(XXX, '/') то все сессии умирают сразу в момент создания, т.к. на 2.3 есть ошибка в установке сессионной куки. В этом файле есть код вида if ($key != 'PHPSESSID') { setcookie($key, $this->session_id, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly')); } В нем время жизни куки устанавливается неверно. Правильно так if ($key != 'PHPSESSID') { setcookie($key, $this->session_id, time() + ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly')); } либо же напрямую указать желаемое время ХХХ в секундах, если по каким-то причинам нет возможности изменить параметр session.cookie_lifetime. if ($key != 'PHPSESSID') { setcookie($key, $this->session_id, time() + XXX, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly')); }
  5. Похоже, что это он и есть, т.к. в модулях с родного сайта главпункта совместимости с симплой как раз нет, да и в целом модуль их родной был кривой как вьетнамский летчик (мне пришлось в свое время для клиента знатно дорабатывать под симплу их модуль ПВЗ). Поэтому на текущий момент покупать сие имеет смысл, только если очень нужно под 1.5 ветку с дефолтным оформлением заказа (маловероятный вариант).
  6. Вам нужно создать свою функцию в модели product, например getMainCategory($product_id) которая будет выбирать из базы данные по ней и потом вызывать ее по необходимости в произвольных местах. public function getMainCategory($product_id) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "product_to_category ptc LEFT JOIN " . DB_PREFIX . "category_description cd ON (ptc.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (ptc.category_id = c2s.category_id) WHERE ptc.product_id = '" . (int)$product_id . "' AND ptc.main_category = '1' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); return $query->row; } что-нибудь вроде такого, где вместо * можно оставить только те данные, которые Вам нужны по главной категории и работать с полученным массивом. Если нужны какие-то доп поля кроме названия, вроде картинки- нужно в запрос подцепить еще и выборку из таблицы category, но для GA это не нужно.
  7. Врожденный баг чпу в опенкарте. В версии 1.5. еще был, распространяется на категории и производителей, присутствует как при включенном штатном чпу формирователе, так и при включенном сео про.как пример демо сайт ocstore производители https://demo.ocstore.com/delivery/apple https://demo.ocstore.com/apple/delivery категории https://demo.ocstore.com/desktops/mac/terms https://demo.ocstore.com/terms/desktops/mac можно подставить любой существующий урл от статей и не только от статей. пофиксить можно доработав сеопро, штатный наверняка тоже можно, но кому он нужен) В индекс такие страницы попадают через счетчики метрики, аналитики и им подобные. при прямом посещении страницы кем-либо они скорее всего добавятся в индекс. По хорошему надо бы не внешними модулями решать, а в сборке пофиксить, т.к. штука неприятная.
  8. Raino

    @MinMart , личное сообщение на форуме- отличный способ контактировать на начальном этапе)
  9. Самые простые варианты: Использовать параметр ?ver=xx для изменившегося css или js в шапке , только потом не забудьте удалить этот параметр, т.к. статические ресурсы с параметрами не кешируются вообще. Т.е. если у Вас время жизни css стоит неделя- через неделю уберите данный параметр, тогда гарантированно у всех пользователей будет актуальная версия. Либо просто переименуйте изменившийся css/js файл, например в stylesheet-v2.css.(и сам файл и ссылку на него в коде страницы).
  10. Декодируйте описание в контроллере. 'description' => html_entity_decode($category['description'], ENT_QUOTES, 'UTF-8'),
  11. Или не там добавили, или не там выводите. Вы записали минимальную цену для каждой дочерней категории текущей родительской (те которые выводятся над товарами, как правило), а в tpl обращаетесь к ней, как будто хотели вывести это значение для родительской. Соответственно, если хотите вывести мин. цену для каждой дочки, то в шаблоне нужно выводить например так: <?php foreach ($categories as $category) { ?> <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?><span><?php echo $category['min_price']; ?></span></a></li> <?php } ?> Кстати, запрос довольно тяжелый и при большом кол-ве товара-категорий будет создавать нагрузку, поэтому, если без этого никак- то хорошо бы это дело кешировать хотя бы. Если же нужно выводить мин цену только для текущей категории, то тогда в контроллере надо ее задавать иначе: $data['min_price'] = $this->model_catalog_product->getMinPriceFromCategory($category_id); и потом уже выводить в тпльке через $min_price Само собой в функции в модели не должно быть ошибок (ее код не смотрел).
  12. https://opencartforum.com/topic/10263-modul-dobavliaet-vozmozhnost-vybora-kolichestv/ посмотрите этот топик, там детально описан пример как сделать самому поля ввода кол-ва в категориях, в Вашем случае, просто слайдеры еще добавить нужно. Был и готовый модуль, на этом форуме, но увы название не вспомню а по поиску не найти.
  13. Странное замечание. А мне вот не нужно. Если у меня мультимагазины то там и так для каждого была своя настройка размеров изображения для магазина в целом. Повторюсь, настройка размеров конкретного шаблона - сомнительной полезности функционал и если бы он шел бонусом, не ухудшая удобство, то и проблем бы не было. Как часто меняется шаблон на магазине работающем? Нечасто, примерно никогда, только обновляется изредка. Если пойти дальше-то с чего тогда настройки фавика и лого оставили как было, может мне для разных тем разные лого и фавик потребуются? Непонятно. Задумка может и хорошая, но реализация как-то подкачала в плане удобства. В чём сложность разместить этот блок непосредственно на вкладке изображений с выборами настроек для темы для данного магазина? Или хотя бы линк там сделать на соответствующий раздел? Я без претензий к разработчикам сборки, как было в 2.3 так и сделали, но почему этот момент столь непродуман мне непонятно. Повторюсь, продукт делается для людей. Людям как мы видим- неудобно, вот и всё. Я думаю Вы согласитесь, что ни разу не очевидное расположение теперь этих настроек. И если влепить в сборку простой линк на новое место/текстовое описание как найти/скрин с пометками на вкладке "изображения" настроек магазина (если уже не охота заморачиваться с переносом блока), то вопросов у людей не будет, все всё найдут.
  14. К сожалению разработчики решили, что жизненно необходимо взять и выдрать привычное и логичное расположение данного функционала и поместили его в жжж... , пардон, в раздел админки "дополнения" - фильтр "шаблоны", где Вы и можете их найти сейчас. Теперь изображения индивидуально настраиваются для каждой темы (незаменимая вещь, ведь на каждом магазине как правило стоит шаблонов по десять, которые регулярно переключаются). P.S. темы с этим вопросом "где картинки изображений?!" плодятся практически ежедневно. На мой взгляд это говорит о том, что решение было неудачным, пользователи его не понимают. Да в теории, это замечательно и удобно, независимые настройки изображений для каждой темы! Просто мечта, если ты каждый день сидишь и переключаешь шаблоны в магазине, а вот если не переключаешь (а как правило шаблон ставится настраивается и забывается)- бесполезная, неудобно расположенная вещь.
  15. http://docs.myopencart.com/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0
  16. Также недавно столкнулся у клиента с данной проблемой на oc 1.5.5.1.2 Проблема заключается в методе построения ключа товара при добавлении его в корзину в файле system\library\cart.php функция add строка 258 ....$key = (int)$product_id . ':' . base64_encode(serialize($option));... этот самый base64_encode на выходе дает строку, которая согласно спецификации может содержать символы +/=. А т.к потом этот ключ используется в гет запросах для удаления товара, то эти символы там недопустимы отсюда и "неудаление", по сути идет попытка удалить товар с несуществующим ключом. воспроизвести в 1.5 можно следующим образом - добавьте к товару опцию текстового ввода и вручную в базе присвойте ей номер 12960, забейте в поле текст "напол" к примеру и добавьте в корзину- данное сочетание опции и значения опции приведет к формированию ключа, содержащего + и товар не удалится из корзины стандартной кнопкой. encodeURIComponent для исправления как предлагалось выше не совсем корректно. Как вариант можно "доработать" функции для генерации ключа: public function base64_url_encode($input) { return strtr(base64_encode($input), '+/=', '-_,'); } public function base64_url_decode($input) { return base64_decode(strtr($input, '-_,', '+/=')); } . их необходимо прописать в библиотеку корзины и заменить стандартный вызов base64_decode / base64_encode на них и товар будет удалятся с любым набором опций. В теории может к коллизиям привести, но вероятность куда меньше, чем генерация "кривого ключа". P.S. прошу прощения за некропост, но может пригодится кому-нибудь. Да и бага по факту устойчивая и гарантированно воспроизводится, можно и пофиксить в сборке.
  17. Мультидоставка FREE

    Попробуйте увеличить на хостинге в настройках php параметр max_input_vars, должно помочь.
  18. ТС создал топик с определенным названием и задал конкретный вопрос: "где стоит лимит на ввод сео полей", на что получил ответ. ТС не заказывал краткий экскурс в историю и консультаций по сео, и если он считает что ему это нужно - это его личное дело. Причину по которой "магазин оставляет пять ключевых фраз" я обозначил, а то что толку от этого не будет для поисковиков - другой вопрос. Мне рассказывать о том как эти теги обрабатываются ПС не нужно, спасибо, я в курсе. Если автору всё-таки требуется мануал, то и вопрос нужно формулировать соответствующий. Доступное описание заполнения этих полей простым матерным языком с наглядными примерами можно изучить тут
  19. В базе данных магазина в таблице product_description у всех мета полей стоит ограничение в 255 символов -тип varchar(255). Если длины в 255 символов Вам не хватает, можете изменить тип полей например на text, по аналогии с полем tag.
  20. Metro UI CSS 3.0 и с чем его едят.

    Возможно ТС имеет ввиду дополнение https://opencartforum.com/files/file/705-metro-ui-mod-%D0%B4%D0%BB%D1%8F-ocstore-151x-ocstore-155x/
  21. Недавно обнаружил пару подозрительных файлов в папке downloads вида "1024.php.jpg.рандомный набор", внутри оказался не зловред, а игрушка 1024, причем рядом валялся файл с лицензией на нее, такого-же формата :). Однако прецедент пугающий. Детальнее проблема описана здесь http://forum.opencart.com/viewtopic.php?f=179&t=135903 и судя по всему носит массовый характер. И если на чистом opencart проблема решается запретом загрузки файлов в магазин, то в ocstore эти настройки в админке я не нашел http://www.webhostinghub.com/help/images/stories/opencart/opencart15-options/opencart15-options-allowed-uploadextensions.gif и пришлось потанцевать с бубном. В общем, будьте внимательны граждане.
  22. У клиента 1с -семерка, реализовывал через файловый обмен. Схема вкратце: по некоему условию (например после подтверждения оплаты заказа или по таймеру) в интернет-магазине отрабатывает скрипт, который экспортирует необходимых данные из базы (по сути таблицы отвечающие за заказ в csv формате, с заказами соответствующими заданным критериям), это добро затем отправляется на фтп организации. На сервере клиента, где стоит 1ска, работает служба, которая мониторит наличие файлов на фтпшке (по факту соседний каталог), и при их обнаружении скармливает их 1сной обработке. По такой же схеме данные отправляются назад, только там на хостинге не мониторится каталог на предмет появления файлов, а просто после обмена запускается скрипт, который обрабатывает полученные данные, вот на этом этапе идут уведомления клиентам о смене статусе заказов. Собственно все, профит. При желании можно и не файловый обмен сделать, если научить службу на сервере, где стоит 1с, ловить запросы (1ска восьмерка вроде как это сама умеет, без всяких левых костылей в виде самописных служб), чтобы было более "красиво" и быстро, но у меня такой задачи не стояло.
  23. filter Pro

    Беда-беда-огорчение:( Фильтр остро нужен для нового проекта, а с лицензией засада, хотя раньше в течении суток все вопросы решали. Возможно с автором в "физическом" плане что-то случилось? (очень надеюсь, что нет и он жив-здоров, но все же мало ли). Может быть кто-нибудь из OCTeam сможет с ним связаться?
  24. По поводу "не влияет". Цитата из google search console: Поэтому те замечания, которые дает PageSpeed именно касательно удобства мобильной версии (а не уберите js и т.д.) все же стоит исправить.
  25. Если "эта информация может быть недостоверной и сейчас проверяется", может стоит сначала проверить информацию, прежде чем делать подобные заявления? Потому что, возможно, скорее-всего, наверное, быть может, вероятно это некрасиво? P.S. Уважаемый freelancer, прошу почистить ящик на форуме (т.к нет возможности отправить Вам сообщение) или проверить e-mail, т.к нужно решить вопрос с лицензией.