- Обновился до DLE 13 и перестал работать модуль, как починить?
- UniForm — модуль универсальных ajax-форм для DataLife Engine
- Преимущества
- Требования к установке
- Установка
- Скриншоты форм, поставляемых в комплекте с модулем
- Настройка
- Параметры, доступные в файле конфигурации (config.tpl):
- Теги шаблонов
- Добавлено в v1.2
- Добавлено в v1.3
- Добавлено в v1.4
- Ответы на частые вопросы
Обновился до DLE 13 и перестал работать модуль, как починить?
В 13ой версии Datalife Engine была добавлена система управления плагинами, которая, если кратко, позволяет вносить изменения в файлы без фактического внесения этих самых изменений в файлы движка. Вот именно из-за появления этой системы управления плагинами и могут возникнуть проблемы в работе некоторых модулей. Первой «жертвой» нововведения стал мой модуль Стол заказов
В комментариях человек привел код ошибки, который мы сейчас разберем.
Проведем краткий ликбез и разберем первую строку, что в ней говорится:
Тут мы видим критическую ошибку, которая сообщает о том, что используется не объявленный класс DLEPlugins, а конкретно используется в файле engine\classes\templates.class.php в 24й строке.
Ниже идет путь вызова файла (данный текст будет отображаться только на PHP 7.x).
Он позволяет разработчику отследить путь вызова файлов и выяснить где возникла проблема.
К примеру на php 5.6 данная ошибка будет выглядеть примерно так:
В целом уже все ясно, но для наглядности смотрим 24ю строку файла templates.class.php
Вот как раз тот вызов неизвестного класса, который выбрасывает нам критическую ошибку.
Подобная ошибка будет появляться только в AJAX обработчике.
Ошибка возникает потому, что в файле использует класс DLEPlugins, который, в свою очередь, просто не подключен.
Если мы откроем файл engine/ajax/controller.php, то в самую первую очередь увидим подключение файла:
Поэтому чтобы наш модуль заработал — достаточно просто подключить этот файл в файле модуля.
За одним маленьким исключением, вместо require_once следует использовать include_once для совместимости с предыдущими версиями DLE:
На вопрос — где именно вставлять эту строку, ответ достаточно прост.
Нужно найти первое подключение любого файла и перед ним вставить вышеуказанную строку.
Строка подключения файла может начинаться на одну из ниже перечисленных функций:
Источник
UniForm — модуль универсальных ajax-форм для DataLife Engine
Не подходит стандартная форма обратной связи? Нужна возможность использовать свои поля? Нужна защита от ботов и лёгкая настройка без использования БД? Тогда этот модуль для Вас!
Преимущества
- Не использует БД. Для работы модуля не требуется дополнительное соединение с БД и он не хранит данные из форм.
- Скорость работы. За счёт простоты реализации удалось достичь приемлемой скорости работы.
- Лёгкость настройки и стилизации. Все настройки модуля, оформление email-сообщения и самой формы вынесены в файлы шаблона, а это значит, что вы можете кастомизировать внешний вид не только формы, но и email-сообщения так, как этого требует дизайн.
- AJAX вызов и отправка форм. Это даёт максимальную защиту от автоматических заполнений и не обременяет пользователя разгадкой каптчи.
Требования к установке
Установка
- Скачать актуальную версию модуля
- Распаковать содержимое папки DLE-UniForm-X.X.X (X.X.X — номер актуальной версии модуля) в корень сайта.
- В браузере запустить установку модуля по адресу: ваш_сайт/dle_module_install.php?module=uniform
- Следовать инструкциям
Скриншоты форм, поставляемых в комплекте с модулем
Форма обратной связи
Форма обратной связи, с ошибками
Сообщение об успешной отправке сообщения из формы обратной связи
Форма заказа звонка
Форма заказа звонка, в процессе отправки
Email, с заказом звонка
Тестовая форма с примером обработки результатов отправки формы
Настройка
- Описание и примеры конфигурации вызова модуля можно найти в файлах, с именем config.tpl.
- Описание и примеры параметров формы можно найти в файле
/uniform/test/form.tpl . - Описание и примеры параметров email-сообщения можно найти в файле
/uniform/callback/email.tpl .
Параметры, доступные в файле конфигурации (config.tpl):
- templateFolder — Папка с шаблонами формы формы. Указывается подпапка, в папке uniform текущего шаблона сайта, в которой должны лежать файлы config.tpl, form.tpl и email.tpl. Например шаблон формы обратной связи (feedback) выглядит так:
Теги шаблонов
Список тегов, поддерживаемых в шаблоне form.tpl.
Вместо X следует прописывать имя инпута, селекта, чекбокса или радиокнопки. Имена не должны дублироваться.
- — Служебный комментарий. Текст, заключенный в такие теги, не будет выведен в браузер.
- [error]текст[/error] — выводит текст, если форма содержит ошибки заполнения.
- [success]текст[/success] — выводит текст, если форма удачно отправлена.
- [form]текст[/form] — выводит текст, если форма только что открыта, или отправлена с ошибками.
- [debug]
[/debug] — выводит дебаг. - [uf_token_error]текст[/uf_token_error] — выводит текст, если происходит попытка межсайтовой подделки запроса (CSRF Attack) или если конфиг формы изменился во время заполнения формы.
- [uf_email_error]текст[/uf_email_error] — выводит текст, если поле имеет имя email, является обязательным и не проходит валидацию (наличие символа @ и точки).
- [uf_default_value]текст[/uf_default_value] — выводит текст, если форма открыта впервые.
- — выводит данные, переданные в форму из текстовых полей в случаи ошибочного заполнения.
- [uf_field_X=»Y»]текст[/uf_field_X] — Выводит текст, если в текстовое поле X передано значение Y.
- [uf_error_X]текст[/uf_error_X] — выводит текст, если текстовое поле содержит ошибку.
- [uf_select_X=»Y»]текст[/uf_select_X] — Выводит текст, если в селекте X отмечен пункт со значением Y.
- [uf_select_X_Y]selected[/uf_select_X_Y] — Выводит текст, если в селекте X отмечен пункт со значением Y. Является вариацией предыдущего тега.
- [uf_checkbox_X=»Y»]текст[/uf_checkbox_X] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y.
- [uf_checkbox_X_Y]checked[/uf_checkbox_X_Y] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y. Является вариацией предыдущего тега.
- [uf_radio_X=»Y»]текст[/uf_radio_X] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y.
- [uf_radio_X_Y]checked[/uf_radio_X_Y] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y. Является вариацией предыдущего тега.
Список тегов, поддерживаемых в шаблоне email.tpl.
Вместо X следует прописывать имя инпута, селекта, чекбокса или радиокнопки. Имена не должны дублироваться.
- — Служебный комментарий. Текст, заключенный в такие теги, не будет выведен в сообщении.
- [header]текст[/header] — Тема письма.
- — выводит все поля, переданные из формы в удобном, для последующей вставке в шаблон, виде.
- [uf_field_X]текст[/uf_field_X] — выводит текст, если текстовое пол X заполнено.
- — выводит данные, переданные в форму из текстового поля X.
- [not_X]текст[/not_X] — Выводит текст, если в текстовое поле X пустое.
- [uf_field_X=»Y»]текст[/uf_field_X] — Выводит текст, если в текстовое поле X передано значение Y.
- [uf_select_X=»Y»]текст[/uf_select_X] — Выводит текст, если в селекте X отмечен пункт со значением Y.
- [uf_checkbox_X=»Y»]текст[/uf_checkbox_X] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y.
- [uf_radio_X=»Y»]текст[/uf_radio_X] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y.
- — выводит дату отправки сообщения из формы, отформатированную в соответсвии с настройками DLE.
- — выводит URL страницы, с которой было отправлено сообщение.
- [news_id]
[/news_id] — ID новости (если есть поле с name=»newsId»). - [news_autor]
[/news_autor] — Логин автора новости (если есть поле с name=»newsId»). - [news_title]
[/news_title] — Заголовок новости (если есть поле с name=»newsId»). - [news_email]
[/news_email] — Email автора новости (если есть поле с name=»newsId»). - — Выводит название сайта из настроек DLE.
- — Выводит адрес сайта из настроек DLE.
- — Выводит краткое название сайта из настроек DLE.
- [user_name]
[/user_name] — Выводит логин пользователя, отправившего сообщение. - [user_fullname]
[/user_fullname] — Выводит полное имя пользователя, отправившего сообщение. - [user_email]
[/user_email] — Выводит email пользователя, отправившего сообщение. - [user_foto]
[/user_foto] — Выводит ссылку на аватар пользователя, отправившего сообщение. - [user_land]
[/user_land] — Выводит то, что пользователь, отправивший сообщение, написал в поле «Место жительства». - [to_sender] текст [/to_sender] — Выводит текст для отправителя, если указан параметр sendToSender
- [not_to_sender] текст [/not_to_sender] — Выводит текст для получателей письма, отличных от отправителя, если указан параметр sendToSender
Добавлено в v1.2
Улучшения и исправления
- Теперь если в форме есть заполненное поле с `name=»header»`, такое поле будет автоматически подставлено в тему письма.
- Исправлена ошибка на DLE 10.5+ с невозможностью указать email отправителя из формы.
- Исправлена ошибка с экранированием кавычек в письме.
- Если пользователь авторизован, то тег при открытии формы автоматически заменится на его email.
- Убран тег т.к. он оказался нерабочим.
- Исправлено некорректное поведение тега .
- Добавлен новый параметр конфигурации sendAsPlain — Отправлять сообщение как простой текст. Теперь можно отправлять письма как простые текстовые сообщения, без обработки html.
- Добавлен новый параметр конфигурации sendToAuthor — Отправить письмо автору новости, если есть поле с name=»newsId» и если автор разрешил получение писем с сайта.
- Реализована возможность отправлять в письме данные из новости. Для этого необходимо передать в форму поле newsId. Пример шаблона в папке newsauthor.
- Реализована возможность отправки сообщения на email автора новости. Для этого необходимо передать в форму поле newsId и в конфиге прописать sendToAuthor = y. Пример шаблона в папке newsauthor.
Новые теги для email-сообщений
- [news_id]
[/news_id] — ID новости (если есть поле с name=»newsId»). - [news_autor]
[/news_autor] — Логин автора новости (если есть поле с name=»newsId»). - [news_title]
[/news_title] — Заголовок новости (если есть поле с name=»newsId»). - [news_email]
[/news_email] — Email автора новости (если есть поле с name=»newsId»). - — Выводит название сайта из настроек DLE.
- — Выводит адрес сайта из настроек DLE.
- — Выводит краткое название сайта из настроек DLE.
- [user_name]
[/user_name] — Выводит логин пользователя, отправившего сообщение. - [user_fullname]
[/user_fullname] — Выводит полное имя пользователя, отправившего сообщение. - [user_email]
[/user_email] — Выводит email пользователя, отправившего сообщение. - [user_foto]
[/user_foto] — Выводит ссылку на аватар пользователя, отправившего сообщение. - [user_land]
[/user_land] — Выводит то, что пользователь, отправивший сообщение, написал в поле «Место жительства».
Добавлено в v1.3
- Новый, удобный установщик модуля.
- Добавлена возможность пикреплять файлы к сообщению в форме. Для этого необходимо в конфиге указать параметр allowAttachments, а так же параметры maxFileSize (максимальный размер прикрепляемого файла) и allowedFileTypes (доступные типы файлов) при необходимости. Готовый шаблон для прикрепления файлов к сообщению — attachments.
- Добавлен новый параметр конфигурации sendToSender. Если этот параметр задан, то письмо будет отправлено на email-адрес, указанный в поле email. Так же проверяется валидность этого адреса.
- В шаблон email-сообщения добавлены новые теги, обрабатываемые в сообщении и в поле заголовке письма, когда активирован параметр sendToSender.
[to_sender] текст для отправителя [/to_sender]
[not_to_sender] текст для других получателей [/not_to_sender] - Добавлены почти все поля из профиля пользователя в шаблон email.
- Добавлен вывод допполей из профиля пользователя в шаблон email.
- Ко всем тегам в шаблонах email-сообщения добавлены противоположные теги [not_X], выводящие текст между ними, когда соответствующий тег пуст.
- Исправлена ошибка, когда пользователю разрешено менять шаблон сайта, а шаблон формы берётся из шаблона, установленного по умолчанию в системе.
- Улучшения и оптимизация кода.
- Теперь минимально-допустимая версия php — 5.4.
Добавлено в v1.4
- Обновлён установщик
- Добавлен новый параметр parseSendMail, добавляющий возможность производить манипуляции над данными перед отправкой email. В параметр передаётся путь к php файлу, без расширения, отностительно папки engine/modules. Например можно добавить в шаблон email-сообщения новые теги [footer]
. Для этого в конфиге прописываем parseSendMail = addFooter, создаём файл engine/modules/addFooter.php со следующим содержимым:
Для вывода формы непосредственно на странице достаточно прописать в нужном месте шаблона (начиная с версии 1.1):
Для Отправки сообщения автору новости необходимо прописать в шаблон краткой или полной новости (начиная с версии 1.2):
Ответы на частые вопросы
[Q]: Почему ничего не работает?
[A]: C вероятностью в 80% у вас дважды подключена бибилиотека jQuery (20% — проверьте шаги по инструкции).
[Q]: Сделано всё по инструкции, но модальное окно не открывается.
[A]: У вас дважды подключена библиотека jQuery. Имейте ввиду, что в DLE уже есть jquery и подключать её отдельно не нужно.
[Q]: Библиотека jQyery подключена 1 раз (я проверил все скринты на странице в браузере, а не в файле шаблона), но окно всё равно не открывается.
[A]: Вполне вероятно, что вы перенесли js в конец страницы, а скрипты модуля подключаете в начало. Перенесите скрипты модуля в конец страницы.
Источник