Лидеры
Популярный контент
Показан контент с высокой репутацией за 28.07.2024 в Сообщения
-
67к товаров, 26к связей в hpmodel_links, 2.5к отзывов, вызов getProduct() занимает около 70мс и если на странице в модулях набирается больше 10 товаров получается довольно большая задержка. Удалось ускорить работу метода в 10-15 раз заменив 2 подзапроса к review на один и немного оптимизировав его: --- z_hpm14.ocmod.xml~070725 2025-02-12 14:38:04.067381375 +0300 +++ z_hpm14.ocmod.xml 2025-07-07 08:51:32.842664104 +0300 @@ -169,11 +169,15 @@ </operation> <operation error="skip"> <search index="0"><![CDATA[(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]]></search> - <add position="replace"><![CDATA[(SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 LEFT JOIN " . DB_PREFIX . "hpmodel_links hpl ON (r1.product_id = hpl.product_id OR r1.product_id = hpl.parent_id) WHERE (" . ($parent_id !== false ? "hpl.parent_id = '" . (int)$parent_id . "'" : "r1.product_id = p.product_id") . ") AND r1.status = '1' GROUP BY " . ($parent_id !== false ? "hpl.parent_id" : "r1.product_id") . ") AS rating]]></add> + <add position="replace"><![CDATA[(SELECT CONCAT(AVG(rating),';',COUNT(review_id)) FROM " . DB_PREFIX . "review r1" . ($parent_id !== false ? " LEFT JOIN " . DB_PREFIX . "hpmodel_links hpl ON (r1.product_id = hpl.product_id)" : "") . " WHERE r1.product_id = p.product_id" . ($parent_id !== false ? " OR hpl.parent_id = '" . (int)$parent_id . "'" : "") . " AND r1.status = '1' GROUP BY " . ($parent_id !== false ? "hpl.parent_id" : "r1.product_id") . ") AS rating]]></add> </operation> <operation error="skip"> <search index="0"><![CDATA[(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]]></search> - <add position="replace"><![CDATA[(SELECT COUNT(DISTINCT review_id) AS total FROM " . DB_PREFIX . "review r2 LEFT JOIN " . DB_PREFIX . "hpmodel_links hpl ON (r2.product_id = hpl.product_id OR r2.product_id = hpl.parent_id) WHERE (" . ($parent_id !== false ? "hpl.parent_id = '" . (int)$parent_id . "'" : "r2.product_id = p.product_id") . ") AND r2.status = '1' GROUP BY " . ($parent_id !== false ? "hpl.parent_id" : "r2.product_id") . ") AS reviews]]></add> + <add><![CDATA[NULL]]></add> + </operation> + <operation error="skip"> + <search index="0"><![CDATA[=> $query->row['reviews'] ? $query->row['reviews'] : 0,]]></search> + <add><![CDATA[=> $query->row['rating'] ? explode(';', $query->row['rating'])[1] : 0,]]></add> </operation> </file>4 балла
-
В самом начале кода контроллера ЧПУ есть пример для такой реализации: https://github.com/mpn2005/ocClub3/blob/ocClub3/upload/catalog/controller/startup/seo_url.php4 балла
-
https://github.com/mpn2005/ocClub3/commit/1300040f6ff5ccfe95a4d0c8cceb4ef36a892791 если в искомой фразе есть хотя бы одна-две цифры, что нередко бывает в емейлах, то находит сотни, тысячи лишних покупателей, где в номере телефона есть такая цифра. можно не искать по телефону, если в искомой фразе есть символ @. в этом случае юзер точно хочет искать только по емейлу4 балла
-
В схожей ситуации , данное решение предложил сам хостер. Сразу после RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) добавить RewriteRule ^([^?]*) index.php?_route_=$1 [B,L,QSA,UnsafeAllow3F] Ну и как вариант от меня (так же нужно проверять). # Преобразование UTM-меток от Яндекс.Товаров RewriteCond %{QUERY_STRING} utm_referrer=https%3A%2F%2Fyandex\.ru%2Fproducts(.*) RewriteRule ^(.*)$ $1?utm_source=yandex&utm_medium=products [R=301,L] Применяет UnsafeAllow3F только для трафика с Яндекс. Сохраняет UTM-метки в исходном виде Не создает дополнительных редиректов Минимально влияет на существующую логику работы сайта4 балла
-
похоже просто закэшировалось в системном кэше для его сброса подключитесь по FTP к папке storage своего магазина и в ваша_папка_storage/cache удалите все файлы начинающиеся на caсhe. (ничего другого удалять не нужно!)3 балла
-
прислал заказчик инфу, что при переходе на сайт по ссылке с Яндекс.товаров сайт отдает 403 ошибку. общение с хостером ничего не дало, начал выяснять в чем тут дело. в url добавляется utm метка utm_referrer=https://yandex.ru/products/search?text=текст на сервак естественно приходит перекодированный вариант вида https://domain/path-to-product?utm_referrer=https%3A%2F%2Fyandex.ru%2Fproducts%2Fsearch%3Ftext%3D%D1%82%D0%B5%D0%BA%D1%81%D1%82 методом проб выяснил что если заменить %3F на что-то другое, то сайт вполне работает. похоже, что обновление безопасности апача запретило использовать hex-перекодированный символ "?" в "%3F" в url. наткнулся на такое обсуждение https://stackoverflow.com/questions/78729429/403-forbidden-when-url-contains-get-with-encoded-question-mark-unsafeallow3f заменил в .htaccess строку RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] на RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA,UnsafeAllow3F] работать то работает, но интересно насколько это безопасно и есть ли другие решения, учитывая что и php'шный urlencode и js'овский encodeURIComponent по-прежнему кодируют этот символ в %3F3 балла
-
в поле ean 14 символов отведено в базе. зайдите в phpmyadmin, кликните на таблицу oc_product, далее на вкладку Структура. отредактируйте поле ean и впишите число побольше3 балла
-
Идея хорошая. Реализация не очень. Ни в коем случае нельзя заменять какие либо системные файлы. В данном случае вы могли файл назвать extension_new.twig Запаковать архив в ocmod ( tab_for_ext_oc3x.ocmod.zip ) Ну и добавить модификатор install.xml который бы просто подменил путь до шаблона <?xml version="1.0" encoding="utf-8"?> <modification> <name>Tab for Ext</name> <code>Tab for Ext</code> <version>1.0</version> <author>freeworld</author> <link>Tab for Ext</link> <file path="admin/controller/marketplace/extension.php"> <operation> <search><![CDATA[$this->response->setOutput($this->load->view('marketplace/extension', $data));]]></search> <add position="replace"><![CDATA[$this->response->setOutput($this->load->view('marketplace/extension_new', $data));]]></add> </operation> </file> </modification> Получаете безопасную установку/удаление через админку. Не затрагиваете системные файлы.3 балла
-
/system/library/language.php $this->data = array_pop($this->backup); заменить на $this->data = array_merge($this->data, array_pop($this->backup));3 балла
-
3 балла
-
Исправлено https://github.com/OpenCart-Club/opencart/commit/7784d17a2a0b8217a59ffa2b471c8fa5a7adaaed3 балла
-
Модификатор для украшения к Новому Году. Рекомендую не забывать, что удалять их нужно, раньше чем выкидывать в мае ёлку. Установка через админку : 1. Дополнения-Установка дополнений. 2. После чего обязательно обновить кэш модификаторов (дополнения-менеджер дополнений), синяя круглая иконка справа вверху. "Новогодняя мотня от Яндекс" - выводит в шапке новогодние шарики-игрушки, при проведении по ним мышкой издаёт звуки. Тот же эффект при нажатии кнопок на клавиатуре. В мобильной версии скрыто (<div class="b-page_newyear hidden-sm hidden-xs">) NewYear2025.ocmod.zip3 балла
-
Например https://opencart.club/files/file/30-hyper-product-models-ajax-zamena-tovara-po-modelyam/ Обычно картинки это отдельные артикулы товара.2 балла
-
Приветствую, это предложил автор данного модуля, дает возможность редактировать данные непосредственно в Batch Editor Для этого в настройках модуля вкладка Связи добавьте новую и выберите таблицу hpmodel_links2 балла
-
Такие решения есть, только толку от них нет. Товары хорошо так заполнять, но вот производителей и категории лучше ручками проработать. Просто поверьте наслово)2 балла
-
если собираетесь делать магазин на Opencart - значит нужно изучить движок как минимум на уровне пользователя либо нанять кого-то, кто у вас будет этим заниматься2 балла
-
Нет, поначалу начал писать автору HYPER Multi Product Models в личку, но тот попросил писать по вопросам модуля в этот форум поддержки, на форуме, конечно, тоже тишина. Модуль HYPER Multi Product Models ложит сайт на Просторе на раз-два, в первые минуты настройки. Простор недавно обновился до версии 1.3.1, а файлы адаптации скорее всего для более ранних версий. По отзывам 22 и 23 годах для дополнения HYPER Multi Product Models была хорошая и быстрая поддержка, сейчас поддержки нет. 10 тыс руб в пролете :)2 балла
-
Да, как сказано выше, в базе данных увеличьте количество символов, к примеру до 128 байт2 балла
-
NewsBlog - неограниченное количество категорий со статьями Добавил netruxa Добавлено 04.02.2025 Категория Блоги, Новости, Статьи Просмотр файла2 балла
-
мой вопрос снимается. установлен FilterVier. для совместимости нужно установить галку fix hyper_product_models в настройках фильтра2 балла
-
Спасибо за помощь нашел у себя какой то модуль Изображений для категорий переделал и сделал модуль с выводом как баннера одно так и сделать слайдер category_banner_3.x.ocmod.zip2 балла
-
В опенкарт любой версии полно неиспользуемых полей. Берите любое , например mpn и замените в админке вывод текстового инпута на переключатель Да-Нет. <?xml version="1.0" encoding="UTF-8"?> <modification> <name>Change MPN to Yes-No and Display in Frontend</name> <code>change_mpn_to_yes_no_and_display</code> <version>1.0</version> <author>Tom</author> <link>https://www.yoursite.com</link> <file path="admin/view/template/catalog/product_form.twig"> <operation> <search><![CDATA[<input type="text" name="mpn" value="{{ mpn }}" placeholder="{{ entry_mpn }}" id="input-mpn" class="form-control"/>]]></search> <add position="replace"><![CDATA[ <select name="mpn" id="input-mpn" class="form-control"> <option value="1" {{ mpn == '1' ? 'selected' : '' }}>Да</option> <option value="0" {{ mpn == '0' ? 'selected' : '' }}>Нет</option> </select> ]]></add> </operation> </file> <file path="catalog/controller/product/product.php"> <operation> <search><![CDATA[$data['points'] = $product_info['points'];]]></search> <add position="after"><![CDATA[$data['mpn'] = $product_info['mpn'];]]></add> </operation> </file> <file path="catalog/view/theme/default/template/product/product.twig"> <operation> <search><![CDATA[{% if price %}]]></search> <add position="before"><![CDATA[ {% if mpn == '1' %} <div class="product-mpn-enabled"> <!-- Контент для активации MPN --> <p>Этот блок включен для данного товара.</p> </div> {% elseif mpn == '0' %} <div class="product-mpn-disabled"> <!-- Контент для деактивации MPN --> <p>Этот блок отключен для данного товара.</p> </div> {% endif %} ]]></add> </operation> </file> </modification> Нет возможности использовать mpn, заменяйте на любое иное существующее значение типа jan, isbn, upc, location2 балла
-
В разделе связи у Вас выбраны нужные категории-производители? Обратите внимание, что первая связка не должна пересекаться по категориям связи со второй.2 балла
-
Сделайте ПР и будет быстрее. Всё это развивается в свободное от работы время. А вы проверили актуальный код, перед написанием ишью? Странный подход, что кто-то должен перепроверять, отвечать, делать ещё и быстро.2 балла
-
только что запускали такой проект. клубная сборка последняя версия с гитхаба + unishop2 3.0.2.0 полет нормальный2 балла
-
В тройке можно немного попроще. catalog/view/theme/default/template/product/product.twig Найти весь блок картинок {% if thumb or images %} <ul class="thumbnails"> {% if thumb %} <li><a class="thumbnail" href="{{ popup }}" title="{{ heading_title }}"><img src="{{ thumb }}" title="{{ heading_title }}" alt="{{ heading_title }}" /></a></li> {% endif %} {% if images %} {% for image in images %} <li class="image-additional"><a class="thumbnail" href="{{ image.popup }}" title="{{ heading_title }}"> <img src="{{ image.thumb }}" title="{{ heading_title }}" alt="{{ heading_title }}" /></a></li> {% endfor %} {% endif %} </ul> {% endif %} И заменить со списка ul-li частично на блоки col. Что то типа <div class="row thumbnails"> {% if images %} <div class="col-sm-2"> <ul class="thumbnails-list"> {% for image in images %} <li> <a class="thumbnail" href="{{ image.popup }}" title="{{ heading_title }}"> <img src="{{ image.thumb }}" title="{{ heading_title }}" alt="{{ heading_title }}" /> </a> </li> {% endfor %} </ul> </div> {% endif %} <div class="{{ images ? 'col-sm-10' : 'col-sm-12' }}"> {% if thumb %} <a class="thumbnail main-image-container" href="{{ popup }}" title="{{ heading_title }}"> <img src="{{ thumb }}" title="{{ heading_title }}" alt="{{ heading_title }}" id="main-image" /> </a> {% endif %} </div> </div> Ну и перед {{ footer }} , так например <style> .thumbnails-list {list-style: none;padding: 0;margin: 0;overflow-y: auto;} .thumbnails li {margin-bottom: 10px;} </style> <script type="text/javascript"> $(document).ready(function() { var mainImageHeight = $('.main-image-container').height(); $('.thumbnails-list').height(mainImageHeight); }); </script>2 балла
-
Спросите ncv у него там много всякого, возможно уже есть решение, а возможно изобретет что-то под Вашу задачу2 балла
-
Ваш текст явно показывает, что вы только начинаете разбираться с процессом разработки на OpenCart, и это нормально. Но нужно сразу отметить несколько ключевых проблем. Во-первых, структурность вашего изложения оставляет желать лучшего. Это больше похоже на поток сознания, чем на чёткий план действий. Если вы хотите, чтобы кто-то воспринял ваши идеи серьёзно, начните с того, чтобы чётко сформулировать, что именно вы пытаетесь решить. Во-вторых, подход к использованию Git у вас какой-то размазанный. Коммитить прямо в мастер — это не вариант для серьёзного проекта, особенно если в будущем планируете работать в команде. Git Flow или хотя бы простой Feature Branch Workflow — минимально необходимая схема для хоть какого-то порядка. По поводу работы с БД и предложенного вами skeema. Идея отслеживать состояние схемы данных понятна, но её реализация вызывает сомнения. Если вы уже столкнулись с проблемами миграций, возможно, стоит рассмотреть более проверенные инструменты, которые действительно работают, а не изобретать велосипед. Ваш подход к .gitignore вроде понятен, но нужно более чётко понимать, какие конкретно файлы должны быть исключены, и какие включены. Это вопрос базового знания Git, который стоит подтянуть. И по поводу CI/CD. Да, GitHub Actions — это круто, но на данный момент ваши задачи, похоже, не требуют такой сложности. Разберитесь сначала с базовыми вещами, такими как миграции БД и нормальная работа с Git, а потом уже думайте об автоматизации. Про модификаторы, хранящиеся в БД. Да, это неудобно, и вы правы, что это «жуткая матрёшка». Но это особенность OpenCart, и пока что лучше просто смириться с этим или искать сторонние решения, которые упрощают этот процесс. Ваше предложение — что-то делать вручную и контролировать это — не выдерживает критики. В общем, пока ваши идеи выглядят сырыми и не до конца продуманными. Прежде чем предлагать что-то команде или сообществу, приведите свои мысли в порядок и определитесь с основными приоритетами.2 балла
-
Здравствуйте! Спасибо за поддержку в данной сборке opencart.club - фото формата .webp. Но данный формат фото не возможно закачать при создании товара через стандартный менеджер фото. Только можно указывать на фото webp, которые закачаны ранее через фтп или хостинг, что крайне неудобно. Прошу исправить данный момент. Благодарю!2 балла
-
кому надо тот найдет информацию. по сути установка движка с бд и проверка всех соответствий должна вестись программистом/разработчиком, а не просто обычным пользователем который без бюджета решил запустить магазин в стиле озон2. и не надо вводить пользователей в заблуждение, что мол появилась новая версия и всё. нужно бежать и ставить её. Это вообще не тема дискуссии и дело вкуса. Если у хозяина магазина стоит версия мускула 5.7 и магазин работает как часы уже несколько лет, то вообще не вижу смысла бежать в впереди паровоза и ставить сразу новые версии пыха и мускула. Хочешь использовать новые версии пыха и мускула на новой клубной сборке, то вперед. переделывай клубную сборку под себя. И вообще что жаловаться то на сборку? Хочешь помочь с разработкой клубной сборки - вперед! Не хочешь, тогда не надо выкатывать свои претензии. Если что то тебя не устраивает в сборке, возьми и просто опиши проблемы, только не в стиле претензий, а по человечески2 балла
-
как вариант воткнуть патч но лучше вообще не использовать встроенный в админку редактор и вносить правки в файлы либо напрямую, либо, что более правильно - через модификаторы2 балла
-
Там есть настройка, которая включает автоматический выбор первой доступной доставки.2 балла
-
Делал как то по просьбе. Смысл задачи был такой. Выводим в карточке товара во вкладках статьи (Каталог - Статьи). В качестве названия вкладки Заголовок статьи, ну и содержимое это Описание статьи. При чём без привязки к конкретной статье , как в примере ТС. Добавил просто чекбокс "Показать в товаре", аналог "Отображать в футере". Отмечаем чекбокс и статьи выводятся в товаре в любом количестве. Так мне кажется логичнее и удобнее. Статьи во Вкладках.ocmod.xml2 балла
-
Gray Images - Unishop2GrayImages Небольшой мод для товаров в категории. Если товара нет в наличии , то его изображение становится чёрно-белым. Unishop2GrayImages.zip2 балла
-
Гайс, я второй день ломаю голову над проблемой с модулем Импорт / Экспорт anyCSV/XLS/YML PRO PIM Edition Opencart. Поставил, первый раз загрузил товары почти без проблем (были варнинги из-за того что в выгружаемых файлах были png вместо gpeg, поправил ). Теперь при попытке загрузить новые товары с новой ссылки yml у меня все равно загружаются (или обновляются) все мои старые товары. Я уже и модуль удалял, и базу чистил. Что это может быть? Откуда подгружаются старые товары и как это все исправить? (Плюс еще какой-то баг, что в каталоге товаров у меня 59 категорий, но ни одного не показывается. Не знаю, связано это или нет)1 балл
-
Да, но тут все зависит еще и от самих модулей калькуляторов, не в каждый модуль можно будет это добавить1 балл
-
Opencart: Водяные знаки и конвертация в Webp для изображений товаров Добавил seregin-pro Добавлено 31.03.2025 Категория Прочие Решения Просмотр файла1 балл
-
так вроде никогда не будет поиска по емейлу, если мы хотим найти по части емейла1 балл
-
Модуль "NWA - Сообщить о наличии", "Предзаказ" (для Opencart 3.x.x) Добавил Amiddg Добавлено 27.12.2024 Категория Письма, Рассылки, sms Просмотр файла1 балл
-
Видимо это подразумевает что будет использоваться и АПИ и ключи от СДЭК в любом случае. Иначе нужна собственная база данных по ПВЗ и расценкам , а она ещё и обновляемой должна быть. Просто для справки, у СДЭК есть виджет. https://www.cdek.ru/ru/integration/modules/2/1 балл
-
Модуль шик блекс, маст хев. - современный API Яндекс Переводчика не работает, похоже. - На вкладе Перевода почемуто нет возможности выбора нескольких полей чтобы сразу переводить, по одному... в целом с этим можно было бы жить если бы Апи работал.1 балл
-
https://github.com/OpenCart-Club/opencart/commit/3d850029bfe3c9003c3f4f94cfef64907b727fcc целью коммита была оптимизация использования памяти из-за вложенных элементов массива backup. Но зацепило и встроенную возможность по использованию языковых переменных в родительских контроллерах. Мне кажется, что это исправление бага, разработчики модулей вполне вправе ориентироваться на механизм чистого опенкарта. по версии сборки присоединяюсь к вопросу1 балл
-
попробуйте модификатор. закинуть в папку system и в админке обновить модификаторы related_reviews.ocmod.xml1 балл
-
для восстановления прав доступа в админке подключиться к БД и выполнить запрос UPDATE `oc_user_group` SET `permission` = '{"access":["user\\/api","user\\/user","user\\/user_permission"],"modify":["user\\/api","user\\/user","user\\/user_permission"]}' WHERE `user_group_id` =1; где 1 - обычно по умолчанию группа администратора потом зайти в Настройки > Пользователи > Группы пользователей и выставить все нужные права доступа1 балл
-
Оказывается нужно еще было в настройках магазина ее выбрать. После этого автоматом завелось. Спасибо за полезное дополнение!!!1 балл
-
вместо того чтобы отфутболивать потенциальных покупателей, лучше не отключать товары, а предлагать альтернативы например через такой модуль1 балл
-
DELETE FROM oc_product_attribute WHERE attribute_id IN (12, 19, 48, 49, 50, 51)1 балл
-
в файле .htaccess после строки RewriteBase / добавьте # Redirect www -> not www RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] # Redirect http -> https RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] первая часть редиректит с www на без www вторая - редирект протокола, если используется ssl если сертификата нет - используйте только первую часть и замените в ней https на http1 балл