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

demyan

  • Новичок
  • 9
  • 0 / 0
Как мы знаем для вывода видео в PhocaGallery подходят лишь некоторые виды детального окна. Проблема вот в чем: если я устанавляваю просмотр в  Modal Box и указываю его размеры, то видео отобважается нормально а фото не помещается и для его просмотра используется прокрутка, если выставляю больше размер то всеравно коряво так как видео остается маленьких размеров. Если выбираю настройках окна youtube "полное видео" оно всеравно маленькое и сьезжает к верхнему левому краю окна..  :P Нет ли какого-то способа сделать отображение детального окна для фото и видео автоматически по размеру как это происходит с окном SLIMBOX? В нем фотки идеально но видео оно не может показывать (((( Помогите. Ссылку не могу дать так как сайт еще закрыт. Это пока мой второй сайт так что извините если вопрос дилетантский. Может можно разным категориям задать разное детальное окно как в модулях? ПОМОГИТЕ! ! !  Возможно посоветуете где можно прописать размер видео которое отображается в детальном окне
« Последнее редактирование: 09.12.2015, 16:25:12 от demyan »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Название файла вместо имени фото

Автор dj_serg

Ответов: 3
Просмотров: 3548
Последний ответ 08.12.2022, 20:01:22
от marksetter
PhocaGallery Description ( как на демо) вывод описания и заголовка к фото

Автор strela.mari

Ответов: 0
Просмотров: 3185
Последний ответ 18.03.2019, 13:32:08
от strela.mari
Вставка видео с youtube, вместо изображения

Автор Igoritaly

Ответов: 0
Просмотров: 1170
Последний ответ 17.05.2018, 09:49:09
от Igoritaly
Не могу установить Phoca Gallery

Автор No_LiMiT

Ответов: 113
Просмотров: 46819
Последний ответ 25.01.2018, 10:16:01
от Zolushka
В PhocaGallery не появляются фото в списке подкатегорий

Автор sergspb

Ответов: 2
Просмотров: 1389
Последний ответ 22.05.2017, 23:45:48
от sergspb