Новости Joomla

Свои типы полей в Joomla.

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note" name="your_note_for_user" label="Заголовок примечания" title="Альтернативный способ для заголовка" description="Текст примечания" class="col-12 alert alert-info" heading="h1" close="true" />

heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён. Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле

<field type="systempluginstatus" name="systempluginstatus" addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>

-

type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:

<?php // namespace для атрибута addfieldprefix namespace Joomla\Module\Wtquicklinks\Site\Fields; // нельзя напрямую обращаться к этому файлу defined('_JEXEC') or die; // подключаем родительский класс для переопределения use Joomla\CMS\Form\Field\NoteField; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\PluginHelper; // имя класса и имя файла точь-в-точь class SystempluginstatusField extends NoteField { protected $type = 'Systempluginstatus'; protected function getLabel() { // если плагин не включён if(PluginHelper::isEnabled('system','wtquicklinks')) { // меняем свойства родительского класса $this->class = 'alert alert-danger w-100'; $this->element['label'] = '⚠️ А-а-а-а!'; $this->element['description'] = 'Плагин не включён!!'; // и просто рендерим его с нашими свойствами return parent::getLabel(); } // А иначе всё хорошо, скрываем поле из виду. $this->parentclass = 'd-none'; return ''; } }

Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает. @webtolkru#joomla #php #webdev #разработка

0 Пользователей и 2 Гостей просматривают эту тему.
  • 304 Ответов
  • 46615 Просмотров
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Актуальная версия плагина
RadicalForm 3.1.0


Что умеет плагин?

  • Это бесплатный плагин, который таким и останется.
  • Форма написана на чистом javascript и не требует подключения jQuery
  • Работает в любом месте сайта, нет никаких ограничений. (актуально для различных конструкторов сайтов, интернет магазинов и т.д.)
  • Это AJAX плагин.
  • Прекрасно работает во всплывающих окнах. Есть возможность их закрывать после отправки формы.
  • Можно удобно вставлять цели Яндекс метрики в интерфейсе плагина.
  • Количество форм обратной связи на странице не ограничено! (удобно для лендингов)
  • Можно отправлять фото и другие файлы (контроль вложений есть).
  • Полей для отправки вложений может быть несколько.
  • Корректно работает с кешированием Joomla и даже со включенным полностраничным кешированием!
  • Проверяется CSRF токен.
  • Есть интеграция с мессенджером телеграм.
  • Используется встроенная возможность джумлы делать многоязычные формы (для каждого языка свою)
  • Есть функция логирования отправленных форм
  • Есть возможности выбора адресата для каждой формы
  • Есть возможность создания кнопок "Купить в один клик" для любого интернет магазина
  • Реализована вставка любого поля формы или комбинации полей в тему письма
  • Предусмотрена валидация HTML5 полей формы
  • Есть возможность изменения поля Reply To
  • Корректно работает с полями со множественными значениями (checkbox, select multiple)
  • Есть возможность переопределения шаблона отправляемых писем
  • Есть интеграция с сервисом Jivosite
  • Есть интеграция с сервисом Verbox
  • Есть возможность выполнения своего кастомного php кода во время отправки формы
  • Есть возможность экспорта отправленных форм в CSV
  • Есть возможность расширения функционала за счет системы плагинов Joomla
  • Есть возможность хранить загруженные файлы на сервере и передавать их по ссылке



В чем кардинальное отличие от других форм обратной связи?

Сама форма формируется пользователем в соответствии со своим шаблоном Joomla (все равно в каждом шаблоне уже есть красиво оформленные формы обратной связи).
Это дает возможность вставить форму куда угодно и оформить так как вам больше нравится. Легко реализуются варианты вставки формы в модальные окна (кнопки "заказать звонок" или подобные).
Отправкой занимается плагин.


Документацию на плагин и прочитать поподробнее о его работе можно здесь https://hika.su/rasshireniya/radical-form

