- В опенкарте 3.0.3.6 ошибка template is not defined
Откройте файл
system/library/template/twig.php
и замените код
$loader = new \Twig_Loader_Array(array($filename . '.twig' => $code));
на такой код
$loader1 = new \Twig_Loader_Array(array($filename . '.twig' => $code)); $loader2 = new \Twig_Loader_Filesystem(array(DIR_TEMPLATE)); // to find further includes $loader = new \Twig_Loader_Chain(array($loader1, $loader2));
после этого обязательно обновите кэш твига на главной странице админки опенкарта!
Внимание! Иногда строка для замены может иметь другой вид, если не нашли у себя строку выше, то найдите такую и замените ее кодом выше
$loader = new \Twig\Loader\ArrayLoader(array($filename . '.twig' => $code));
- Ломается вёрстка в опенкарте 3.х на PHP 7.4
Откройте файл
system/library/template/twig/Lexer.php
и код в строке 164
$text = rtrim($text);
замените на код
if ($this->options['whitespace_trim'] === $this->positions[2][$this->position][0]) { // whitespace_trim detected ({%-, {{- or {#-) $text = rtrim($text); }
после этого обязательно обновите кэш твига на главной странице админки опенкарта!
- При оформлении заказа блоки перезагружаются и на этом все останавливается
Проверьте, включены ли хотя бы один вариант оплаты и один вариант доставки (если доставка требуется для ваших товаров)
Если нет, то включите хотя бы по одному простому варианту оплаты и доставки (например самовывоз и оплата при доставке),
Названия этих полей можно переименовать в их языковых файлах, например в «по согласованию»
- Модуль отображается криво и не работает (не реагирует на кнопки и на изменения полей)
- Убедитесь, что залили файлы из каталога:
02-install/upload for .../catalog/view/theme/default/
в Вашу тему:
/catalog/view/theme/ВАША_ТЕМА/
- Если файлы залиты, но стили и/или скрипты не подключаются, то скорее всего в Вашей теме вырезано подключение статики и скриптов в шаблоне.
Откройте файл
catalog/view/theme/ВАША_ТЕМА/template/common/header.tpl
Если версия опенкарта меньше 3.0, то проверьте наличие следующих блоков и добавьте их если нужно до тэга </head>
<!-- подключение стилей модулей --> <?php foreach ($styles as $style) { ?> <link rel="<?php echo $style['rel']; ?>" type="text/css" href="<?php echo $style['href']; ?>" media="<?php echo $style['media']; ?>" /> <?php } ?> <!-- подключение скриптов модулей --> <?php foreach ($scripts as $script) { ?> <script type="text/javascript" src="<?php echo $script; ?>"></script> <?php } ?>
Если версия опенкарта 3.0 и выше, то откройте файл
catalog/view/theme/ВАША_ТЕМА/template/common/header.twig
Проверьте наличие следующих блоков и добавьте их если нужно до тэга </head>
{% for style in styles %} <link href="{{ style.href }}" type="text/css" rel="{{ style.rel }}" media="{{ style.media }}" /> {% endfor %} {% for script in scripts %} <script src="{{ script }}" type="text/javascript"></script> {% endfor %}
Иногда не хватает либо блока для подключения стилей, либо для подключения джаваскриптов, но чаще всего вырезаны оба куска кода.
- Если используете сжатие скриптов и стилей, то временно отключите их, либо обновите кэш сжатых скриптов и стилей. Также в админке модуля в разделе интеграции с темой включите опцию "убрать версию со ссылок, используется сжатие"
- Убедитесь, что залили файлы из каталога:
- При подтверждении заказа ничего не происходит: нет редиректа на страницу успешного оформления, или не приходят письма, или заказ не виден в админке опенкарта
Задача модуля Simple - создать заказ через модель заказа и загрузить модуль оплаты, передав ему управление.
Затем модуль оплаты подтверждает заказ через ту же модель заказа опенкарта, при этом модель заказа выполняет действия:
- меняет статуса заказа (заказ становится виден в админке), новый статус заказа передает модуль оплаты
- проверяет на мошенничество (в опенкарте есть баг в одной версии)
- отправляет почту покупателю и админу (часто бывают ошибки при отправке, например либо не работает mail на хостинге, либо smtp из-за неверных настроек почты)
- отправляет смс (если настроено и включено, тоже часто бывают ошибки)
- выполняет разные действия (списание количества, списание бонусных баллов, погашение купонов и т.п)
- выполняет код из разных модификаторов, этот код может содержать ошибки (например не предназначен под текущую версию опенкарта)
Это всё происходит уже после работы модуля Simple и не в его коде соответственно.
Модель заказа опенкарта - это файл /catalog/model/checkout/order.php
Она одна на все системы заказа (стандартный, Simple, другие системы заказа, быстрые заказы и т.п.) плюс с ней же работают модули оплаты (по номеру заказа берут информацию о заказе из базы данных), поэтому если не работает модуль оплаты, то в первую очередь рекомендуется проверить стандартный заказ.
Также причиной остановки подтверждения заказа могут быть ошибки в джаваскриптах в модуле оплаты.
Соответственно и решение кроется в одном из действий:
- проверить подтверждение заказа другим модулем оплаты, чтобы исключить ошибки в конкретном модуле оплаты
- сменить вариант отправки почты в основных настройках магазина
- проверить настройки почты для уведомлений (порой указывают несколько адресов, используя неправильный разделитель в списке)
- проверить настройки статусов в настройках модулей оплаты
- отключить отправку смс
- отключить все модули проверки на мошенничество
- отключить все модификаторы, которые могут править модель заказа опенкарта
- обновить или сбросить кэш менеджера дополнений
- сделать почту в блоке покупателя обязательной, либо если она необязательная, то указать реальную почту для почты-заглушки
- В админке модуля всплывают непонятные ошибки в красном сообщении
Попробуйте в файле
/admin/view/template/[extension/]module/simple.tpl
вместо
async: true
сделать
async: false
- После установки модуля перестали приходить письма либо админ или пользователь не получает письмо о заказе
Модуль не отправляет письма, все письма отправляет опенкарт после сохранения данных в БД
Например письма о заказе отправляются из модели заказа:
/catalog/model/checkout/order.php
при подтверждении заказа модулем оплаты.
Письма о регистрации пользователя отправляются из модели покупателя:
/catalog/model/account/customer.php
Как диагностировать неполадки:
- Проверьте форму обратной связи. Если отправка не работает и там, то смените вариант отправки почты в основных настройках магазина или внимательно проверьте настройки почты там же. Измените и проверьте адреса почты админов, если указываете несколько, проверьте разделители между ними и отсутствие пробелов
- Если не работает на странице регистрации, то отключите модификаторы, которые могут править модель покупателя.
- Если не работает на странице заказа, то посмотрите ответ про подтверждение заказа выше
- В каком файле модуля отправляются письма, как их изменить или изменить их текст?
Модуль не отправляет письма, все письма отправляет опенкарт после сохранения данных в БД
Например письма о заказе отправляются из модели заказа:
/catalog/model/checkout/order.php
при подтверждении заказа модулем оплаты.
Письма о регистрации пользователя отправляются из модели покупателя:
/catalog/model/account/customer.php
Шаблон письма о заказе
/catalog/view/theme/тема/template/mail/order.tpl
Обычно темы не содержат шаблоны писем и они в любом случае лежат в дефолтной теме
Языковой файл письма о заказе
/catalog/language/язык/mail/order.php
Соответственно нужно менять код или текст в этих файлах
Не забывайте, что часто эти файлы правятся различными модификаторами, поэтому после изменения файлов всегда обновляйте кэш менеджера дополнений!
- Блок доставки и блок адреса доставки не отображаются совсем
Проверьте у ваших товаров настройку "требует доставки"
В некоторых сборках опенкарта в классе корзины присутствует ошибка, проверьте, нет ли ее у Вас.
Откройте файл:
/system/library/cart.php
найдите метод:
public function hasShipping() {
и посмотрите, не стоит ли сразу за указанной строкой возврат false:
return false;
Если данная строка присутствует сразу после названия метода, то удалите ее.
- Не отображаются некоторые варианты доставки или оплаты
Работа модулей доставки и оплаты в модуле Simple идентична работе этих же модулей в стандартном заказе: модуль передает данные адреса модулям доставки и оплаты и отображает то, что они вернули. Поэтому самый простой способ проверить, что всё работает нормально, это отключить замену ссылок в админке модуля и проверить работу всех шагов стандартного заказа.
Частой ошибкой является установка у модулей доставки и оплаты каких-либо геозон в их настройках и попытка вывести варианты доставки и оплаты, не предлагая пользователю выбрать страну и/или регион. Соответственно нужно либо установить "все геозоны" в настройках модулей доставки и оплаты, либо открыть настройки полей Страны и Региона в админке Simple и задать там значения по умолчанию, чтобы они подходили под геозоны модулей доставки и оплаты.
- Как добавить новые варианты доставки?
В опенкарте варианты доставки управляются отдельными модулями доставки, для них существует отдельный раздел в админке опенкарта.
Можно использовать как встроенные модули доставки, так и устанавливать новые.
- Как добавить новые варианты оплаты?
В опенкарте варианты оплаты управляются отдельными модулями оплаты, для них существует отдельный раздел в админке опенкарта.
Можно использовать как встроенные модули оплаты, так и устанавливать новые.
- Как изменить текст на страницах модуля?
Все названия полей, заголовков у наборов полей, тексты ошибок настраиваются в админке модуля в настройках полей.
Весь «статический» текст (названия блоков, кнопок и т.п.) хранится в файлах:
/catalog/language/язык/account/simpleregister.php
/catalog/language/язык/checkout/simplecheckout.php
- Как изменить названия вариантов доставки или оплаты?
Каждый модуль имеет свой языковой файл, в которым можно изменить любой текст.
Языковые файлы модулей доставки:
/catalog/language/язык/[extension]/shipping/*.php
Языковые файлы модулей оплаты:
/catalog/language/язык/[extension]/payment/*.php
Названия файлов совпадают с кодами модулей доставки и оплаты
- Я установил модуль, но ссылки регистрация и заказ ведут на стандартные страницы опенкарта
Проверьте по порядку:
- Если уже включена нестандартная система заказа, то отключите её либо в модулях, либо отключив ее вкмоды и модификаторы
Внимание! Пропустите этот шаг, если версия вашего опенкарта 2.3.х или выше!
Залейте файл:
02-install/upload for .../system/library/url.php
из архива модуля в каталог:
/system/library/
в вашем магазине.
- Если версия вашего опенкарта 2.3.х или выше, перейдите в раздел опенкарта «Дополнения - Модификации», проверьте включен ли модификатор «Simple url rewrite» и сбросьте кеш модификаций (вверху страницы кнопка "Обновить")
- В админ панели модуля в основных настройках страниц проверьте, что включена замена ссылок (по умолчанию они включены) и сохраните настройки
- Проверяйте ссылки с главной страницы опенкарта, а не обновляя стандартную регистрацию или заказ, модуль их не трогает и они остаются теми же самыми.
-
Если ссылки все же остаются старыми, то скорее всего они жестко прописаны в Вашей теме, откройте каталог Вашей темы и выполните по файлам поиск строк:
checkout/checkout account/register
Если найдете указанные строки, то сделайте замену на:
checkout/simplecheckout account/simpleregister
Иногда ссылки жестко прописаны в каких-нибудь модулях всплывающей корзины
- Модуль периодически отключает замену ссылок
Модуль отключает замену ссылок, если ключ в базе не соответствует домену сайта, под которым открывается модуль.
-
Адрес сайта должен быть указан явно в файлах
/admin/config.php
/config.php
- Если есть мультимагазин, то необходимо проверить корректность его настроек, необходимо в поле для обычного url указывать адрес http://, а в поле для ssl указывать адрес https://
- Если есть тестовый домен, то нужно проверить, что тестовый и основной сайт не используют одну и ту же базу
- Нужно проверить, что у сайта нет технического домена хостера, по которому его можно открыть
- Нужно проверить, что конфигурация хостинга не позволяет открыть сайт под любым адресом или под айпи адресом
-
Если все пункты проверены, то можно в
/index.php
сразу после
<?php
добавить код
$_SERVER['HTTP_HOST'] = 'тут.домен.сайта';
-
- Я вижу пустую страницу, когда захожу на любую страницу модуля
На многих серверах отключен показ фатальных ошибок и вместо этого выводится пустой экран.
Если видите пустую страницу в админ панели модуля, то откройте файл
/admin/index.php
Если же видите пустую страницу модуля в основной части сайта, то откройте файл
/index.php
Затем в этом файле сразу после строки:
<?php
добавьте:
error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);
- Убрал многие поля со страницы заказа и теперь в админке не могу отредактировать заказ пока их не заполню, что делать?
Установите модификаторы для отключения валидации полей в админке опенкарта из архива модуля из каталога /misc
Визуально при этом в админке ничего не изменится, просто не будет требовани заполнить обязательные поля.
- Ошибки в админке опенкарта при редактировании заказа или покупателя
Админка опенкарта работает сама по себе через свои модели и установка модуля на это не влияет.
Отмените все правки в файлах опенкарта, отключите все вкмоды и модификаторы и включайте поочередно.
- Я вижу сообщение, что содержимое страницы не может быть отображено (ошибка в типе содержимого)
Временно отключите сжатие страниц в настройках сервера и в настройках опенкарта. Если в поток до сжатого контента попадают разные символы, например BOM символы или текст ошибок в PHP, то браузер не может распаковать и отобразить контент. После отключения сжатия можно увидеть текст ошибки и исправить, затем включить сжатие обратно. Если причина в буквальном смысле не видна, то есть страница без сжатия открывается, но в начале страницы нет ошибок, то это BOM символы и для их поиска существуют разные утилиты.
BOM символы вставляются виндовым блокнотом, поэтому никогда не пользуйтесь им для правок файлов!
Утилиту для поиска BOM символов можно скачать тут
- Текст миникорзины в шапке опенкарта на странице заказа отличается от текста на других страницах
Текст для миникорзины можно задать как в разделе Интеграции с темой, так и в настройках блока Корзины страницы заказа. Корректный текст для вашей темы можно найти в следующих файлах
/catalog/language/язык/checkout/cart.php
/catalog/language/язык/тема/cart.php
/catalog/language/язык/тема/common.php
Если в тексте миникорзины нужно поменять местами цену и количество товара, то места для них можно указать явно через место подстановки {quantity} и {total}
- У меня тема themeXXX (вместо XXX - цифры). При переключении способов оплаты пропадают радио-кнопки. Что делать?
Откройте настройки модуля, меню «Интеграция - Джаваскрипты». В конец текстового поля вставьте следующий код (не заменяя уже имеющийся там):
var o = $('.simple-content .radio'); if (o.length) { var input; var arrVal = []; o.each(function (i) { input = $(this).find('input[type="radio"]'); if ($.inArray(input.attr('name') + input.attr('value'), arrVal) == -1) { input.attr('id', input.attr('name') + input.attr('value')) input.insertBefore($(this).find('label').attr('for', input.attr('name') + input.attr('value'))); arrVal.push(input.attr('name') + input.attr('value')) } else { input.attr('id', input.attr('name') + input.attr('value') + i.toString()); input.insertBefore($(this).find('label').attr('for', input.attr('name') + input.attr('value') + i.toString())); arrVal.push(input.attr('name') + input.attr('value') + i.toString()); } }); } var o2 = $('.simple-content label.radio-inline'); if (o2.length) { var input; o2.each(function () { input = $(this).find('input[type="radio"]'); input.attr('id', input.attr('name') + input.attr('value')) input.insertBefore($(this).attr('for', input.attr('name') + input.attr('value'))); }); } var o = $('.simple-content .checkbox'); if (o.length) { var input; var arrVal = []; o.each(function (i) { input = $(this).find('input[type="checkbox"]'); if ($.inArray(input.attr('name') + input.attr('value'), arrVal) == -1) { input.attr('id', input.attr('name') + input.attr('value')) input.insertBefore($(this).find('label').attr('for', input.attr('name') + input.attr('value'))); arrVal.push(input.attr('name') + input.attr('value')) } else { input.attr('id', input.attr('name') + input.attr('value') + input.attr('value') + i.toString()) input.insertBefore($(this).find('label').attr('for', input.attr('name') + input.attr('value') + input.attr('value') + i.toString())); arrVal.push(input.attr('name') + input.attr('value') + i.toString()); } }); } var o2 = $('.simple-content input[name=\'agree\'][type=\'checkbox\']'); if (o2.length) { o2.attr('id', o2.attr('name') + o2.attr('value')); o2.parent().append('<label for="' + o2.attr('name') + o2.attr('value') + '"></label>'); $('label[for="' + o2.attr('name') + o2.attr('value') + '"]').insertAfter(o2); } var o3 = $('.simple-content .checkbox-inline'); if (o3.length) { var input; o3.each(function (i) { input = $(this).find('input[type="checkbox"]'); input.attr('id', input.attr('name') + input.attr('value')) input.insertBefore($(this).attr('for', input.attr('name') + input.attr('value'))); }) }
Сохраните настройки и проверьте работоспособность.
Данный способ помогает не всегда, т.к. темы постоянно обновляются.
- Как отображать значения кастомных полей модуля в админке опенкарта
Если версия опенкарта 1.5.х, то нужно залить вкмоды из каталога
/misc/custom fields/opencart 1.5.x/
в
/vqmod/xml/
Если версия опенкарта выше 2.0 нужно установить оцмоды из соответствующего каталога
/misc/custom fields/opencart x.x.x/
в админке опенкарта.
После установки модификаций для opencart 2.0.x и выше, пожалуйста, перейдите в менеджер модификаций (дополнений) и нажмите вверху кнопку «Обновить» для сброса кэша.
Кастомные поля будут отображаться либо в отдельных блоках, либо на вкладке Дополнительно в информации о заказе (в опенкарте версий 2.x, 3.x)
- Как вставить кастомное поле в письмо, в счет, в адрес в списке адресов в личном кабинете пользователя?
Установите модификаторы для кастомных полей с архива модуля (см. пункт выше)
Откройте раздел форматов адреса в админке модуля и добавьте поля в форматы адреса
Внимание! Измененный шаблон отобразится только в заказах, сделанных после внесения изменений, так как шаблон адреса сохраняется вместе с заказом.
- Почему в письмо и в блок «Адрес покупателя» в админке не приходит поле телефона, хотя я указал поле {telephone} в настройках локализации?
В опенкарте поле «Телефон» (а так же поле «Компания») принадлежит объекту «Покупатель», однако в формате адреса используются только поля адреса, то есть те, которые привязаны к объекту «Адрес».
Вы можете создать своё дополнительное поле «Телефон» средствами модуля в разделе «Поля» (назначив ему произвольный id. Например, telephone_2), привязать его к объекту «Адрес» и вывести его в форму оформления заказа.
Далее вам нужно будет прописать это поле в настройках локализации вашей страны (используя его id в фигурных скобках. Например, {telephone_2}).
Далее вам нужно установить ocmod или vqmod для отображения значений кастомных полей в админке опенкарта.
Таким образом созданное вами поле будет отправлено в письме при следующих заказах (для старых заказов ничего не поменяется).
Подробнее об установке vq- и ocmod'ов читайте в вопросе «Как отображать значения кастомных полей модуля в админке опенкарта» ниже.
После установки vqmod'ов или ocmod'ов (в зависимости от версии вашего опенкарта) поле будет отображено в админке при просмотре заказа.
- Как сделать настройки модуля для разных групп покупателя?
- Создайте новые группы покупателей в "Продажи" - "Покупатели" - "Группы покупателя"
- В основных настройках магазина на вкладке "Опции" добавьте нужные группы в список групп для отображения
- В админке модуля Simple создайте новые поля для новых групп (напримери ИНН, ОГРН и так далее), не забывая про привязку полей к нужным объектам.
- В настройках нужной страницы (и нужного блока, если речь идет о странице заказа) добавьте новые поля в набор полей
- У нужных полей укажите зависимость от поля группы покупателя
- Настройте видимость и обязательность этих полей для разных групп покупателей
- Я создал группы покупателя, но часть не видна в списке на страницах модуля
Добавьте созданные группы в список отображаемых групп в основных настройках магазина на вкладке опций
- Как сделать разные поля для разных вариантов доставки или оплаты?
В настройках блоков можно создать разные наборы полей для разных варинатов доставки или оплаты
Также в настройках блока адреса доставки можно отключить отображение блока для разных вариантов доставки
- Что означает привязка к объекту в настройках полей?
Это означает объект, вместе с которым будет храниться поле (а значит и загружаться).
Поле покупателя хранится в таблице customer_simple_fields, привязано к покупателю по его идентификатору.
Поле адреса хранится в таблице address_simple_fields, привязано к адресу по его идентификатору.
Поле заказа хранится в таблице order_simple_fields, привязано к заказу по его идентификатору.
Внимательно обдумывайте вариант привязки поля при создании новых кастомных полей, чтобы избежать вопросов типа: почему поле не заполнено, когда пользователь зарегистрирован и начинает оформлять заказ. Так как номер заказа каждый раз новый, то поля с привязкой к заказу будут пустыми при создании заказа. Поля адреса и покупателя в свою очередь загрузятся с данных покупателя
- Почему текст кнопки порой меняется с "оформить заказ" на "подтвердить заказ"?
Первый этап работы - создание заказа через модель заказа опенкарта. В её метод передаются данные всех полей и данные корзины, она записывает заказ в базу и возвращает номер заказа. Этот номер заказа помещается в сессию.
Второй этап работы - загрузка модуля оплаты, который имеет свою форму оплаты, хотя эта форма может и не иметь ничего: ни текста, ни полей ввода, однако всегда содержит кнопку подтверждения заказа
- Как можно убрать вторую кнопку "подтвердить заказ"?
Модуль нажимает кнопку подтверждения заказа сам, если модуль оплаты не содержит текст или поля ввода
В первую очередь удалите или переименуйте (если есть) каталог в используемой теме (переименовать безопаснее, например можно что-нибудь добавить в конец названия)
/catalog/view/theme/тема/template/[extension/]payment
Ряд модулей вроде банковского перевода выводит текст перед подтверждением заказа, также он отправляет данный текст и на почту при подтверждении заказа. Поэтому можно открыть шаблон этого и подобных модулей оплаты
/catalog/view/theme/default/template/[extension/]payment/bank_transfer.tpl
и вырезать там вывод текста, то есть весь код до начала блока кнопок:
Всё, что выше кнопок можно вырезать <div class="buttons">...
Если же вы хотите выводить текст модуля оплаты при выборе этого варианта оплаты, то можете в админке модуля в разметке блоков добавить блок "помощь" и в его настройках указать произвольный текст для этого варианта оплаты.
- Как сделать поле обязательным?
В настройках полей задайте правила проверки полей
В наборе полей укажите нужные поля обязательными
- Поля даты и времени имеют неправильный формат или перевод
Модуль использует пикеры бутстрапа, который использует скрипт moment.js и для него нужно подключить файлы локализации
Залейте каталог локализации locale в каталог
catalog/view/javascript/jquery/datetimepicker/
Архив с каталогом локализации можно скачать по ссылке
- Что означают цифры в версии модуля и как часто стоит его обновлять?
Версия модуля состоит из трех цифр, разделенных точками.
Первая цифра меняется тогда, когда модуль полностью переписывается.
Вторая - при добавлении нового значимого функционала.
Третья - при исправлении ошибок и добавлении незначительного функционала.
Частота обновления зависит только от Вашего желания, так как ошибки необязательно повторяются у всех в силу разнообразия настроек модуля.
Так как модуль достаточно легко обновляется через /update, то можно не переживать насчет обновлений.
Если Вы нашли какую-либо ошибку в модуле, прежде всего обновитесь до последней версии, может быть данная ошибка уже решена.
- Как обновить модуль?
В архиве модуля есть инструкция по обновлению модуля
- После установки модуля у меня перестало работать все/админ панель/сайт начал тормозить/появились ошибки на разных страницах
Модуль ничего не правит в опенкарте и не заменяет его системные файлы. Для проверки можете удалить все файлы модуля.
Порой действие по обновлению кэша модификаций может приводить к ошибкам как в админке, так и в основной части опенкарта, что может создать иллюзию, что на это повлияла установка модуля, однако это не так. Самые распространенные проблемы при обновлении кэша: нет прав на запись в каталог кэша модификаций, неверный путь к каталогу модификаций в файле конфигурации опенкарта, отсутствующий каталог кэша модификаций, отсутствие системных модификаторов опенкарта. Ошибки могут вносить и разные модификаторы, которые хоть и были в списке до этого, но фактически не применялись до обновления кэша. Плюс ко всему в списке модификаций не видны модификаторы, которые находятся непосредственно в каталог /system и которые тоже могли не применяться до обновления кэша. Можно сделать сброс кэша кнопкой сверху справа и искать причину, отключая последовательно модификаторы и обновляя при этом кэш. Бояться обновления кэша не стоит, потому что проблемы довольно редки и часто связаны с неправильными правками в конфигах опенкарта либо в настройках сервера.
- Модуль отображается не по всей ширине страницы или наоборот не совпадает с шириной шаблона
Откройте раздел Интеграции с темой в админке модуля и выполните шаги по интеграции с Вашей темой.
Необходимо создать два файла simple_header.tpl и simple_footer.tpl и залить их в
/catalog/view/theme/ВАША_ТЕМА/template/common/
Для ряда тем в архиве модуля есть готовые шаблоны (в каталоге /misc/templates), можете попробовать залить их
- Корзина в двухколоночном макете наезжает на другую колонку, что делать?
В разметке блоков можно изменить ширину колонок, подобрав их таким образом, чтобы устранить перекрытие колонок.
В разметке блоков можно вынести блок корзины вне колонок, сделав его во всю ширину.
Можно отключить отображение колонки «модель» в корзине модуля в настройках блока «Корзина», если модель товаров не используется
- Где хранятся стили модуля?
Стили модуля определены в этом файле:
/catalog/view/theme/ВАША_ТЕМА/stylesheet/simple.css
- Как поместить поля покупателя в блок адреса?
Это сделать невозможно, так как блоки покупателя и блок адреса представляют собой разные модели опенкарта (и разные таблицы в базе данных со связью один ко многим).
Единственная возможность - разместить блоки друг под другом и включить настройку «объединить с блоком покупателя» либо создать новые кастомные поля с привязкой к объекту адреса и добавить их в набор полей адреса.
Поля Имя и Фамилия можно удалить либо в блоке покупателя, либо в блоке адреса, модуль будет подставлять их из другого блока (либо из покупателя в адрес, либо наоборот)
- Я поменял стили модуля, но не вижу изменений
Нажмите в браузере CTRL+F5, чтобы сбросить кэш браузера.
В некоторых темах может использоваться сжатие скриптов и стилей, необходимо почистить их кэш.
- Где хранятся шаблоны полей модуля?
Это файлы, имя которых начинается с simple_row, хранящиеся в каталоге:
catalog/view/theme/ВАША_ТЕМА/template/common/
либо в
catalog/view/theme/default/template/common/
если забыли скопировать файлы шаблонов модуля в свою тему при установке
- Как увеличить длину названия полей и уменьшить ширину самих полей в опенкарте 2.х - 3.х?
Откройте файл
catalog/view/theme/ВАША_ТЕМА/template/common/simple_row_field.tpl (.twig)
Ширина выводится через конструкцию
<?php echo $page == 'checkout' ? 'col-sm-4' : 'col-sm-2' ?>
<?php echo $page == 'checkout' ? 'col-sm-8' : 'col-sm-10' ?>
4 и 8 используются для страницы заказа, 2 и 10 - для остальных страниц (регистрация, аккаунт, адрес)
Измените числа на нужные значения, чтобы в сумме было 12, например на col-sm-6 и col-sm-6
Если используете опенкарт 3.х, обновите кэш твига (главная страницы админки опенкарта - шестеренка - две кнопки обновления)
- Я использую несколько языков. В русской и анлийской версии всё хорошо, а вот на других языках поля на странице оформления не переведены
Зайдите в настройки модуля и в настройках полей задайте названия для всех языков.
- Я использую тему Journal2 и модуль конфликтует с ней (либо я использую другую тему со встроенным сжатием стилей и скриптов)
В разделе «Джаваскрипты» включите настройку "убрать версию из ссылок".
- Как поменять ссылки на страницы модуля на красивые ЧПУ ссылки?
Все ссылки формирует опенкарт и установленные сео модули
Как правило данные модули работают по некой таблице соответствий вида: маршрут - короткая ссылка
Сами соответствия могут задаваться как в админке этих модулей, так и напрямую в таблицах соответствий в базе данных (вариант хранения соответствий может отличаться у разных модулей)
То есть для модуля Simple нужно задать такие соответствия:
checkout/simplecheckout - короткая ссылка на заказ
account/simpleregister - короткая ссылка на регистрациюОбычно все соответствия хранятся в базе данных в таблице url_alias
- После выбора пункта в выпадающем списке у меня пропадает весь выпадающий список (либо становится не таким красивым, как был раньше)
Скорее всего в вашей теме используется стилизатор селектов «Selectbox»
Откройте настройки модуля, меню «Интеграция - Джаваскрипты». В конец текстового поля вставьте следующий код (не заменяя уже имеющийся там):
$("select").not("[sb]").selectbox({ effect: "slide", speed: 400 });
Сохраните настройки и проверьте работоспособность.
Данный способ помогает не всегда, т.к. темы постоянно обновляются.
- Долго открывается страница заказа или долго перезагружаются блоки
Сам модуль не содержит в себе никакого кода, который мог бы долго выполняться. В силу своей специфики модуль вынужден загружать модули оплаты и доставки, некоторые из которых обращаются к удаленным серверам (например для расчета доставки) и это может сильно тормозить загрузку всей страницы.
В очень редких случаях могут тормозить опции товаров в корзине, например когда много товаров и много опций у товаров и стоит какой-нибудь модуль продвинутых взаимосвязанных опций.
- Как скрыть варианты доставки, если доступна бесплатная доставка?
Через админку модуля это не сделать, нужно править код модулей доставки.
На примере модуля фиксированной стоимости доставки /catalog/model/shipping/flat.php вставьте следующий код
if ($this->cart->getSubTotal() >= $this->config->get('free_total')) { $status = false; }
перед строкой
if ($status) {
- Как отключить купон, ваучер, налоги или стоимость доставки в корзине
Все модули скидок и наценок, например:
- стоимость доставки
- купон
- ваучер
- подарочный сертификат
Реализованы через модули «учитывать в заказе» и имеют свои настройки и логику работы.
Отключить их можно в соответствующем разделе опенкарта
- Корзина всегда показывает нулевую стоимость
Включите в разделе модулей «учитывать в заказе» модули «Подитог» и «Итог», задав у них такой порядок сортировки, чтобы «Подитог» был самым первым, а «Итог» самым последним
- Не работает купон, ваучер, налоги или стоимость доставки в корзине
Все модули скидок и наценок, например:
- стоимость доставки
- купон
- ваучер
- подарочный сертификат
Реализованы через модули «учитывать в заказе» и имеют свои настройки и логику работы.
Если что-то не работает, то в первую очередь нужно проверить их настройки: статус (включен или выключен) и порядок сортировки. Этот момент особо важен, так как результат работы этих модулей может меняться от порядка сортировки. Обязательно указывайте порядок сортировки, при этом не забывая, что «Подитог» должен быть самым первым, а «Итог» самым последним.
- Текст варианта доставки в корзине очень длинный и из-за этого съезжает верстка корзины
Как уже было сказано в предыдущем пункте, данный текст (как и стоимость) возвращается из модуля «учитывать в заказе» - «доставка»:
/catalog/model/[extension]/total/shipping.php
Следовательно нужно менять код данного модуля для изменения текста, который он возвращает.
- Неверно считается цена и стоимость товара в корзине
Модуль использует класс корзины опенкарта для получения списка товаров вместе со всеми ценами, стоимостями, моделями, картинками и т.п.
Поэтому если что-то считается неверно, то нужно во-первых проверить правильность расчетов в стандартной корзине:
/index.php?route=checkout/cart
И во-вторых, проверить не правит ли какой-либо вкмод класс корзины
/system/library/[cart]/cart.php
- Как сделать маску телефона по условию
Можно включить получение маски через апи модуля в настройках поля и реализовать любой код для получения.
В файле апи модуля есть пример реализации для получения маски для России и Украины (коды стран в примере соответствуют кодам стран в стандартном опенкарте). В настройках поля достаточно указать название метода и передачу внего значения поля Страны.
- Письмо админу слишком урезанное, как поправить?
Все письма отправляет опенкарт, в том числе такое урезанное админу
Можно попробовать отправлять админу копию письма покупателю, откройте файл
/catalog/model/checkout/order.php
и добавьте:
$mail->setHtml($html);
перед
$mail->setText(html_entity_decode($text, ENT_QUOTES, 'UTF-8'));
там где этой строки нет (в первом месте есть - письмо покупателю), во втором - нет (письмо админу)
После правок желательно обновить кэш менеджера дополнений
Для опенкарта 3.0 есть готовое решение, спасибо автору Tom https://opencartforum.com/files/file/7352-extra-email/
- Как получить значения кастомных полей модуля?
$query = $this->db->query('SELECT * FROM `' . DB_PREFIX . $object . '_simple_fields` WHERE `'.$object.'_id` = \'' . $objectId . '\' LIMIT 1');
$field_value = $query->row['field_id']; // field_id - идентификатор нового поля
где $object может быть 'customer', 'address', or 'order' и $objectId - идентификатор покупателя, адреса или заказа
В случае, когда поле имеет привязку к адресу, при получении значения этого поля из информации о заказе необходимо к идентификатору поля дописать payment_ или shipping_ в зависимости от того, из какой секции (адрес оплаты или адрес доставки) необходимо получить данные.
Например, поле с идентификатором dom привязано к объекту адреса, в информации о заказе будет сохранено в виде
payment_dom - в информации об адресе оплаты
shipping_dom - в информации об адресе доставки
- Товар не добавляется в корзину
Добавление в корзину - функционал опенкарта:
За него отвечают:
Часть джаваскрипта в файле:
/catalog/view/javascript/common.js
Джаваскрипт, встроенный в шаблон страницы товара:
/catalog/view/theme/ВАША_ТЕМА/template/product/product.tpl
Соответственно, если не работает добавление в корзину, то нужно в первую очередь искать ошибки в этих файлах
- Не работает миникорзина в шапке сайта
Это функционал опенкарта и модуль на него не влияет.
Обычно эта часть больше относится к теме и поэтому можно обратиться к авторам темы.
- Ошибки на странице успешного оформления заказа
Страница успешного оформления заказа checkout/success является страницей опенкарта и не зависит от модуля, ее контроллер:
/catalog/controller/checkout/success.php
шаблон:
/catalog/view/theme/ВАША_ТЕМА/template/common/success.tpl
На эту страницу выполняют редирект модули оплаты после подтверждения или оплаты заказа.
Отключите все вкмоды и модификаторы и включайте поочередно, чтобы найти причину ошибки.
- Ошибки на странице успешного создания аккаунта
Страница успешного оформления заказа account/success является страницей опенкарта и не зависит от модуля, ее контроллер:
/catalog/controller/account/success.php
шаблон:
/catalog/view/theme/ВАША_ТЕМА/template/common/success.tpl
Отключите все вкмоды и модификаторы и включайте поочередно, чтобы найти причину ошибки.
- Как сделать автогенерацию пароля?
Нужно удалить пароль с набора полей покупателя, тогда модуль будет генерировать его сам
- Как отправлять пароль в письме о регистрации?
В архиве модуля в каталоге:
misc/usefull mods but not required
сохранен вкмод "password_in_email.xml"
Скопируйте его в каталог:
/vqmod/xml/
на вашем сервере.
Для опенкарта версий 2.х установите оцмод "password_in_email.ocmod.xml"
Для опенкарта версий 2.3 установите оцмод "password_in_email_2_3.ocmod.xml"
- Почему при создании/подтверждении заказа надпись "подождите, происходит переход к оплате" подвисает на несколько секунд/минут?
В этот момент происходит подтверждение заказа модулем оплаты и модель заказа отправляет письма (и смс, если включена их отправка) и это медленная операция.
Попробуйте сменить метод отправки в основных настройках магазина на "smtp" или наоборот на "sendmail". В случае медленной работы почты при способе "sendmail" можно попробовать написать письмо в техподдержку хостинга.
Также иногда "тормозит" перенаправление на страницу оплаты у модуля "paypal", но с этим ничего нельзя поделать.
- Как отключить текст "подождите, происходит переход к оплате"?
Отображение данного текстка можно отключить в админ панели модуля в настройках блока "модуль оплаты"
- Как связать варианты оплаты с вариантами доставки?
В настройках блока оплаты есть раздел ограничений, в нем можно сначала выбрать вариант оплаты и затем для него добавить варианты доставки, для которых его нужно отображать
- Заказ оформлен, оплачен покупателем, но не виден в админке. Почему?
Данная проблема не зависит от варианта оформления заказа и имеет общий характер, в чем легко убедиться, сделав заказ через стандартную страницу заказа, набрав в адресной строке браузера ссылку на стандартный заказ (/index.php?route=checkout/checkout) либо отключив модуль Simple.
Как уже было написано в ответе на вопрос про двойное нажатие кнопки, перед загрузкой формы оплаты заказ сохраняется в базе данных со статусом 0 и по умолчанию данный заказ не виден в админке опенкарта. После загрузки формы оплаты все дальнейшие действия по подтверждению заказа (т.е. действия по изменению статуса заказа) выполняет модуль оплаты.
Все онлайн способы оплаты (вебмани, робокасса, пейпал и так далее) используют так называемые "колбэки" ("обратные вызовы") для подтверждения заказа. Т.е. это специальные ссылки в вашем магазине, обращаясь к которым платежный шлюз может подтвердить оплату (а значит и заказ) в вашем магазине.
Если подтверждения не происходит, то нужно проверить по шагам:
- Настройки данных ссылок в админке модулей оплаты, иногда они отображаются как текст для копирования и последующей вставки в настройках аккаунта в платежной системе.
- Настройки данных ссылок в личном кабинете платежной системы.
- Доступны ли ссылки извне
- Нет ли ошбок в логах опенкарта или в логах сервера
- Ряду модулей оплаты необходим curl для выполнения запросов, проверьте, установлен и доступен ли он на Вашем сервере.
Если все шаги пройдены, то стоит написать автору модуля оплаты.
- При входе в магазин через попап на странице заказа шапка магазина остается без изменений, что делать?
В каждой теме своя верстка, поэтому нет и универсального (встроенного) решения для этого.
В разделе Джаваскриптов можно попробовать добавить скрипт:
- для опенкарта 1.5
$('#top-links').load('index.php?route=common/simple_connector/header #top-links > ul');
- для опенкарта 2.х и 3.x
$('div#header').load('index.php?route=common/simple_connector/header div#header > *');
- либо
$('nav#top').load('index.php?route=common/simple_connector/header #top > div');
Для своих (нестандартных) тем нужно подобрать, в каком контейнере нужно заменять контент.
- для опенкарта 1.5
- Как отключить перезагрузку формы при изменении полей?
В наборах полей у полей есть настройка перезагрузки блоков.
Отключите ее, чтобы не вызывать перезагрузку формы.
- У поля город включена настройка для перезагруки блока, но при изменении поля перезагрузки не происходит
Отключите автозаполенение по полю города в разделе геоданных.
- Как убрать ненужные страны и/или регионы из списков выбора?
В основном меню опенкарта в разделе "Локализация" откройте "Страны" и удалите ненужные страны, аналогичным образом можно поступить и с регионами.
После этого необходимо почистить кэш опенкарта!
- Что такое плейсхолдер в настройках полей?
Это серый текст-подсказка внутри поля, который исчезает, если установить курсор в это поле.
- Что за раздел "модули" в админке модуля и для чего нужны группы настроек страницы заказа?
Начиная с версии 4.0 в модуле можно создавать наборы (группы) настроек для страницы заказа для использования в различных сценариях.
Например, можно создать минималистичный набор настроек и отображать модуль на любой странице опенкарта как модуль в изначальном смысле этот слова (т.е. как часть страницы в верхней, нижней, левой или правой частях).
Также можно подключить только скрипты модуля и загружать модуль в попапе, используя к примеру fancybox или colorbox, прописав в нужном месте ссылку на страницу заказа с указанием нужной группы настроек в качестве параметра, например:
<a class="fancybox" href="index.php?route=checkout/simplecheckout&group=1&popup=1" alt="Оформить заказ">Оформить заказ</a>
Точно также в попапе можно открыть страницу регистрации.
- Как отключить прокрутку страницы к форме оплаты?
Вы можете отключить прокрутку в настройках блока модуля оплаты
- Я залил геобазу модуля, таблицу для IP, включил соответствующую настройку в админке модуля, но данные адреса не определяются
Проверьте по порядку:
- Таблицы залиты
- Включена настройка для определения адреса по IP
- Почистите кэш опенкарта
- Попросите друга открыть страницу модуля у себя, потому что Вашего IP адреса может не быть в базе
- Очень редко настройки сервера таковы, что не передают данные о посетителе в массиве $_SERVER и надо задать вопрос техподдержке.
- Почему мой адрес не определяется по IP или определяется неверно?
База данных была собрана из открытых источников, поэтому не обладает полнотой и точностью.
В любом случае, даже платная база не может гарантировать Вам 100% определение и точность.
Вы всегда можете попробовать сменить вариант определения адреса в настройках модуля, а также реализовать собственный вариант определения адреса через АПИ модуля в файле:
/catalog/model/tool/simplegeo.php
- Проблема с получением комментария от Яндекс Маркета
Только для официальной версии 4.9.7
- В настройках блока модуля оплаты отключите опцию "показывать форму оплаты как можно раньше"
- Замените файл /catalog/view/javascript/simplecheckout.js файлом https://www.dropbox.com/s/tux40lpkeddg9hp/simplecheckout.js?dl=0
- Если используется сжатие скриптов и стилей, обязательно обновите кэш скриптов и стилей!
- Отключается замена ссылок модуля
Модуль отключает замену ссылок, если ключ в базе не соответствует домену сайта, под которым открывается модуль.
Адрес сайта должен быть указан явно в файлах
/admin/config.php
/config.php
в записях HTTP_CATALOG, HTTPS_CATALOG, HTTP_SERVER, HTTPS_SERVER
- Если есть мультимагазин, то необходимо проверить корректность его настроек, необходимо в поле для обычного url указывать адрес http://, а в поле для ssl указывать адрес https://
- Если есть тестовый домен, то нужно проверить, что тестовый и основной сайт не используют одну и ту же базу
- Нужно проверить, что у сайта нет технического домена хостера, по которому он может открываться
- Нужно проверить, что конфигурация хостинга не позволяет открыть сайт под любым адресом или под айпи адресом
Если все пункты проверены, то можно в
/index.php
после
<?php
добавить код
$_SERVER['HTTP_HOST'] = 'тут.домен.сайта';
- Как сделать вывод списка городов с модуля GeoIP?
Самый простой вариант в админке модуля в разделе скриптов вставить такой скрипт
var $city = $('#shipping_address_city'); if ($city) { $city.hide().parent().append('<a onclick="Prmn.citymanager.showCitiesPopup()">'+ $city.val() +'</a>'); }
либо так
var $city = $('#shipping_address_city'); if ($city) { $city.on('focus', function() { Prmn.citymanager.showCitiesPopup() }); }
- Я не нашел здесь ответ на свой вопрос и модуль не работает даже после обновления до последней версии
Пожалуйста, отключите модуль в его настройках и попробуйте выполнить заказ или зарегистрироваться через стандартные страницы.
Если это не получается, то причину неработоспособности модуля нужно искать прежде всего в опенкарте.
Как правило проблемы бывают из-за модификаторов, которые правят модели опенкарта и вносят ошибки.
Попробуйте отключить все вкмоды и проверьте логи ошибок опенкарта и сервера.
- Как сделать автозаполнение по полям ФИО, улиц и т.п.
Для этого существуют разного рода сервисы, например дадата
Готовый модуль для интеграции с таким сервисом https://opencartforum.com/files/file/7193-modul-dadatapro-avtozapolnenie-poley-fio-adress-servis-dadata/
- В опенкарте 3.х ошибки с отсутствием данных в сессии
Попробуйте выполнить запрос в консоли управления базой данных (например через phpmyadmin), если используется префикс у таблиц, то поправьте название таблицы, то есть вместо session сделайте например oc_session
ALTER TABLE session CHANGE `data` `data` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
Если решение выше не помогло, то замените файл session.php в каталоге system/library/ файлом с опенкарта 2.3 session.php