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

October CMS — Builder plugin — Основы (Часть 2)

В прошлой части мы сделали бекенд нашего модуля «Заказать звонок», который ожидает что в него когда нибудь придут всего два параметра: Телефон и Имя заказавшего звонок, после чего он их должен бережно добавить в базу данных добавив к записи ip заказавшего (в будущем можно будет сделать блэк-лист). Теперь пришло время сделать фронтенд нашего модуля, для этого нам понадобятся:

Первые две библиотеки не нуждаются в представлении, а про ion.js скажу пару слов. Это даже не библиотека а дополнение к jQuery и Bootstrap (Именно к ним обоим) стало быть что-бы использовать ion.js нужно с начала подключить jQuery потом Bootstrap и уже потом ion.js. А нужен ion.js только для того что-бы удобно собирать данные с форм, отправлять их посредством AJAX на нужный адрес и вставлять результат в заданный контейнер, и всё это делать одной командой типа :

Что-бы это работало, в javasctript шаблона, нужно будет добавить такой код:

Так-же нам понадобятся парочка скрытых элементов на странице, это модальное окно и контейнер для системных сообщений. Про модальное окно понятно, оно и будет содержать нашу форму для заполнения, это будет стандартное модальное окно Twitter Bootstrap, его код:

A вот с контейнером системных сообщений поподробнее.

Зачем нужны системные сообщения? Когда мы делаем что-то не так, т.е. допускаем ошибки, нам было бы очень удобно если бы мы точно знали, какие ошибки мы допустили. По этому в любом хорошем интерфейсе обязательно будет предусмотрено поле для системных сообщений. В нашем случае это будет контейнер, куда будут подгружаться эти самые сообщения, контейнер этот будет отслеживаемый, т.е. на нём будет висеть обработчик, отслеживающий изменения внутри контейнера, и если они происходят (т.е. появились сообщения) их нужно как-то обработать (показать). Сделаем красиво и с анимацией:

На странице должен присутствовать html-код:

Для него предусмотрен приблизительно такой стиль:

Для того что-бы наши сообщения красивенько появлялись и скрывались, и самое главное обрабатывались, в яваскрепте нашего шаблона должен быть вот такой код:

Все внешние приготовления закончены, приступим к созданию непосредственна модуля обратной связи, дальше я не буду заниматься оформлением а покажу только то что необходимо, по этому всё будет предельно просто:

Итак, нам понадобится три элемента:

В ion-команде дословно написано (порядок команд не имеет значения) обратится по адресу /callme/modal и вызвать модальное окно с идентификатором #ModalWin в котором отобразить содержимое ответа от сервера.

Страница для модального окна

Создадим страницу с содержимым модального окна, для этого в админке сделаем страничку с такими параметрами:

img 2016 10 14 10 17 28
Код в секции Markup

Теперь при нажатии на кнопку «Заказать звонок» появляется наше модальное окно (неприглядное, стилизуйте сами):

img 2016 10 14 10 16 45

Обратите внимание на Ion-команду кнопки «Заказать звонок» внутри модального окна:

Страница обработчик

Теперь создадим страницу-обработчик:

img 2016 10 14 10 28 29

Содержимое секции Markup

Содержимое секции Code

Для тех кто знает PHP и Laravel на обычном уровне познаний всё будет понятно, остальные могут воспользоваться гуглом и самостоятельно разобрать что тут написано. Добавлю только то что стоит обратить внимание только на указание правильной таблицы в конструкторе запросов DB::table(‘mcmraak_feedback_calls’) посмотреть её название вы можете в Bulder

img 2016 10 14 10 37 33

На этом пока всё, начальный результат достигнут. Заявки принимаются, добавляются в бузу данных, их нельзя отправлять чаще чем раз в минуту (время можно выставить в коде). При не правильном вводе, или при отправке раньше чем раз в минуту, всплывают сообщения.

Используя данную инструкцию, вы можете как угодно облагородить ваш модуль приёма заявок, в него можно добавить:

Источник

Формы

Введение

Note: Very often the form and list behavior are used together in a same controller.

Configuring the form behavior

The following fields are required in the form configuration file:

Field Description
name the name of the object being managed by this form.
form a configuration array or reference to a form field definition file, see form fields.
modelClass a model class name, the form data is loaded and saved against this model.

The configuration options listed below are optional. Define them if you want the form behavior to support the Create, Update or Preview pages.

Option Description
defaultRedirect used as a fallback redirection page when no specific redirect page is defined.
create a configuration array or reference to a config file for the Create page.
update a configuration array or reference to a config file for the Update page.
preview a configuration array or reference to a config file for the Preview page.

Create page

To support the Create page add the following configuration to the YAML file:

The following configuration options are supported for the Create page:

Option Description
title a page title, can refer to a localization string.
redirect redirection page when record is saved.
redirectClose redirection page when record is saved and the close post variable is sent with the request.
flashSave flash message to display when record is saved, can refer to a localization string.
form overrides the default form fields definitions for the create page only.

Update page

To support the Update page add the following configuration to the YAML file:

The following configuration options are supported for the Update page:

Option Description
title a page title, can refer to a localization string.
redirect redirection page when record is saved.
redirectClose redirection page when record is saved and close post variable is sent with the request.
flashSave flash message to display when record is saved, can refer to a localization string.
flashDelete flash message to display when record is deleted, can refer to a localization string.
form overrides the default form fields definitions for the update page only.

Preview page

To support the Preview page add the following configuration to the YAML file:

The following configuration options are supported for the Preview page:

Option Description
title a page title, can refer to a localization string.
form overrides the default form fields definitions for the preview page only.

Defining form fields

Form fields are defined with the YAML file. The form fields configuration is used by the form behavior for creating the form controls and binding them to the model fields. The file is placed to a subdirectory of the models directory of a plugin. The subdirectory name matches the model class name written in lowercase. The file name doesn’t matter, but fields.yaml and form_fields.yaml are common names. Example form fields file location:

Fields can be placed in three areas, the outside area, primary tabs or secondary tabs. The next example shows the typical contents of a form fields definition file.

Tab options

Option Description
stretch specifies if this tab stretches to fit the parent height.
defaultTab the default tab to assign fields to. Default: Misc.
cssClass assigns a CSS class to the tab container.

Field options

For each field you can specify these options (where applicable):

Available field types

There are various native field types that can be used for the type setting. For more advanced form fields, a form widget can be used instead.

Источник

Создание кастомного плагина для October CMS

Мы продолжаем рассматривать October CMS и её особенности. Мы в LOVATA уже 6 лет работаем с этой системой и за это время убедились в том, что её растущая популярность абсолютно заслуженная.

Сегодня мы подготовили перевод еще одной статьи, на этот раз авторства Andriy Haydash. Данная статья посвящена созданию кастомной функциональности через плагины. Предыдущую статью, посвященную сравнению October CMS и WordPress, вы можете найти здесь.

Если вам нравится писать объектно-ориентированный и лёгкий для чтения код, то эта статья для вас. Вы узнаете, как написать свой плагин и почему October может стать хорошим вариантом для вашего следующего проекта.

В прошлом году я провёл небольшое исследование новых CMS, основанных на PHP, в поисках хорошей альтернативы WordPress. В идеале это должно было быть решение с открытым исходным кодом на современной кодовой базе.

Тогда меня заинтересовала October CMS. Я попробовал её и она почти сразу мне понравилась. У October хорошая структура кода, для неё легко писать собственные плагины.

Цель этой статьи — помочь вам понять, что собой представляет платформа и чего стоит от неё ожидать, прежде чем вы решите её использовать.

Почему стоит выбрать October в качестве CMS платформы?

Есть несколько основных причин, почему я решил использовать October для своих проектов.

