-
Posts
423 -
Joined
-
Last visited
Content Type
Profiles
Forums
Marketplace
Articles
FAQ
Our New
Store
Blogs
module__dplus_manager
Everything posted by 100napb
-
Ошибка при переключении версии PHP c 5.6 на 7.2
100napb replied to mario512's topic in Opencart 2.x: General questions
если Ваш файлик /www/system/library/cart/currency.php стандартный и не содержит правок, то на 33 строке у него вот такое: $amount = $value ? (float)$number * $value : (float)$number; в новых версиях пхп "ужесточил" правила приведения типов переменных и сообщает Вам о том, что значение одной из переменных определяется как нечисловое. В то время, как идет операция умножения, которая подразумевает, что работать будем с числовыми значениями. Что делать? Сделать принудительное преобразование значения переменной в число. Например так: $amount = $value ? (float)$number * (float)$value : (float)$number или вот так: $amount = $value ? (float)$number * (int)$value : (float)$number Пробуйте. Должно помочь. -
Если Вам прям интересно понять разницу, то банально откройте sql-файлик бекапа и загляните в содержимое: какие сущности каким бекапом делаются. Вам совершенно верный ответ дал @Tom, а именно: бекап средствами OC делает бекап данных из существующих таблиц. Там и команды используются типа trucate table с последующим insert'ом данных. Ко всему прочему, структура файла и способ организации строк в бекапе средствами OC явно неоптимальный, из-за чего такая разница в объема файла. Я для себя ради интереса сделал в одно и то же время бекапы с сайта и открыл файлики бекапов посмотреть: там разница в количестве строк в несколько раз )) Другое дело, бекап средствами mysql\хостера: там снимается резервная копия ВСЕЙ базы, включая таблицы, их структуру, вьюхи, триггеры, индексы и прочая. Такие бекапы можно смело переносить на другие сервера\хостинги, в отличие от бекапа из ОС, который, судя по всему, без напильника подойдет только к этому же магазину, с которого был снят. По личному опыту скажу, что уже как с десяток лет пользуюсь командами типа: для дампа а для восстановления из бекапа: и ни разу не было проблем.
-
Не 6, а 5 в файле /admin/controller/catalog/category.php ищите вот эту функцию и измените всего 1 цифру, которая идет напротив `limit`. public function autocomplete() { $json = array(); if (isset($this->request->get['filter_name'])) { $this->load->model('catalog/category'); $filter_data = array( 'filter_name' => $this->request->get['filter_name'], 'sort' => 'name', 'order' => 'ASC', 'start' => 0, 'limit' => 5 ); а вообще... не помню, но по-моему (не уверен на 100%) при использовании SeoPRO Ваша задача решается из коробки, потому что вкладка "связи" имеет вот такой вид, с выводом всех категорий. Если у Вас русская сборка (ocStore), то в настройках магазина попробуйте включить тип ЧПУ SeoPRO
-
Не уходят письма для подписчиков
100napb replied to oleg711992's topic in Opencart 3.x: Setting and optimization
Уточните хотя бы версию опенкарта о чем именно идет речь? Наверное, имелось ввиду: маркетинг -> почтовая рассылка -> в выпадающем списке выбрано "подписчикам" ? (/admin/index.php?route=marketing/contact) В любом случае, прежде всего Вам нужно проверить была ли фактическая попытка отправить письма? Запись об этом должна быть в логах сервера. Например, вот здесь: /var/log/maillog-YYYYMMDD. Запись от отправке \ попытке отправки ЛЮБОГО письма должна быть отражена в логах. Там же смотреть ошибки, если они есть и уже с ошибками писать сюда. Если никаких записей об отправке нет, значит фактически ничего и не отправлялось и, очевидно, надо копать в сторону проверки условий выборки получателей в контроллере\модели почтовой рассылки - вполне вероятно, что после нажатия кнопки отправить, система не находит ни одного получателя и ничего не отправляет. убедиться в отсутствии ошибок после отправки рассылки в логах опенкарта (система-инструменты-журнал ошибок) и логах веб-сервера. Помните, что половина ответа уже кроется в правильно заданном вопросе -
Sql запрос выдает 4 милона строк
100napb replied to so0EmFD190's topic in Opencart 2.x: General questions
Напишу ниже без иронии, т.к., очевидно, не все умеют в юмор и не видят толстых намеков )) Ваш запрос отрабатывает верно и показывает тот результат, который Вы запросили. Беда в том, что Ваш селект производит выборку из ДВУХ таблиц (product и product_description), но Вы не указали в условии запроса логику выборки. Вот и получается на выходе, что для каждой строки первой таблицы запрос отображает все записи из второй таблицы Об это Вам выше и толкуют, говоря про декартово произведение. вместо непонятного where 1 укажите явную логику выборки, например: where oc_product.product_id = oc_product_description.product_id по-русски говоря, объясните запросу, что хотите видеть в результате две таблицы объединенные по значению поля product_id, например. Чуть подучите матчасть по простейшим sql-запросам прежде чем просить помощи. Займет немного времени, и у участников любого ресурса будет больше желания помогать, видя тот факт, что Вы хотя бы старались -
Я лично с Вами согласен и вот почему: Постоянно Вы этим функционалом пользоваться не будете. Потому коммерческий смысл вкладывать деньги в разработку того, что не окупится, весьма сомнителен Помимо phpAdmin есть масса специализированного и даже бесплатного софта для работы с БД, на фоне которого phpAdmin уныл, кастрирован и неудобен. Взять хотя бы Toad или какой-нибудь DbForge. Есть предложение решить Вашу задачу нехитрыми sql-запросами, которые бы работали с заранее подготовленными в дружелюбном экселе данными. Я бы для себя сделал так: создал бы в БД табличку, в которую бы импортировал подготовленные в экселе данные. А далее прогонял бы в базе пару sql-запросов, которые бы делали\снимали привязки товаров из нашей таблички к категориям. Дешево и сердито
-
по сабжу, в копилку полезных запросов: Вот эти строчки красиво посчитают Вам количество и сумму заказов магазина в разрезе месяцев\годов. Можно потом в экселе диаграмму построить, если хотите. Нужно только указать ВАШИ id-шники статусов заказов, которые запрос будет суммировать. В примере текста запроса ниже это 8, 9, 10, 11, 12 - замените их на свои. Например, это все id-шники оплаченных\отгруженных заказов, за которые вы УЖЕ получили денежку. Подсмотреть эти id-шники можно в таблице oc_order_status (префикс oc_ может отличаться) Запрос Результат
-
Можно и автоматом, причем только средствами mysql, даже без всяких cron \ php. Вы только определитесь, по какому событию\условию нужно вносить изменения? В одном случае Вам стоит почитать про триггеры (настраивается на какое-то событие в БД; например, при изменении\добавлении строки в какой-либо таблице), а в другом случае, если нужно вносить изменения по расписанию\по времени , то стоит почитать про события (CREATE EVENT syntax). Например, у меня был такой костыль, который каждые полчаса мониторил новые отзывы и начислял авторам бонусные баллы, проверяя, при этом, что бы дважды бонусы не начислялись за повторный отзывы\ответы одному и тому же автору... или, помню было, автоматически менялись статусы заказов с проверкой всяких условий... и ни одной строчки на php )
-
Если я правильно понял, автор хочет получить информацию о весе оформленных заказов... инфа о них хранится в табличке oc_orders Как альтернативный вариант: можно сразу селектом из базы достать нужное значение, сделав обработку строки средствами БД. Просто, дешево по ресурсам и эффективно $order_id = 5000; $sql = "SELECT SUBSTRING(oo.shipping_method, LOCATE('~', oo.shipping_method), LOCATE('кг.', oo.shipping_method) - LOCATE('~', oo.shipping_method)) FROM oc_order oo WHERE oo.order_id = '".$order_id."'"; $massa = $this->db->query($sql)->row;
-
Emoji иконки в выдаче и на сайте
100napb replied to nibbl's topic in SEO-питання (оптимізація та просування магазину)
тайтл и дескрипшн хранятся в табличке бд oc_product_description (префикс ос_ у Вас может быть иным). Соответственно, для этой таблички нужно будет изменить кодировку, что бы "научить" ее хранить эмодзи. ALTER TABLE oc_product_description CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; эээм... открыть карточку товара для редактирования в админке и в поля тайтла\дескрипшена добавить смайлы, после чего сохранить, сбросить всякие кэши, если есть, открыть нужную карточку товара в браузере и проверять (html код страницы) Возможно, Вам потребуется еще в настройках коннекта к БД опенкарта так же изменить кодировку. Ищите файл /system/library/db/mysqli.php, а в нем измените всего одну строчку $this->connection->set_charset("utf8mb4"); Как увидите, что результат есть, можете отправлять странички на переобход в ручном режиме. В вебмастере яндекса есть такой инструмент. -
Emoji иконки в выдаче и на сайте
100napb replied to nibbl's topic in SEO-питання (оптимізація та просування магазину)
Используйте эмодзи как хотите и где хотите. Только убедитесь, что они будут нормально сохранятся и извлекаться из БД - без искажений\обрезаний. Может быть будет полезна вот эта темка (не так давно решал для себя подобный вопрос) -
100500+ Ну и мысли вслух Пессимистическая позиция для ОС с его достаточно простой и прозрачной структурой БД (менее 200 таблиц), которая практически не меняется годами и в подавляющем большинстве случаев работает под управлением одной и той же СУБД, имхо, различные Object-Relational Mapping не дадут никаких преимуществ, кроме как снизят и без того невысокий порог вхождения для разработчиков модулей: теперь им и можно даже не иметь опыта написания несложных SQL-запросов. решения, использующие различные "query builder'ы", будут заведомо менее быстрые и более ресурсоёмкими, что негативно скажется на общей производительности, а в особенности - на крупных проектах. любой "query builder" является относительно топорным и угловатым инструментом, позволяющий решать лишь относительно типовые задачи; одним словом - это не панацея. Оптимистическая позиция внедрение query builder'а значительно сокращает время разработки: программист может вообще не заморачиваться за архитектуру базы. при организации работы с данными приложения через ORM, БД можно практически безбоязненно денонармализировать, не боясь того, что "что-то" отвалится стильно, модно, молодежно. Почти так же, как машин лёнин и ИИ :)))
-
Медленные запросы
100napb replied to vasuanin's topic in Настройка и мелкая работа по уже существующему сайту
¯\_(ツ)_/¯ в OC много подобного "из коробки" и Вы это лучше меня знаете)) ни я, ни топикстартер не виноват в том, что этот монструозный запрос кто-то родил на свет )) а так... можно переписать, можно полнотекстовый индекс попробовать добавить, можно... не патовая ситуация, одним словом -
Лучше к хостеру, как и советовали выше. Ошибка типовая \ фиксится легко, если есть компетенция. А папка tmp может иметь собственные лимиты, вне зависимости от свободного места на диске.
-
Медленные запросы
100napb replied to vasuanin's topic in Настройка и мелкая работа по уже существующему сайту
весь лог не перелопатил, но в нем встречаются в осномном два тяжелых запроса. Один типовой из стандартного метода опенкарта (getProducts из catalog\model\catalog\product.php): но время выполнения просто невменяемое - местами более 15 сек о_О. Это при каждом открытии карточки товара такое. а еще есть какой-то фильтр, который генерит безумные запросы со временем выполнения до 20сек, типа Налицо отсутствие оптимизации БД. Судя по всему, у Вас достаточно много товаров, а Mysql, поди, работает на дефолтовых конфигах 1. Их всего несколько. Но запросы "типовые". 2. Их медленное выполнение может быть связано с целым рядом причин: отсутствие индексов, сильная фрагментация таблиц, резкое увеличение объема данных (импорт нескольких тысяч товаров или подобное). Точно сказать сложно без анамнеза. 3. Возможно, стоит поискать специалиста, который сначала займется настройкой сервера mysql. А затем, по результатам, решить - стоит ли оптимизировать сами запросы. Могу взяться посмотреть\исправить. Мне интересно - скучаю иногда по "старой" работе (за плечами несколько лет корпоративной работы в должности админа баз данных). Пишите в ЛС, если что. -
Выделил красным самое важное. Для выполнения запроса(запросов) не хватило свободного места в папке /tmp. Может быть даже закончилось место на диске вообще. Для начало либо перезагрузите свой сервер, что бы /tmp очистился (это папка с временными данными), либо попробуйте почистить ее вручную.
-
350 Завантажити / Придбати розширення Прошлые заказы и товары клиента (Расширенный вид заказа в админке) Модуль расширяет стандартную форму просмотра заказа в админке OpenCart, органично добавляя сводную информацию о клиенте, его заказах, а так же ранее заказанных клиентом товарах. Этим реально удобно пользоваться. Какую задачу решает модуль Сводная информация позволит менеджеру интернет-магазина оперативно оценить важность клиента и его значимость. Так же, благодаря сводным данным, можно сделать выводы об интересах и предпочтениях клиента для того, что бы дать рекомендации или обратить внимание на товары, которые хорошо сочетаются или дополняют те, что клиент заказывал ранее. Благодаря модулю Вы не пропустите ни одного повторного заказа, а Ваши клиенты будут превращаться в постоянных покупателей благодаря тому, что их узнают и помнят о каждом сделанном ранее заказе. Уже более года функционал модуля используется на рабочих проектах, где отлично себя зарекомендовал. А именно: клиенты очень ценят индивидуальный подход при выявлении повторного заказа (а все видно сразу в заказе) можно смело предлагать различные бонусы и "плюшки", что бы усилить лояльность + видоизменять стандартные письма \ по-другому строить диалог, как уже со "старым знакомым" имея информацию о повторно заказываемых товарах, очень легко предлагать дополнительные позиции к заказу, что увеличивает сумму заказа Ссылка на демо (настройки модуля). Login\pass = demo\demo Ссылка на демо (вид заказа в админке). Login\pass = demo\demo Можете самостоятельно оформить на демо-сайте сколько угодно заказов с указанием одного и того же email (по нему определяется уникальность клиента) и после посмотреть свою историю в демо-админке Пример 1: Пример 2: Какая конкретно доступна информация о заказах\клиенте Модуль добавляет информацию следующего характера: Отображает список всех заказов, полученных от клиента, включая забытые\брошенные корзинки Считает сумму всех завершенных заказов клиента Показывает относительную позицию (ранг) клиента, исходя из суммы его заказов. Позволяет узнать "ценность" клиента, где 100% - это самый ценный клиент, который принес Вам больше всего денег. Выводит список всех ранее заказанных клиентом товаров (вычисляется из завершенных заказов и заказов в обработке) Позволяет мгновенно увидеть повторно заказываемые товары. Если клиент повторно заказывает некий конкретный товар, то в списке товаров заказа, рядом с колонкой "количество" для этого товара добавляется число в скобках. Это число отражает количество товара, которое ранее было заказано клиентом. Что можно настроить? Установка Лицензия Системные требования Планы на будущее Модуль окупается буквально с первыми же клиентами, которых Вы превратите в постоянных Автор 100napb долучення 12.09.18 Категорія Інші розширення Системные требования PHP 5.4+ Метод активации Без активации Ioncube Loader Нет ocStore 2.3 OpenCart.Pro, ocShop Не проверялось Звернення до сервера розробника
-
Как безопасно удалить 6к товара...?
100napb replied to l1key's topic in Opencart 2.x: Setting and optimization
Да, Вы правы. Поторопился. Прошу прощения. Ниже @auditor предложил гораздо более полное\правильное решение. -
Как безопасно удалить 6к товара...?
100napb replied to l1key's topic in Opencart 2.x: Setting and optimization
если задача актуальна, то решается за пару минут простым sql-запросом вида -- вот этот запрос покажет все нужные Вам товары SELECT * FROM oc_product op WHERE op.manufacturer_id = 11; -- если запрос выше показал то, что Вам нужно, то этот запрос ВЫКЛЮЧИТ указанные товары UPDATE oc_product op SET op.status = 0 WHERE op.manufacturer_id = 11; -- ну а этим запросом можно, как говорится, с глаз долой из базы вон )) DELETE FROM oc_product op WHERE op.manufacturer_id = 11; где manufacturer_id = ??? легко подсмотреть, открыв в админке "каталог" - "производители", навести мышкой на карандашик напротив нужного Вам бренда и опустив глаза вниз окошка браузера, в поисках вот этой строки Важно! Прежде всего выполните первый запрос, который select. ТОЛЬКО если он покажет в результатах нужные товары, можете выполнять update или delete. Если не уверены в своих действиях при выполнении запросов вида update \ delete, то делайте бэкапы базы\таблицы! -
Как создать правильный запрос в SQL?
100napb replied to IhorDod's topic in Допомога програмістам та розробникам
попробуйте вот так. для своего удобства и самопроверки, использовал стандартные таблицы oc. Уверен, под свои таблички подгоните. Результаты удобно, например, explode'ить, что бы разобрать из строки на отдельные значения на выходе результат вроде такого - в строке перечислены все категории, в которые входит каждый продукт А вообще, freelancer должен быть прав - в ОС 100% есть функция типа getProductCategories или что-то похожее. Конечно, она работает на родной структуре БД, на родных табличках. Но Вы можете подсмотреть, как там все устроено и сделать свою функцию с блэкджеком и прочим -
https, домен и поддомен. Разные хостинги
100napb replied to Desmee's topic in Opencart 2.x: Installing and updating
У меня хорошие новости. Все решается и условно бесплатно, при наличии головы. Вы правы. Перенаправить с рабочего https сайта на иной ресурс без https не выйдет - 100% сработает проверка сертификата до редиректа. Покупать сертификаты нет большой нужды. Let's encrypt же есть. С помощью какого-нибудь certbot можно получить бесплатный сертификат на 90 дней и настроить его автоматическое продление. У меня на всех проектах так работает уже годами - все шикарно. Гуглите certbot + название вашей операционной системы + название вашего вебсервера. Certbot centos 7 nginx, например. Вся настройка, даже в первый раз, займет менее 20 минут. Со второго и третьего раза так и за 5 минут управиться можно. Изучите темку. Вам пригодится. Может даже сертификаты покупать перестанете ))) -
если у Вас собственный сервер + жуть как хочется именно php7.2+, то, как вариант, можно поставить библиотеку mcrypt из pecl'a. Погуглите по названию пакета php72-php-pecl-mcrypt или что-то в духе php 7 mcrypt pecl Проверял лично - полет нормальный Вырезать проверку наличия mcrypt в установщике - тот еще костыль. Рано или поздно это создаст проблем и Вы вынуждены будете их решать (попутно еще сломав что-нибудь). Если не на на продуктив - баловаться можно. А на рабочем проекте не надо так. Ну вот, например. И таких примеров не мало будет. У меня вот некоторые платежные модули без mcrypt не работали =\
-
Вероятно, Ваш веб-сервер (апач там или php-fpm) на новом хосте\сервере банально не может записать файлик с сессией. Это частая проблема при настройке свежих серверов и ответ кроется в том, что не достаточно прав на запись в каталог с сессиями для пользователя, из-под которого работает веб-сервер. Скорее всего, в логах веб-сервера (если апач, тот ищите тут - /var/log/httpd/) есть соответствующая запись об этом - гляньте там и ссылка на каталог будет, на который нужно дать права или который Вы переназначите в настройках веб-сервера.