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

Mirtilli

  • Новичок
  • 3
  • 0 / 0
Просмотрел много тем по похожим вопросам, но там всё не то.

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

Скажу сразу, что сайт создавали сторонние разработчики и нам передали управление для размещения простых новостных материалов и подобного. Толком ничего не объясняли и посоветовали вообще ничего лучше не трогать, только не понятно тогда, кто будет обновлять сайт, если ничего не трогать. Хотя, я их понимаю, реально куча какой-то фигни, типа моей проблемы возникает. Может, конечно, это я тупой такой, но Joomla мне абсолютна не нравится. Но что дали.
Я этим занимаюсь буквально месяц. В хтмл кодировании я не разбираюсь и меню правки кода я, честно говоря, не знаю, где находится. В руководствах по работе написано всё общими словами что куда нажать - самое простое. В общем, если мне напишут что-то вроде "разве сложно посмотреть лог и выписать ошибки от туда и указать название шаблона?" - я не пойму.
Так что сразу извиняюсь за свою твердолобость и глупость. Но лучше объяснять попроще :(

Спасибо всем, кто откликнется.
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
*

Mirtilli

  • Новичок
  • 3
  • 0 / 0
это происходит с модулем определённого типа?

Я решил создать модуль по принципу того, что уже имеется на сайте. Поэтому взял тот же тип - Модуль «HTML-код»
В нём размешается у меня несколько изображений и пояснения под ними, изображения с ссылками на сторонние сайты.
Авторизируюсь - и всё видно и работает, а если так просматривать сайт без входа, то виден только заголовок модуля без содержимого.
Я даже пока толком не знаю, чем все эти типы модулей отличаются, поэтому взял тот же, что уже работает как и мне нужно.


« Последнее редактирование: 21.09.2017, 10:03:20 от Mirtilli »
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
У вас там некий хак движка, то есть совсем не стандартный функионал джумлы.
Даже справа видно - группы пользователей, для кого отображать модуль
*

Mirtilli

  • Новичок
  • 3
  • 0 / 0
Всё разрешилось. Большое спасибо за отклики.
*

Adisanut

  • Новичок
  • 2
  • 0 / 0
Что мне делать? Доступ к файлу.


คาสิโนออนไลน์
« Последнее редактирование: 09.04.2018, 06:42:00 от Adisanut »
*

TkGhoul

  • Новичок
  • 2
  • 0 / 0
Содержимое очень полезно в автономном режиме.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перевести только меню

Автор starclyde

Ответов: 6
Просмотров: 2941
Последний ответ 22.11.2020, 22:47:06
от AlexB
Не отображается часть языков?!

Автор geranya

Ответов: 1
Просмотров: 2299
Последний ответ 01.12.2015, 14:05:43
от geranya
Не отображается один язык

Автор talgat8810

Ответов: 0
Просмотров: 2031
Последний ответ 02.10.2014, 15:47:59
от talgat8810
Надпись welcome только в одном языке

Автор kith_debeetham

Ответов: 0
Просмотров: 1809
Последний ответ 12.05.2014, 09:15:16
от kith_debeetham
Не отображается переключатель на 4-й язык

Автор premisse

Ответов: 17
Просмотров: 1960
Последний ответ 17.04.2014, 11:34:33
от premisse