Мнения и предложения поддерживаются и рассматриваются.
Сообщать баги и свои предложения можно тут https://github.com/Delo-Design/radicalform/issues

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

Скачать можно тут https://github.com/progreccor/radicalform/releases/latest

Если вдруг гитхаб окажется заблокированным - скачать можно и тут http://hika.su/update/free/plg_radicalform.zip
« Последнее редактирование: 24.01.2023, 23:52:20 от Progreccor »
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
К сожалению сайт на локалке, доступ дать проблематично.
у меня предположение, что вы что-то неправильно сделали.

Как вариант - вышлете архив сайта, я могу развернуть на локалке и посмотреть.

В плагине много проверок, не должен он просто так падать.
*

proandrey

  • Захожу иногда
  • 85
  • 1 / 0
пример реализации радио-кнопок (bootstrap-3, выбирается только одно значение)
Код
<div class="radio"><label> <input name="tarif[]" value="Бюджет" type="radio" /> Тариф Бюджет </label></div>
<div class="radio"><label> <input name="tarif[]" value="Базовый" type="radio" /> Тариф Базовый </label></div>
<div class="radio"><label> <input name="tarif[]" value="Стандарт" type="radio" /> Тариф Стандарт </label></div>
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
спасибо за то, что делитесь своими наработками.

можно опубликовать полностью форму, думаю для других будут полезны примеры на bootstrap
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
У меня шаблон от rockettheme, хотел сделать модальное окно, которое появляется на 3 секунды "сообщение отправлено" и закрывается. Со стилями еще не разобрался....
Я отдельно создавал такое окно, но перенести не смог его в эту форму.
https://www.w3schools.com/code/tryit.asp?filename=FSQDVUXTX3E8
По идее никакой сложности нет, но надо уточнить некоторые моменты - $ не будет доступен, так как jQuery находится  в режиме noConflict по умолчанию и поэтому вместо $ надо писать jQuery.
Далее - размещение скриптов для загрузки в шапке - это ваша забота и ее надо решать самостоятельно независимо от плагина.
А в остальном - проблем быть не должно никаких.

Расскажите подробно как вы делали интеграцию и мы вместе сможем решить эти проблемы.
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Код Javascript №2 (для вывода сообщения) - это тот код, который будет вызван после отправки сообщения на емейл (или телеграм)
Там по умолчанию стоит alert(rfMessage)
Вы можете поменять это на свой скрипт, который подходит вам. Собственно в этом и заключается гибкость плагина - используйте тот вид вывода сообщения, который вам больше подходит.
Например я пользуюсь шаблонами команды yootheme и там меняю alert на вызов такой функции:
Код
UIkit.modal.alert(rfMessage);
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
идея плагина заключается в том, что он вообще не вмешивается ни в вывод модальных окон на сайте, ни в оформление самой формы. В этом он и проявляет свою гибкость.
Вы даже можете не использовать вывод модального окна, а воспользоваться яваскриптом для того чтобы вывести сообщение об успешной отправке формы чуть выше или чуть ниже существующей формы. (можно даже вместо формы - так делают некоторые формы).

Однако вы ошибаетесь, думая что у вас нет кода для вывода модального окна - как минимум у вас есть возможность вывести модальное окно с помощью boostrap (если не ошибаюсь - рокеттим это поддерживает)
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Не могу разобраться с отправкой файлов.
Выбираю фото, отправляю, приходит только имя файла
И непонятно что делает кнопка ПРИЛОЖИТЬ ФОТО, нажимаю её и ничего не происходит.

покажите код вашей формы.
или ссылку на сайт
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
я, конечно, не понимаю зачем применять таблицу для оформления формы и для чего нужны запрещенные теги <center>, но в остальном все должно работать.
У вас нет ошибок в консоли?
И еще - может быть у вас режет файлы ваш мейлер?
И о какой кнопке "приложить фото" вы говорите?
я ее не вижу
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Я отправляю на телеграм.

