Opencart форма обратной связи

Небольшой, но подробный туториал для начинающих разработчиков.

Возникла потребность в плавающей, выдвигающейся сбоку форме обратной связи (обратный звонок). К сожалению, готового решения я так и не нашел, кроме громоздкого, через модуль vqmod. Его суть заключается в перезаписи файлов OpenCart на лету, этакий своеобразный прокси-компонент, или декоратор, если угодно. Идея, конечно, интересная, но не об этом сейчас.

Мы займемся решением задачи с нуля, рассмотрим в деталях, как это делается. Надеюсь, материал данной статьи поможет вам лучше ориентироваться в OpenCart.

В развернутом виде, наша форма будет выглядеть так

Отправлять данные будем с помощью AJAX, то есть без перезагрузки страницы. Потребуется написать под это дело контроллер, исправить темплейт header текущей (дефолтной в нашем случае) темы, добавить стили и JavaScript.

Полный список редактируемых файлов:

  • /catalog/view/theme/default/template/common/header.tpl
  • /catalog/view/theme/default/stylesheet/stylesheet.css
  • /catalog/view/javascript/common.js
  • /catalog/controller/ajax/feedback.php – создаем папку и файл

Сперва, создадим код нашей формы:

Затем, вставим в header.tpl, сразу после открывающего тэга body. Полный путь здесь и далее смотри выше, в списке файлов.

Теперь добавим стили в самый конец stylesheet.css

Большая CSS простыня (кликни)

Теперь создадим папку ajax и контроллер feedback, следующего содержания:

Адрес, на который отправляются письма, берем из настроек OpenCart и другие настройки, связанные с почтой. Контроллер работает как в режиме «Mail» так и «SMTP».

Данное решение тщательно протестировано на версии OpenCart 2.3.0.2 (русская сборка).

Чтобы ваши письма не попадали в СПАМ, воспользуйтесь рекомендациями из ранее опубликованной статьи

Модуль для создания формы обратной связи на Opencart 2.x. Форму можно выводить через Макеты в позиции на сайте на любую страницу. В админке можно задать заголовок контактной формы и текст перед формой. Мультиязычный.

Установка модуля:
1. Установить модуль (contact-form.ocmod.zip) через админку
2. Обновить модификации
3. Перейти в Модули > Модули, включить и настроить модуль
4. Вывести модуль на страницы через Дизайн > Макеты

Изменения:
11.05.2017 – исправлены ошибки с выводом заголовка и описания модуля в версиях для Opencart 2.2 и 2.3

    Opencart 2.0 Opencart 2.1 и ocStore 2.1 Opencart 2.2 Opencart 2.3 и ocStore 2.3
Читайте также:  Яндекс такси не определяет мое местоположение

1. Скачайте и установите фикс Localcopy
2. Обновите модификации в админке
3. Загрузите модуль наново

Ошибка 500 после установки модуля означает, что случилась какая-то критическая ошибка в php.

Для определение проблемы можно:
1. Открыть файл logs/error.log на вашем сервере. В конце этого файла будут все последние критические ошибки.
2. Открыть в админке Инструменты > Логи ошибок – в этом месте отображаются ошибки, но не всегда.
3. Включить вывод ошибок php на экран – добавить следующий код в конец файла .htaccess:

1. Если вы раньше не загружали модули в архиве через админку – вам нужно установить бесплатную модификацию localcopy.ocmod.xml согласно инструкции и после этого переустановить модуль

2. Возможно в устанавливаемого модуля нет собственной страницы настроек и соответственно его не будет в списке Модулей

Два варианта решения:

1. Если при установке модуля из админки вылетает эта ошибка – вам нужно установить бесплатную FTP QuickFix модификацию localcopy.ocmod.xml. Она установиться без проблем через тот же установщик дополнений, только после установки не забудьте обновить модификации и затем можете приступать к установке любых модулей на Opencart 2.

2. Также решить эту ошибку можно по другому: прописать доступы к FTP в админке Система > Настройки > Магазин > вкладка FTP.

Если вы видите сообщение " Доступ запрещен! У Вас нет прав для доступа к этой странице. Если она Вам нужна, обратитесь к администратору. " – нужно дать права администраторам на управление модулем или страницей.