Написана на фреймворке Laravel

October CMS построена на основе Laravel — самого мощного PHP-фреймворка для создания современных веб-приложений. Я могу точно сказать, что он лучший. Фреймворк очень прост в использовании, он исключительно понятен. Кроме того, в нём есть все возможности, необходимые современному фреймворку: роутинг (маршрутизация), объектно-реляционное отображение (ORM), авторизация, кэширование и многие другие, обеспечивающие красивую и понятную структуру в соответствии с концепцией Model-View-Controller. Поскольку October CMS написана на фреймворке Laravel, она унаследовала все эти возможности от «старшего брата».

Чистый код и документация

В отличие от многих других CMS, у October очень чистая и хорошо документированная кодовая база, написанная с использованием объектно-ориентированной парадигмы.

Вместо старого доброго PHP, October использует Twig в качестве языка для создания шаблонов, что упрощает работу разработчиков. Техническая документация также хорошо написана и позволяет быстро найти ответы на большинство вопросов.

Отличное сообщество

Хотя сообщество October еще не очень большое, люди в нём отзывчивы и всегда готовы помочь. Есть канал в Slack (На данный момент официально заморожен, сообщество переезжает в Discord. — Прим. перев.), к которому вы можете присоединиться, и разработчики с радостью помогут решить вашу проблему.

Большой маркетплейс

Как и у WordPress и других CMS, у October есть маркетплейс тем и плагинов. Выбор хороших тем не очень большой, но есть более 700 плагинов (По состоянию на июнь 2020 опубликовано более 900 плагинов и около 200 тем. — Прим. перев.), поэтому вполне вероятно, что вы сможете расширить функциональность, просто выполнив поиск и установив один из них. Отличительной особенностью плагинов является то, что их можно легко синхронизировать между всеми вашими проектами, просто добавив свой идентификатор проекта в админке.

Плагины и компоненты

Плагины — основа добавления новых функций в October CMS. Плагин может состоять из нескольких файлов и директорий, которые отвечают за регистрацию пользовательских компонентов, моделей, обновление структуры базы данных или добавление переводов. Плагин обычно создаётся в проекте в директории plugins/. Поскольку многие плагины добавляются в маркетплейс для использования другими людьми, каждый плагин должен иметь собственный неймспейс, который обычно начинается с названия компании или разработчика, создавшего плагин. Так, например, если вас зовут Acme и вы создали отличный плагин под названием Blog, ваш плагин будет называться Acme\Blog.

Покажу вам, как может выглядеть структура директорий плагина:

3c0750d2434c8cce7c660e72ea57c2f0

Как видите, есть файл с именем plugin.php, который отвечает за регистрацию плагина и всех его компонентов в October CMS.

Стоит упомянуть, что не все директории, перечисленные выше, необходимы для запуска плагина. Ваш плагин может иметь следующую структуру и тем не менее отлично работать:

802ac51a430d5356d9c674881d13253b

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

У October CMS большой маркетплейс, где вы можете найти всё, что нужно.

1457d94ed19f07f2744b2b332701e567

В отличие от WordPress и других популярных CMS, плагины October могут содержать компоненты. Согласно документации October, компоненты являются «настраиваемыми модулями, которые можно прикрепить к любой странице (page), паршелу (partial) или лэйауту (layout)». Например, форма обратной связи, навигация, FAQ (список часто задаваемых вопросов и ответы на них); по сути, всё, что логично объединить в один модуль, который можно повторно использовать на нескольких страницах.

Компоненты создаются как часть плагина и находятся в субдиректории components/:

edb0fe7fed44c14ba8730d3dfb164324

У каждого компонента есть PHP-файл, например, componentName.php, который определяет компонент, а также необязательную поддиректорию для паршелов (partials). Папка паршелов (partials) для компонента должна иметь то же имя в нижнем регистре, что и сам компонент.

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

Как видим, компонент имеет две основные функции. Первая, componentDetails(), предоставляет информацию о компоненте администратору, который будет добавлять и использовать компоненты на своих веб-страницах. Вторая функция, posts(), возвращает пустые посты, которые затем могут быть использованы внутри части компонента (файл blogposts/default.htm), например так:

Чтобы October CMS знала, что наш компонент существует, мы должны зарегистрировать его, используя основной файл плагина внутри функции registerComponents():

Создаём плагин формы обратной связи

Мы напишем плагин для создания формы обратной связи. Вот как он должен работать:

Начнём создавать наш плагин, запустив команду в терминале, которая генерирует структуру плагина:

97e9b4ba540b9f37a82ea34bc334aa7a

Аргумент progmatiq.contactform содержит имя автора (progmatiq) и имя плагина (contactform).

f9f98b386dd5156650dbf7c950bd1a39

Теперь нужно открыть наш файл plugin.php и изменить информацию о плагине следующим способом:

Вот несколько других методов, на которые стоит взглянуть:

Теперь нам нужно зарегистрировать компонент внутри плагина. Для этого мы модифицируем метод registerComponents():

Эта функция возвращает массив компонентов, которые предоставляет наш плагин. Полное имя класса компонента является ключом в этом методе, а значение — альяс, который мы будем использовать для ссылки на наш компонент в шаблонах Twig.

После того, как мы зарегистрировали компонент, можно создать новую страницу контактов и добавить наш компонент (номер шага совпадает с номером иллюстрации на скриншоте):

Добавим наш новый компонент на страницу:

image loader

Если вы сейчас откроете страницу контактов, то не увидите ничего, кроме заголовка с надписью «Контакты».

image loader

Дело в том, что у нашей формы нет HTML для отображения.

Нам нужно создать файл contactform/default.htm в папке components/.

50b1b576b650037f2e9c8eefd0ee49bd

Также нужно добавить следующий HTML-код в файл:

В основном этот код довольно прост. Однако, в нем есть специальные атрибуты data- *, которые можно использовать в October:

Тег имеет три специальных атрибута:

Этот атрибут сообщает October, что функция onSend из нашего компонента (которую мы собираемся создать дальше) должна вызываться при отправке формы с использованием Ajax.

включит валидацию формы посредством Ajax с использованием ошибок, которые будут отправлены с сервера, если форма недействительна.

очищает форму и затем выдает сообщение, если запрос был успешным и не было никаких ошибок проверки или сервера.

У каждого входа есть следующий блок, который отвечает за отображение ошибок проверки, возвращаемых сервером для данного ввода:

Кнопка отправки имеет атрибут data-attach-loading, который добавляет спиннер и отключает кнопку во время обработки запроса сервером. Это сделано для того, чтобы пользователь не мог снова отправить форму, пока предыдущий запрос не будет обработан.

А вот как теперь выглядит наша страница:

image loader

Вернёмся к нашему компоненту contactForm.php и создадим вспомогательные методы onSend() и validate(), которые будет отвечать за отправку формы:

Первое, что мы делаем, это получаем данные из запроса и проверяем их с помощью вспомогательного метода validate(). Все доступные правила проверки, которые вы можете использовать, можно найти в документации. Если проверка не удалась, метод validate() генерирует исключение ValidationException — выполнение кода остановится, а сервер выдаст код состояния 406 и сообщение о провале валидации.

Если валидация прошла успешно, мы отправим электронное письмо нашему администратору.

Примечание: для упрощения я предположил, что почта, на которую мы хотим отправить заявку — admin@gmail.com. Убедитесь, что используете собственный адрес электронной почты!

Вот полный код вашего плагина contactForm.php:

Как видите, первый аргумент, который принимает функция Mail :: send() — имя шаблона адреса электронной почты, которое будет отображаться в теле сообщения. Нам нужно создать его в панели администратора. Перейдите в Настройки> Шаблоны писем и нажмите кнопку «Новый шаблон». Затем заполните форму, как показано на экране ниже:

image loader

Вот тело письма, которое мы собираемся использовать:

You have received a new contact inquiry

Теперь сохраните шаблон письма. Следующее, что нам нужно сделать, это настроить SMTP-сервер, который будет отправлять электронные письма.

Перейдите в Настройки> Конфигурация почты и заполните все настройки.

image loader

Конечно, я не поделюсь своей конфигурацией. Используйте собственные настройки.

На этом этапе у нас всё готово для начала тестирования компонента формы обратной связи.

Во-первых, давайте проверим, работает ли валидация, когда мы оставляем поле Content пустым и вводим неверный адрес электронной почты:

image loader

Валидация работает как положено. Теперь давайте введём правильные данные и посмотрим, будет ли электронное письмо успешно отправлено нашему администратору.

Вот письмо, которое получит admin@gmail.com:

image loader

После успешной отправки формы пользователь увидит соответствующее сообщение:

image loader

Вывод

В этой статье мы рассмотрели, что такое плагин и компонент, и выяснили, как их использовать в October CMS.

Не бойтесь создавать собственный плагин для вашего проекта, если не можете найти существующий плагин, который соответствует вашим потребностям. Это не так сложно и вы можете полностью его контролировать, обновлять и расширять в любое время. Даже создание плагина для простой формы обратной связи, вроде того, что мы сделали сегодня, может быть полезно, если вы захотите потом интегрировать его с другими сервисами, например, с Mailchimp или HubSpot.

Я надеюсь, что статья была для вас полезна. Если у вас есть вопросы, не стесняйтесь задавать их в комментариях.

Источник

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

9db54cce79db9fc56e0428960894ccef09a

Form Constructor

Allows you to manage forms on the site. Processes forms, sends data in mail templates. Integration with the Se.

Form Constructor

Allows you to manage forms on the site. Processes forms, sends data in mail templates. Integration with the Se.

Contact Form, Subscriptions

1d24066521d2a2cbc5a46effecd4b2c4325

Poptin: Pop Ups & Contact Forms

Convert visitors into sales, leads, and email subscribers with engaging website pop ups and contact forms

Poptin: Pop Ups & Contact Forms

Convert visitors into sales, leads, and email subscribers with engaging website pop ups and contact forms

Contact Form, Marketing

43b975fc743bda33ce8718413728525074a

Contacts

Manage contacts and receive messages from customers

Contacts

Manage contacts and receive messages from customers

Contact Form, Content

9db54cce79db9fc56e0428960894ccef09a

Form Constructor

Allows you to manage forms on the site. Processes forms, sends data in mail templates. Integration with the Se.

Form Constructor

Allows you to manage forms on the site. Processes forms, sends data in mail templates. Integration with the Se.

Contact Form, Subscriptions

1d24066521d2a2cbc5a46effecd4b2c4325

Poptin: Pop Ups & Contact Forms

Convert visitors into sales, leads, and email subscribers with engaging website pop ups and contact forms

Poptin: Pop Ups & Contact Forms

Convert visitors into sales, leads, and email subscribers with engaging website pop ups and contact forms

Contact Form, Marketing

43b975fc743bda33ce8718413728525074a

Contacts

Manage contacts and receive messages from customers

Contacts

Manage contacts and receive messages from customers

Contact Form, Content

71eed32fa71e519eaa35ed3d21cc8f09866

Forms

GromIT.Forms is a simple and powerful frontend forms constructor for October CMS.

Forms

GromIT.Forms is a simple and powerful frontend forms constructor for October CMS.

Contact Form, Content

53a7f78ae53a3d103a191583c557df33594

SendGrid

This plugin let you sending email through Sendgrid driver.

SendGrid

This plugin let you sending email through Sendgrid driver.

Contact Form, Email

1aa327dc51aa430f804cd05f9c3d3e7c76e