В общем если ввести в текстовое поле текст, выбрать файл и нажать кнопку "ПРИЛОЖИТЬ ФОТО", то ничего не отсылает и текстовое поле очищается и в браузере к адресу сайта добавляется информация о разрешении экрана, реферальная ссылка и имя файла.
Когда заполняю текстовое поле и добавляю фото то на телеграм приходит информация с текстового поля и название вложенного файла. Я пробовал разные фото и файлы, не отсылает.

Ключевое слово - отправка на телеграм.
На телеграм нет возможности приложить фото.
Делать ссылку на загруженные фото на сайте - сомнительное удовольствие в плане безопасности.
Насчет кнопки "приложить фото"  - если вы используете фреймворк uikit или шаблоны yootheme - там есть возможность оформить кнопку отправки фотографии в любом удобном виде, а не только в том, который вам навязывает браузер. Ее смысл только в этом.

*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
если вам катастрофически нужна отсылка фото на телеграм - есть вариант вместо имен файлов прилагать ссылки на загруженные на сайт файлы.
Правда это не очень хорошо с точки зрения безопасности.... Поэтому вопрос пока что открытый.
Однако можете написать свое мнение об этом
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
В История отправки форм не отображаются то, что было передано через <select> <option>.
На телеграм приходят эти данные формы из <select> <option>.
И еще такой вопрос, я еще не проверял, я так понял можно послать сообщение на два бота, добавить два токена и с помощью ID будет выбираться токен для каждого ID?
немного не понял вопроса...
Если у вас в списке будет несколько chatit для telegram, то отправка будет на все.
Если нужно другое поведение - можно выбрать с помощью параметров формы на какие chatid отправлять.

В истории отправки форм должны отображаться параметры select.
Если не отображается - скопируйте сюда код формы - я проверю, и если есть ошибка - будет выпущен багфикс
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
есть еще сервис imgur.com
Может и его можно интегрировать
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Вышла новая версия плагина - 1.5.0
  • Теперь в логах отправки корректно учитывается часовой пояс сайта. Проверьте настройки часового пояса сайта в разделе 'Настройки -> Сервер -> Часовой пояс сервера'
  • Добавлена возможность отключения дополнительной информации для e-mail. Теперь в письмах можно отключить дополнительную информацию о посетителе (такую как IP адрес, разрешение экрана и адрес, откуда пришел посетитель)
  • Отображаемая длина рефера (адреса, откуда пришел посетитель) теперь ограничивается 64 символами. Это позволяет не ломать дизайн писем через чур длинными адресами (чаще всего они получаются у посетителей из Яндекс поиска)
  • Минимальная версия Joomla 3.7
  • На страницах, где не используется форма обратной связи все равно будет записываться IP  для Яндекс метрики
  • Введена возможность переопределения шаблона писем
  • Добавлен новый шаблон писем, который адекватно отображается на различных емейл клиентах
  • Теперь более корректно проверяется очистка папки с отправленными файлами
  • Добавлена проверка того факта, что div для списка загруженных файлов располагается внутри формы
  • Исправлена ошибка, когда список загруженных файлов оказывался одним для всех форм на странице

Для переопределения шаблона отправки писем  вам нужно создать папку plg_system_radicalform в папке с именем html вашего шаблона. Это стандартный способ переопределения представлений различных расширений Joomla.

Затем вам нужно будет скопировать файл default.php из папки /plugins/system/radicalform/tmpl в папку /templates/yootheme/html/plg_system_radicalform . Здесь yootheme надо поменять на имя папки вашего шаблона.

Этот файл вы можете модифицировать по своему усмотрению. Переменная $subject - это тема письма, $mainbody - основное тело письма и $footer - дополнительная информация о посетителе.
« Последнее редактирование: 12.07.2018, 10:33:44 от Progreccor »
*

a090588

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
как пример на UIKIT 3
Код
<form>
    <fieldset class="uk-fieldset">
<div>Напишите нам</div>
<div class="uk-margin">
<div class="uk-inline">
<a class="uk-form-icon" uk-icon="icon: user"></a>
<input class="uk-input" name="name"placeholder="Имя" required type="text">
</div>
</div>
<div class="uk-margin">
<div class="uk-inline">
<a class="uk-form-icon" uk-icon="icon: mail"></a>
<input class="uk-input " name="email" placeholder="Ваш Email..." required type="email">
</div>
</div>
<div class="uk-margin">
<textarea class="uk-textarea" rows="6" placeholder="Сообщение"></textarea>
</div>
<div class="uk-margin" uk-margin>
<a class="uk-button uk-button-default rf-button-send">
<span class="uk-text-middle">Отправить</span>
<span uk-icon="chevron-right" class="uk-icon"></span>
</a>
</div>
<input name="rfSubject" value="Заказ на сайте" type="hidden">
    </fieldset>   
</form>
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Вышла новая версия плагина Radical Form - 1.6.0

  • добавлена интеграция с сервисом Jivosite
  • подчищен JavaScript код

Небольшое пояснение относительно интеграции с сервисом Jivosite:
Если вы хотите чтобы информация о посетителе (такая как email, его имя и телефон) попали в сервис Jivosite - нужно назвать поля формы соответствующим образом.

То есть поле с именем должно иметь имя - name:
Цитировать
<input class="uk-input required" name="name" placeholder="Ваше имя..." type="text">
Поле с телефоном должно иметь имя - phone:
Цитировать
<input class="uk-input required" name="phone" placeholder="Ваш телефон..." type="text">
Поле с email должно иметь имя email:
Цитировать
<input class="uk-input required" name="email" placeholder="Ваш email..." type="text">
« Последнее редактирование: 06.08.2018, 23:19:51 от Progreccor »
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Очень удобный плагин, не хватает только возможности интеграции с AmoCRM, чтобы записывались новые сделки при отправке формы.
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Очень удобный плагин, не хватает только возможности интеграции с AmoCRM, чтобы записывались новые сделки при отправке формы.
Достаточно просто попросить об этом...
На самом деле, если у вас сейчас используется jivosite, то уже можно так делать...
Обычно живосайт включен в crm.

Если нужна интеграция с crm - просто пишите здесь и сделаем такую вещь
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Спасибо, я проработаю вопрос и напишу все подробно. Сейчас готовлю новую версию одного проекта, в старой есть интеграция с црм, вроде все просто сделано.
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Добрый день, я начал активно использовать ваш плагин как замену PWebContactForm и сравнивая функционал обоих решений нахожу ряд простых, но значимых для типовых проектов моментов.

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

Можно добавить его к блоку настроек Дополнительная информация о посетителе или в документацию как переменную rfPage для использования в теме и hidden полях.

Если вставлять в тело письма, то хотелось бы видеть это как в PWebContactForm:
Страница сайта: [link]Page_title[/link]

Сейчас в документации есть пример, как получить title в письме, но это больше похоже на "после сборки обработать напильником".

Считаю, что этот параметр вполне достоин сразу быть в функционале.
-----------
2. Очень полезным при обработке сообщений бывает номер такого обращения, т.е. чтобы каждое сообщение с сайта имело свой порядковый номер.
Полагаю, что тут можно опереться на число строк в логе или придумать какой-то другой механизм для хранения последнего номера сообщения.
Нужна будет переменная, например, rfTicket для использования в теме письма и скрытых полях формы.
« Последнее редактирование: 24.09.2018, 13:59:06 от Alex Revo »
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Добрый день, я начал активно использовать ваш плагин как замену PWebContactForm и сравнивая функционал обоих решений нахожу ряд простых, но значимых для типовых проектов моментов.

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