Решение: в админке Opencart 2 переходим в Система > Пользователи > Группы пользователей > Администраторы и здесь нажимаем "Выделить все" ниже обоих блоков, затем Сохранить .

Еще одной причиной появления этой ошибки может быть не правильная установка модуля – файлы не загрузились на свои места. Загрузите файлы модуля вручную на сервер или установите фикс localcopy и переустановите модуль.

Читайте также:  Зависает яндекс браузер на андроид

Решение: в админке Opencart 2 переходим в Система > Пользователи > Группы пользователей > Администраторы и здесь нажимаем "Выделить все" ниже обоих блоков, затем Сохранить .

Если модуль – это один XML файл, то его расширение должно быть .ocmod.xml

Если модуль – это ocmod.zip архив, то его не нужно распаковывать, а устанавливать как есть. В таком архиве обязательно должна быть папка upload (может быть пустой) , а также могут быть файлы модификаций: install.xml , install.php , install.sql . Никаких других файлов в корне архива быть не должно.

Эта ошибка означает, что в загружаемом архиве отсутсвует папка upload. Даже если у модуля нет файлов, кроме модификаций – эта папка должна присутствовать в архиве модуля .ocmod.zip, тогда она должна оставаться пустой.

Эта ошибка означает, что вы пытаетесь установить модификатор, который уже установлен или, возможно, у какого-то вашего модуля такой же ID.

Для решения этой ошибки вам нужно перед установкой удалить старую версию модификации в разделе Модули > Модификации.

Если такого модуля у вас нет, но совпадает ID, тогда нужно поменять значение параметра в устанавливаемом модификаторе XML, сделать этот параметр уникальным дописав несколько символов.

Эта ошибка означает, что вы пытаетесь установить слишком объемный xml- модификатор.

Количество символов в ocmod.xml файле не должно превышать 65535 .

Для решения ошибки нужно разбить xml-файл модификации на несколько частей, главное – не забыть задавать каждой уникальное значение в , можно добавлять к текущему значению цифры 1,2,3. как идентификаторы части.

Еще одним способом решения есть изменения типа в поля, где храняться модификации, в таблице ‘oc_modification’ базы данных. Нужно выполнить следующий SQL-запрос:
ALTER TABLE oc_modification CHANGE xml xml MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;

Похоже, вы установили на Opencart 2.3.x.x модуль для более старых версий этой системы, то есть не совместимый модуль. Нужно удалить все файлы этого модуля, иначе ошибка не исчезнет.

Читайте также:  Программы для начертательной геометрии на компьютере

Для удаления файлов модулей из админкм в один клик можно использовать модуль

Также данная ошибка может возникать, если скрипт обращается к несуществующей таблице в базе данных. То есть, таблица модуля не создалась при установке. Читайте инструкцию по установке и переустановите модуль.

Если модуль не реагирует на ваши действия, будь-то нажатие на кнопку или загрузка карты или выбор даты или на любое другое действие которое есть в функционале модуля – скорее всего произошел конфликт в JS-скриптах.

Нажмите F12 на проблемной странице в браузере – откроется панель вебмастера, где на вкладке Console можно увидеть конфликты в скриптах, если они есть. Данное действие доступно в браузерах Chrome, Opera, Firefox.

При отправке заявки через форму обратной связи клиент указывает свой email. Затем, если нужно, можно с ним связаться, используя этот адрес. Но на одном из сайтов возникла проблема: уведомление об обращении на почту прилетает без клиентского email’а.

Проблема оказалась всего в одной строчке кода:

Opencart пытается отправить email от имени клиента. Но настройки хостинга запрещают подмену адреса отправителя, более того, адрес вида somelogin@anyHosting.ru автоматически выдаётся при регистрации и сменить его нельзя.

Чтобы это поправить, открываем: /catalog/controller/information/contact.php и находим строку:

После этого адрес будет всегда указываться в теле письма.

Вслед за большим обновлением Opencart, подготовил обновление для OpenSecurity.

В апреле этого года вышла ubuntu 16.04LTS, которая "из коробки" поддерживает php7. А в свете глобальных изменений в ядре php стало очень заманчиво переехать на обновлённую систему. Кроме этого, давно хотел перейти с apache на ngnix и с mysql на mariadb.

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector