Новости 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 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 1904 Просмотров
*

anatolij

  • Захожу иногда
  • 121
  • 1 / 0
Добрый день, восстановление пароля работает идеально, но столкнулся со следующей проблемой.

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

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

Можно сделать так чтобы при вводе эл. почты. им сразу отправлялся логин и пароль.
« Последнее редактирование: 19.11.2013, 12:34:11 от anatolij »
*

oshpz

  • Захожу иногда
  • 149
  • 5 / 0
Re: Проблема с восстановлением пароля
« Ответ #1 : 20.11.2013, 08:58:20 »
Ну так, добавьте в реализацию вывод логина на основании почты. Хотя, может сделать по другому?

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

anatolij

  • Захожу иногда
  • 121
  • 1 / 0
Re: Проблема с восстановлением пароля
« Ответ #2 : 22.11.2013, 13:16:27 »
Ну так, добавьте в реализацию вывод логина на основании почты. Хотя, может сделать по другому?

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

Я бы это давно уже сделал, но как это реализовать ? Я не силён в PHP !
*

Skydiver

  • Новичок
  • 5
  • 0 / 0
Re: Проблема с восстановлением пароля
« Ответ #3 : 15.02.2017, 19:28:52 »
Та же самая проблема(

Ребят, может кто поможет?
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Re: Проблема с восстановлением пароля
« Ответ #4 : 15.02.2017, 19:45:44 »
Я думаю, стоит "напоминалку" дописать в виде или шаблона или файла.
Не готов сказать решение, нужно смотреть точечно.

Но я бы посоветовал обновить ядро на 3.х последнее.

Если есть бюджет, создайте тему в коммерческом разделе.
Могу взяться с выше условиями.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Skydiver

  • Новичок
  • 5
  • 0 / 0
Re: Проблема с восстановлением пароля
« Ответ #5 : 15.02.2017, 19:54:09 »
Версия Joomla Joomla! 3.6.5 Stable [ Noether ] 1-December-2016 22:46 GMT

Проблема как у ТС.

Приходить письмо:

Цитировать
Здравствуйте,

На сайте ****** был сделан запрос на восстановление пароля к вашей учётной записи. Чтобы восстановить пароль вам потребуется ввести указанный ниже код подтверждения.

Код подтверждения: 0490ab77f1a561e55d685e42f21aeb08

Для ввода кода подтверждения перейдите на страницу по ссылке ниже.

 http://www....
Спасибо.

В письме после слова "Здравствуйте" стоит только запятая. В идеале, чтоб там как раз и прописывался логин. Т.к. пользователи его просто не помнят. Или сделать так как предложил  oshpz

Обсудим бюджет в скайпе?
« Последнее редактирование: 15.02.2017, 19:59:32 от Skydiver »
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Re: Проблема с восстановлением пароля
« Ответ #6 : 15.02.2017, 20:03:12 »
обсудим.скайп слево.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Skydiver

  • Новичок
  • 5
  • 0 / 0
Re: Проблема с восстановлением пароля
« Ответ #7 : 15.02.2017, 21:39:58 »
 Найден исполнитель, тема закрыта!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема при переносе сайта Joomla 2.5 на локальный сервак

Автор laughing

Ответов: 13
Просмотров: 3536
Последний ответ 08.01.2021, 16:17:03
от gartes
Проблема при переезде с хостинга на хостинг

Автор hip

Ответов: 1
Просмотров: 1381
Последний ответ 07.08.2017, 15:44:16
от Stasweb
Проблема с проверкой базы данных

Автор dron

Ответов: 2
Просмотров: 2072
Последний ответ 27.02.2017, 12:23:06
от dron
Проблема ввода при установке (Field required)

Автор 666SY666

Ответов: 3
Просмотров: 2785
Последний ответ 22.12.2016, 22:33:19
от 666SY666
проблема с обновлением 1.5

Автор Anton76

Ответов: 23
Просмотров: 1961
Последний ответ 05.12.2016, 22:33:55
от SeBun