Так ведь в дополнительной информации передается адрес страницы, с которой была отправлена форма...
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
2. Очень полезным при обработке сообщений бывает номер такого обращения, т.е. чтобы каждое сообщение с сайта имело свой порядковый номер.
если вы считаете что такой функционал нужен - можно добавить
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Так ведь в дополнительной информации передается адрес страницы, с которой была отправлена форма...
Адрес да, но было бы более информативно видеть ссылку в виде Тайтла страницы.
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Адрес да, но было бы более информативно видеть ссылку в виде Тайтла страницы.
Если просто делать ссылку в виде тайтла - не у всех на сайтах тайтлы информативные.
Ну ок. Задачу понял, добавим
*

fireman

  • Захожу иногда
  • 338
  • 10 / 0
  • в цель...
Здравствуйте! Не отправляет сообщения и при этом в отладчике следующая картина:

или здесь не видно причину?
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
*

fireman

  • Захожу иногда
  • 338
  • 10 / 0
  • в цель...
Что пишет в консоле?
Если открыта консоль, то при отправке сразу открывается отладчик (на фото в посте выше).
Если вернуться после этого в консоль, то там:
POSThttp://xn----7sbbwpcfv4an6h1c.xn--p1ai/index.php?option=com_ajax&plugin=radicalform&format=json&group=system
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1
Если открыта консоль, то при отправке сразу открывается отладчик (на фото в посте выше).
Если вернуться после этого в консоль, то там:
POSThttp://xn----7sbbwpcfv4an6h1c.xn--p1ai/index.php?option=com_ajax&plugin=radicalform&format=json&group=system
так а по итогам что показывает?
у вас в админке Joomla письма вообще отправляются?
*

fireman

  • Захожу иногда
  • 338
  • 10 / 0
  • в цель...
так а по итогам что показывает?
у вас в админке Joomla письма вообще отправляются?
Так получилось что починили имеющуюся форму, поэтому от данного плагина отказались. Но тема интересная, будем практиковать, при наличие вопросов и проблем, отпишусь. Спасибо.
*

WolfGun

  • Новичок
  • 3
  • 0 / 0
Добрый день.
Второй день бьюсь головой ненамо куда. Изучаю доку на предмет "Отправка фотографий и других разрешенных вложений" и не могу понять, где косячу. Хочу сделать кастомный вид кнопки для загрузки изображений. А конкретно, выводить список фото на загрузку. При этом мне не нужно выводить стандартный вид кнопки загрузки. Стилизую кнопку под дизайн, скрываю стандартный вид кнопки - не выводится список. Отображаю стандартную кнопку - список готовых файлов на загрузку проявляется.  *ОХ-Х-Х* Помогите, плз, проект горит

Забыл еще сказать. При вставке кода с инструкции "стилизованная" кнопка тупо перезагружает страницу с добавление к адресу домена "?rfSubject=<перечисление имен полей, букв, цыфр>". Как-то так. Адрес проекта тут
« Последнее редактирование: 07.11.2018, 16:02:45 от WolfGun »
*

Progreccor

  • Захожу иногда
  • 270
  • 25 / 1

на вашем сайте ошибки в скриптах
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

QuickForm - форма с функциями калькулятора и зависимыми полями

Автор varX

Ответов: 1332
Просмотров: 204729
Последний ответ 29.09.2021, 16:40:57
от varX
AJAX Web-Factor Form - простая форма обратной связи для Joomla 3+

Автор orsy

Ответов: 75
Просмотров: 19902
Последний ответ 17.07.2021, 10:01:40
от Biss
Форма обратной связи для Joomla 2.5

Автор ForQue

Ответов: 0
Просмотров: 3132
Последний ответ 10.01.2021, 10:57:08
от ForQue
Модуль конструктор формы обратной связи simpleForm2 для Joomla 1.0 / joostina 1.2

Автор vs12345

Ответов: 21
Просмотров: 23025
Последний ответ 25.09.2020, 16:21:22
от svarg
Perfect ajax Popup Contact Form не отправляет вложения

Автор fireman

Ответов: 0
Просмотров: 3030
Последний ответ 11.04.2019, 18:50:20
от fireman