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

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Проблема с кешем?
« : 03.02.2017, 12:32:06 »
Привет. Открываю страницу в первый раз все картинки на месте, потом обновляю страницу  картинки в статье пропадают. Использую jotcache. Раньше такого не замечал.
*

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Re: Проблема с кешем?
« Ответ #1 : 03.02.2017, 14:25:48 »
Стандартный кеш работает нормально. :o А можно ли исключить пункт меню из стандартного кеша или материал?
*

Amigo9876

  • Осваиваюсь на форуме
  • 29
  • 2 / 0
Re: Проблема с кешем?
« Ответ #2 : 15.11.2019, 13:00:18 »
Та же проблема. К пути всех картинок подвешивается текущий url из меню.

То есть, у картинки путь: /images/stories/trial-tyumen-15-11-w.png
А при включенном плагине стало - /news/images/stories/trial-tyumen-15-11-w.png
И конечно картинок нет.
*

Any_Color

  • Осваиваюсь на форуме
  • 47
  • 0 / 1
Re: Проблема с кешем?
« Ответ #3 : 15.11.2019, 20:08:22 »
Есть два замечания по поводу этих постов
 первое два человека и ни одной ссылки на сайт
 второе А зачем вы используете этот jotcache ?
 Ну просто Скажите для чего ?
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Re: Проблема с кешем?
« Ответ #4 : 29.11.2019, 00:50:06 »
Хотел сказать вот что.
 картинки лучше всего оптимизировать конечно в редакторе ещё до того как они попали  на сайт!
 Ну уже если они попали Town в коем случае это не плагином бесплатным для Джума  И тем более криво переписанный!
 Да и вообще моя идея по этому по поводу не бейтесь вы так сильно про картинки не так они там ну если кошмарят вообще туда не так Они сильно нагружают очень сильно нагружает загрузку страницы этот загрузка скриптов КСС или неправильный написанные скрипты Вот это всё нагружает///
 ;D
 Ну просто без обид знаете Вы ещё начните оптимизировать сайты отрезая у них закрывающийся теги Вот это будет вообще замечательно
 Кто не знает может не дергаться Я прекрасно об этом знаю что некоторые ты не нуждаются  закрывание.
 примеру такой как
Цитировать
li
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Re: Проблема с кешем?
« Ответ #5 : 29.11.2019, 00:57:10 »
Если вы действительно занимаетесь оптимизации сайта то 1 что вам нужно сделать это убрать выполнение скриптов из общего потока.
 затем перестань загружать вместе со страницей CSS файлы для этого есть критические стили
 третье убрать со всей страницы формы и прочие ненужную чушь
 каждому ресурсному файлу поставить срок кэширования не менее чем год. Это нужно добиться у хостера.   но перед этим нужно каждому файл повесить этой версии или ревизии!
 это маленькая часть которая очень ускорит ваш сайт я ещё А картинках даже не задумывалась!!
 Ну если вы всё это сделаете вы увидите  что сайт будет грузиться так как будто бы были стоите книгу.  нажал на меню Хули ты уже там.
 поскриптум   Почитайте ещё таких того как template
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема из chosen.php генерит js ошибку

Автор platonische

Ответов: 0
Просмотров: 1500
Последний ответ 20.05.2020, 11:11:03
от platonische
Проблема с настройками вывода материалов в 2 колонки

Автор TowRed

Ответов: 31
Просмотров: 15703
Последний ответ 04.10.2019, 06:01:24
от Sveta2889
Проблема после обновление с 2.5.19 на 2.5.28

Автор Осет72

Ответов: 5
Просмотров: 1461
Последний ответ 08.01.2017, 16:20:14
от ProtectYourSite
[Решено] Проблема с выводом даты и часовым поясом

Автор afikus

Ответов: 6
Просмотров: 8666
Последний ответ 28.12.2016, 14:16:50
от newvideo
Проблема с б/д Unknown table engine 'InnoDB

Автор thewu

Ответов: 1
Просмотров: 1695
Последний ответ 10.09.2016, 21:40:33
от Mihanja80