Новости 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 Ответов
  • 6052 Просмотров
*

moskitos80

  • Осваиваюсь на форуме
  • 21
  • 3 / 0
Плагин "скрытый текст"
« : 01.05.2011, 15:15:26 »
Всем привет. Вот сделал плагин для Joomla 1.5 , который скрывает нужный текст от пользователей у которых нет, или не хватает прав доступа. Права устанавливаются в настройках плагина, там же можно написать замещающий текст типа "только для зарегистрированных пользователей". Права делятся по основным группам: зарегистрированный, автор, редактор и т.д. для работы плагина нужно:
во - первых: его включить  ^-^ , во - вторых: текст, который вы хотите скрыть обрамить следующей конструкцией: {mask: А здесь ваш секретный текст}. Теперь, если у пользователя хватает прав, то он увидит скрытый текст, иначе он увидит замещающий текст ( он кстати может содержать HTML - форматирование ), который вы ввели в настройках.

Качайте тут: http://letitbit.net/download/72415.75922ac4811433a9994d5e4d5659/plg_flyguest.zip.html
и тут: http://vip-file.com/downloadlib/2935694831616502006363-72415.75922ac4811433a9994d5e4d5659/plg_flyguest.zip.html
« Последнее редактирование: 01.05.2011, 15:19:10 от moskitos80 »
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Re: Плагин "скрытый текст"
« Ответ #1 : 01.05.2011, 15:20:41 »
укажите для какой версии Joomla.

Тьфу, незаметил что указано...
Мне бы для 1.6.х
Я с мобильного, в основном...
*

moskitos80

  • Осваиваюсь на форуме
  • 21
  • 3 / 0
Re: Плагин "скрытый текст"
« Ответ #2 : 01.05.2011, 15:39:18 »
Увы. Под 1.6 я пока не пишу.
*

tefun

  • Живу я здесь
  • 2540
  • 130 / 1
  • Легче всего обмануть себя
Re: Плагин "скрытый текст"
« Ответ #3 : 06.12.2011, 17:15:55 »
Всем привет. Вот сделал плагин для Joomla 1.5 , который скрывает нужный текст от пользователей у которых нет, или не хватает прав доступа. Права устанавливаются в настройках плагина, там же можно написать замещающий текст типа "только для зарегистрированных пользователей". Права делятся по основным группам: зарегистрированный, автор, редактор и т.д. для работы плагина нужно:
во - первых: его включить  ^-^ , во - вторых: текст, который вы хотите скрыть обрамить следующей конструкцией: {mask: А здесь ваш секретный текст}. Теперь, если у пользователя хватает прав, то он увидит скрытый текст, иначе он увидит замещающий текст ( он кстати может содержать HTML - форматирование ), который вы ввели в настройках.

Качайте тут: http://letitbit.net/download/72415.75922ac4811433a9994d5e4d5659/plg_flyguest.zip.html
и тут: http://vip-file.com/downloadlib/2935694831616502006363-72415.75922ac4811433a9994d5e4d5659/plg_flyguest.zip.html
Те Вы хотите сказать текст на сайте будет, но его не будет видно?)А если зарегусь то - видно, так?
то что постится на фОруме, не вырубается тапОрами
_______________________________________________
Мысли и женщины вместе не приходят М.Ж.
*

12mv

  • Давно я тут
  • 548
  • 20 / 0
  • Гульсина
Re: Плагин "скрытый текст"
« Ответ #4 : 30.08.2013, 19:41:03 »
Опа, нашла, вот он мне нужен под 2.5 версию Joomla, кто может перепилить?
*

12mv

  • Давно я тут
  • 548
  • 20 / 0
  • Гульсина
Re: Плагин "скрытый текст"
« Ответ #5 : 30.08.2013, 19:43:50 »
UPD: У кого он есть, залейте на форум. Бесит что дают ссылку на скачивание и нифига не следят.
*

12mv

  • Давно я тут
  • 548
  • 20 / 0
  • Гульсина
Re: Плагин "скрытый текст"
« Ответ #6 : 07.09.2013, 09:33:14 »
АПД, скиньте пожалуйста плагин, мне нужно отправить сторонним разработчикам для анализа, его возможно будут вшивать в компонент отзывов.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Best Alias - плагин для улучшения seo в Joomla

Автор ageent

Ответов: 50
Просмотров: 25354
Последний ответ 21.01.2016, 18:57:49
от int-sam
Плагин JoomThumbnail. Плагин для увеличения картинок

Автор ageent

Ответов: 148
Просмотров: 71221
Последний ответ 27.08.2015, 13:40:33
от annushka
Плагин автоматической очистки кеша в Joomla! 1.5

Автор Physicist

Ответов: 3
Просмотров: 35844
Последний ответ 05.06.2015, 08:33:23
от Stasweb
Компонент для вывода всех статей, написанных пользователем + модуль и плагин

Автор SmokerMan

Ответов: 46
Просмотров: 25978
Последний ответ 14.09.2013, 17:45:02
от altvvc
Новый JSEOPlugin версии 2.0 – усовершенствованный SEO-плагин для Joomla

Автор enshtein

Ответов: 4
Просмотров: 6143
Последний ответ 21.11.2011, 17:45:15
от karabert