Telephone input field and phone number validator

International telephone form field and phone number validator

Telephone input field and phone number validator

International telephone form field and phone number validator

Contact Form, Developer Tools

All plugins

fd671fcddfd62e0725dc24b40f4015df116

Form Builder

This plugin allows you to build custom front-end forms with ease.

Form Builder

This plugin allows you to build custom front-end forms with ease.

Contact Form, Content

de2db1366de2ec32a4b696200b1d3b5e335

Magic Forms

Create easy and flexible front-end AJAX forms (contact, feedback, registration, uploads)

Magic Forms

Create easy and flexible front-end AJAX forms (contact, feedback, registration, uploads)

Contact Form, Social

e7f067daae7f3c451fd1f0910511cb5ac0e

Small Contact Form

Simple but flexible multi language contact form builder with custom fields, validation and antispam

Small Contact Form

Simple but flexible multi language contact form builder with custom fields, validation and antispam

33c8a936c33cdfcd7752b7b773fae2c6d9a

ContactMe

Contact Form plugin for OctoberCMS

ContactMe

Contact Form plugin for OctoberCMS

f51bd4340f51b9905ce847cd45bc23bd1bc

Custom Forms

Custom forms made easy

Custom Forms

Custom forms made easy

Contact Form, Customization

516d68045516fb7883cf98ebb2f1de301f9

Flexi Contact

A Flexible and Configurable Contact Form to Add to any Page

Flexi Contact

A Flexible and Configurable Contact Form to Add to any Page

53a7f78ae53a3d103a191583c557df33594

SendGrid

This plugin let you sending email through Sendgrid driver.

SendGrid

This plugin let you sending email through Sendgrid driver.

Contact Form, Email

e7884d19be789c191aed78ccc2b7311ab61

Simple Contact Us

Easily configurable contact us form. Add form to any page and manage, reply or print recieved messages.

Simple Contact Us

Easily configurable contact us form. Add form to any page and manage, reply or print recieved messages.

71eed32fa71e519eaa35ed3d21cc8f09866

Forms

GromIT.Forms is a simple and powerful frontend forms constructor for October CMS.

Forms

GromIT.Forms is a simple and powerful frontend forms constructor for October CMS.

Contact Form, Content

6a03f00666a0c06e559176db6bf1b45bec4

Contact Manager

Manage Companies, Contacts, Events, Calendars and Subscribers, with contact form and subscribe form

Contact Manager

Manage Companies, Contacts, Events, Calendars and Subscribers, with contact form and subscribe form

Contact Form, Content

53cbecfd353c199f7f83fbc6683e7c460a9

Mail Telegram

Send site mail to your Telegram account using bot

Mail Telegram

Send site mail to your Telegram account using bot

Contact Form, Email

4047f8fa7404eda62c6e56815e7cc37c580

Webmail Beta [DEPRECATED]

Send and receive emails using your existing IMAP mail server

Webmail Beta [DEPRECATED]

Send and receive emails using your existing IMAP mail server

Contact Form, Email

Popular bundles

Small Bundle

3a5c5c1353a5a0917687699ce1b980b7f59 802368b4d8022cf8f948b50ece0ed8abddc 787ffda1b7870ef5d45792e12d2d75bdda8

Collection of plugins for small web sites

Small Bundle

Collection of plugins for small web sites

CRM Pro

ee269e8e5ee2616748fb292e96494b88493 086196c3c08623e0734e9b750a1fb57851d 275d3c9f7275aa367d6295083601b4afd1a f53f21876f535ba05afdaaf9e7bf2ae3bef 92558da5e925ebd7637139f94ab76b5371c 7ec86d4107ecac328bc38c7f9ce0013363a b6a682451b6af654a208a465888b3bf35c7 de852b079de8fe9647ed32ae54ce9f49923

The professional Customer Relations Manager (CRM) for October

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • oclean приложение не работает
  • oclean приложение для китайской версии