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

Roman82

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Здравствуйте!
Есть стандартный модуль для авторизации, и есть меню для зарегистрированных, но это два модуля нужно размещать на сайте (в одном авторизация а другой модуль появляется после). Можно ли как-нибудь объединить в один модуль? Чтобы была форма для входа на сайт, а после входа в этом же модуле появлялось меню для тех кто прошел авторизацию. Или может быть замена стандартного модуля на другой? Подскажите что можно сделать?
Спасибо!
Joomla 3.6.5
*

Roman82

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Я как ни напишу, так никто ничего не знает. Скажите как вы делаете меню авторизации, чтобы потом в этом же модуле появилось меню?
Или все по два модуля делают?
*

Olg

  • Завсегдатай
  • 1181
  • 90 / 2
1) Например, модуль авторизации находится в позиции "left_1".
2) После авторизации зарегистрированный пользователь переходит на другую страницу -- так уберите с этой страницы модуль авторизации, а в позицию left_1 поставьте меню для зарегистрированных.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
1) Например, модуль авторизации находится в позиции "left_1".
2) После авторизации зарегистрированный пользователь переходит на другую страницу -- так уберите с этой страницы модуль авторизации, а в позицию left_1 поставьте меню для зарегистрированных.
Это уже
по два модуля делают
, а ТС хочет 2 в 1.
Roman82, готового решения, скорее всего, нет. Сделать нетрудно, но задача, видимо, специфическая: кроме вас никому она не нужна.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Модуль входа- доступ для гостей, модуль меню- доступ для зарегистрированных. В одной позиции.
*

Roman82

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Цитировать
готового решения, скорее всего, нет. Сделать нетрудно, но задача, видимо, специфическая: кроме вас никому она не нужна.
Я часто такое вижу на сайтах. Например в K2 в меню авторизации есть свое меню + привязка меню Joomla, но как-то не хочется ставить K2 только из-за меню.

Цитировать
Модуль входа- доступ для гостей, модуль меню- доступ для зарегистрированных. В одной позиции.
Ну хорошо, сделаю меню для входа и если потом я его уберу куда-нибудь, как пользователь будет выход искать? В одной позиции это и есть 2 меню: 1. для входа 2. после входа для пользователя (они друг под другом будут находится).
*

Serg_

  • Захожу иногда
  • 168
  • 24 / 1
  • Skype: smile_bot (Запорожье)
Цитировать
Есть стандартный модуль для авторизации, и есть меню для зарегистрированных
1) оба модуля размещаете в одной позиции
2) "меню для зарегистрированных" даете доступ только зарегистрированным и оно будет видно после авторизации
3) "стандартный модуль для авторизации" после авторизации позволит сделать выход

Можно сделать и в одном меню
1) пункт меню для незарегистрированных (для всех) просто 1 пункт "Логин" со ссылкой на страницу авторизации
2) остальные пункты меню сделать для зарегистрированных
*

Roman82

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Цитировать
1) оба модуля размещаете в одной позиции
2) "меню для зарегистрированных" даете доступ только зарегистрированным и оно будет видно после авторизации
3) "стандартный модуль для авторизации" после авторизации позволит сделать выход
Я так и делал, но это два модуля занимают место. А вот второй вариант можно попробовать если уж ничего не придумаю другого. Да и потом после авторизации хотелось бы чтобы в модуле было фото пользователя а ниже пункты для зарегистрированных.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Ну хорошо, сделаю меню для входа и если потом я его уберу куда-нибудь, как пользователь будет выход искать?
Пункт меню тип внешняя ссылка  добавить для выхода- Выйти.
*

Roman82

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
В общем сделал так: сначала сделал так как здесь говорили (с ссылкой на выход в меню), но не очень удобно вход и выход через форму авторизации делать, потом случайно (до этого не мог найти) в инете нашел модуль SCLOGIN (форма авторизации + можно меню Joomla вставить) и после авторизации в этом же модуле появляется меню, это удобней т.к. всё в одном модуле.
Может кому пригодится. Тема закрыта. Всем спасибо!
*

sirocco

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
В общем сделал так: сначала сделал так как здесь говорили (с ссылкой на выход в меню), но не очень удобно вход и выход через форму авторизации делать, потом случайно (до этого не мог найти) в инете нашел модуль SCLOGIN (форма авторизации + можно меню Joomla вставить) и после авторизации в этом же модуле появляется меню, это удобней т.к. всё в одном модуле.
Может кому пригодится. Тема закрыта. Всем спасибо!
Отлично то что надо. Переделал модуль еще под себя и вообще огонь. Самый класс, то что ссылки можно изменить в самой настройке и на любую форму регистрации отправить.
*

Ольга89

  • Новичок
  • 1
  • 0 / 0
Лично у меня возник вопрос по авторизации такой: Почему в модуле нет поля для логина, пароля, запомнить меня, регистрация, забыли логин, забыли пароль. Ни где не могла найти ответ на этот вопрос и тут до меня дошло, что у меня сайт отключен, после включения все стало как надо. Может моя информация для кого-то будет полезной, а для кого-то элементарной, но я новичок. ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Исчез компонент 'Поля' из меню в админке

Автор goga_pgasovav

Ответов: 2
Просмотров: 1270
Последний ответ 23.12.2024, 22:31:21
от goga_pgasovav
После обновления до Joomla 3.7 в админке в меню "Компоненты" пропали пункты

Автор lolitma3

Ответов: 39
Просмотров: 13131
Последний ответ 15.06.2023, 11:55:16
от Victor333
Вывод поля поиска первым пунктом в меню

Автор Mick_20

Ответов: 3
Просмотров: 1007
Последний ответ 03.02.2023, 13:02:46
от Mick_20
Текст меню выходит за границы меню.

Автор 7733039

Ответов: 1
Просмотров: 1419
Последний ответ 05.08.2022, 16:32:00
от marksetter
data-toggle data-target в меню Joomla?

Автор romagromov

Ответов: 6
Просмотров: 1071
Последний ответ 14.07.2022, 20:33:55
от romagromov