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

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Уникальные данные и кэш
« : 10.04.2020, 12:07:49 »
В статье есть php код формирующий каждый раз уникальные данные. Пусть для простоты и наглядности это будет текущее время.
Код
<?php echo date( "H:i:s" ); ?>
Все работает, если кэш отключен. Ок, делаю модуль HTML-код и в его настройках отключаю кэширование. В результате все равно отдаются одни и те же данные.
Перепробовав разные варианты получилось следующее. Модуль не кэшируется, если отключить системный плагин кэша и оставить кэширование только в общих настройках.
Такой вариант не устраивает, поскольку по замерам получается, что основной вклад в скорость дает именно системный плагин, а общие настройки очень несущественно.
Можно каким-нибудь способом не отключая системный плагин и не добавляя url в исключения вывести в любом месте страницы уникальную информацию из php?
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Re: Уникальные данные и кэш
« Ответ #1 : 10.04.2020, 13:25:41 »
Использовать JotCache и добавить модуль в исключения. Либо поискать, может есть какой обход для плагина на нативном уровне.
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Re: Уникальные данные и кэш
« Ответ #2 : 10.04.2020, 18:11:29 »
Спасибо, посмотрю JotCache. В идеале конечно хотелось обойтись без лишних сущностей. Как то ведь Joomla должна авторизовывать пользователей, выдавать приветствие, записывать куки и т.д. Просто может кто-то уже разбирался с этим.
*

dimetrius

  • Захожу иногда
  • 160
  • 8 / 1
Re: Уникальные данные и кэш
« Ответ #3 : 16.04.2020, 10:22:07 »
На сколько я понял, системный плагин заставляет браузер кэшировать страницу у себя локально. В связи с этим вы никак не обновите нужные вам данные.
А вот настройки кэша в настройках, это уже использование серверных ресурсов.
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re: Уникальные данные и кэш
« Ответ #4 : 16.04.2020, 10:45:04 »
Иногда подходит вариант отключения кэша только для авторизованых юзеров. Если их не очень много на сайте и основную нагрузку создают гости и боты.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Re: Уникальные данные и кэш
« Ответ #5 : 20.04.2020, 14:08:51 »
На сколько я понял, системный плагин заставляет браузер кэшировать страницу у себя локально. В связи с этим вы никак не обновите нужные вам данные.
А вот настройки кэша в настройках, это уже использование серверных ресурсов.

Нет, разница в том, что системный плагин при первом вызове страницы сохраняет ее копию со всем содержимым и затем отдает полученный результат при последующих запросах.
В общих настройках идет кэширование каждого элемента страницы отдельно и при последующих обращениях из отдельных кусков кэша формируется страница. Поэтому скорость заметно медленней, но зато можно отдельные элементы не кэшировать.

Иногда подходит вариант отключения кэша только для авторизованых юзеров. Если их не очень много на сайте и основную нагрузку создают гости и боты.

Мне как раз для гостей надо.

Сейчас смотрю JotCache, сильно там все "понакручено", скорость несколько уступает системному плагину, но задачу в принципе решает.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Уникальные данные и кэш
« Ответ #6 : 20.04.2020, 17:56:53 »
На сколько я понял, системный плагин заставляет браузер кэшировать страницу у себя локально.
Системный плагин - это зло. он создает кеш всей страницы целом. То бишь если по простому делает статику. Что не нужно и вызывает кучу проблем.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Уникальные данные и кэш
« Ответ #7 : 20.04.2020, 17:59:57 »
В самому же вопросу топика.
Стандартное кеширование, прописывается у каждого компонента.
То бишь разработчик сам прописывает, какие именно параметры будут "ключом" кеша.
В эту штуку можно подлезть, если под определенный сайт.
Делается это через системный плагин.
Путем переопредления BaseContoller

Примерно вот так.
https://github.com/SeptdirWorkshop/jYProExtra/blob/master/jyproextra.php#L208
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Re: Уникальные данные и кэш
« Ответ #8 : 21.04.2020, 09:43:31 »
Системный плагин - это зло. он создает кеш всей страницы целом. То бишь если по простому делает статику. Что не нужно и вызывает кучу проблем.
Токены и тому подобное не кешируются, значит где-то есть обход
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Замена данных сайта на данные поддомена

Автор rezchik

Ответов: 5
Просмотров: 939
Последний ответ 05.02.2024, 11:45:36
от web1
Изменить данные автора в статьях

Автор pavel33

Ответов: 1
Просмотров: 546
Последний ответ 05.11.2021, 18:17:08
от darkghost
Как передать данные при регистрации в базу?

Автор sesil

Ответов: 4
Просмотров: 640
Последний ответ 29.04.2021, 11:48:43
от sivers
Добавить свои мета-данные в head

Автор Аня

Ответов: 8
Просмотров: 1506
Последний ответ 09.12.2020, 16:24:51
от Аня
Есть ли webhook? нужно отправить данные о заказе после подтверждения в корзине

Автор trancerr

Ответов: 0
Просмотров: 649
Последний ответ 26.08.2020, 12:53:56
от trancerr