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

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Установил Joomla на чисто, сейчас верстаю шаблон и что заметил - после того, как я правлю файлы ново-созданного шаблона, изменения на сайте я вижу только спустя пол минуты или даже минуту, а до тех пор сколько не обновляй сайт при помощи CTRL + F5 все равно вижу старую версию.

В настройках движка (Общие настройки -> Система -> Параметры кеша) кеширование отключено. Плагин Система - Кэш тоже выключен.

Не могу понять в чем дело, может подскажет кто?

P. S. Проблема решена, провайдер кешил страницы с кодом ответа 503, в то время как 200 не трогал. Я как раз верстал шаблон офлайн страницы и понять не мог, почему все изменения получаю с запозданием.
« Последнее редактирование: 18.10.2020, 10:51:48 от dm-krv »
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
кеширование на хосте?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
кеширование на хосте?

Точно нет, хостинг на Beget, у них даже нет такой опции)

Да и насчет кеширования я не совсем корректно выразился. Файлы не кешируются, но кешируются системные переменные из которых я беру инфу, то есть например я поменял офлайн сообщение из админки.

В шаблоне это сообщение я вывожу так:
Код
<?php echo $app->get('offline_message'); ?>
Соответственно, после правки сообщения в адмике изменения на сайте я вижу лишь спустя минуту.

В общем, это точно какой-то кеш со стороны Joomla. При этом я проверил, такое же поведение сохраняется и в других шаблонах, допустим в том же protostar, т. е. тут нет такого, что я в своем шаблоне какие-то из антикеш заголовков пропустил.
« Последнее редактирование: 15.10.2020, 16:50:34 от dm-krv »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а это точно не браузер?
в лисе в последнее время приходится принудительно вычищать кэш браузера, чтобы увидеть изменения.
это началось где-то месяца 2 назада или чуть меньше
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
в лисе в последнее время приходится принудительно вычищать кэш браузера, чтобы увидеть изменения.
А если включить опцию - Отключить кеш ?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А если включить опцию - Отключить кеш ?

Точно нет) Я даже пробовал после внесения изменений зайти в режиме инкогнито - такая же проблема. И да, галочку отключить кеш, тоже ставил.
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
И что совсем совсем - Joomla голая была ?
Какой браузер ?  - обратите внимание на расширения браузера и там всякие турбо-режимы ! , vpn ( хотя - Вы говорите что с инкогнито тоже так залетает )....
а какие Вы файлы правите ? - с той галочкой
А если включить опцию - Отключить кеш ?
- то у вас всегда должна быть открытый инструменты разработчика пусть даже в отдельном окне и свернутые в трей!
Что именно Вы правите -когда видите изменения спустя минуту ?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
тогда похоже на прокси-кэширование.
где-нить на шлюзе

На стороне хостинга нет никакого кеширования, если просто создать рандомный php там все норм. Проблема именно со стороны Joomla.
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
UPD ^ Есть плагин такой Joomla -system кеш - отключите его !
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
И что совсем совсем - Joomla голая была ?
Какой браузер ?  - обратите внимание на расширения браузера и там всякие турбо-режимы ! , vpn ( хотя - Вы говорите что с инкогнито тоже так залетает )....
а какие Вы файлы правите ? - с той галочкой  - то у вас всегда должна быть открытый инструменты разработчика пусть даже в отдельном окне и свернутые в трей!
Что именно Вы правите -когда видите изменения спустя минуту ?

Joomla реально голая. Браузер Chrome, турбо режимов и VPN нет, сам сайт смотрю по https, провайдер закешить тут тоже ничего не может. Консоль всегда открыта, со стилями работаю все же. Например, поменял я название сайта и изменения я увижу только спустя пол минуты. И это железобетонно не браузерный кеш.

Попробуйте кто-нибудь у себя, поменяйте название сайта на любое другое. Ну там добавьте в начале лишнюю букву например и зайдите на сайт, с отключенным кешом. Увидите, что изменения не сразу отобразятся.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
UPD ^ Есть плагин такой Joomla -system кеш - отключите его !

Конечно же он отключен.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Ок !
Меняйте название и смотрите в /configuration.php
вот эта переменная поменяла значение ?
public $sitename = 'zzzxxxcccc';
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
А что то есть в  этих директориях ? :
/cache
/administrator/cache
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Ок !
Меняйте название и смотрите в /configuration.php
вот эта переменная поменяла значение ?
public $sitename = 'zzzxxxcccc';

Да, конфиги изменяются сразу и мгновенно, а вот на сайте изменения вижу лишь спустя пол минуту. Если конфиг меняю напрямую, аналогично.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А что то есть в  этих директориях ? :
/cache
/administrator/cache

Ничего, кроме пустого index.html
*

sivers

  • Живу я здесь
  • 2582
  • 358 / 0
Админка - Инфа о системе - Инфа о PHP
поиском поищите "opcache" и еще раз удостоверьтесь, что оно отключено.
при включенном симптомы именно такие, как описываете.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Админка - Инфа о системе - Инфа о PHP
поиском поищите "opcache" и еще раз удостоверьтесь, что оно отключено.
при включенном симптомы именно такие, как описываете.
Это именно на уровне хоста
Как ранее и сказал
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Админка - Инфа о системе - Инфа о PHP
поиском поищите "opcache" и еще раз удостоверьтесь, что оно отключено.
при включенном симптомы именно такие, как описываете.

Вот что вижу:
=>

Это то есть у меня включен кеш на уровне директив php? Или я не так понимаю что-то?
*

sivers

  • Живу я здесь
  • 2582
  • 358 / 0
Это то есть у меня включен кеш на уровне директив php? Или я не так понимаю что-то?
Да, похоже, что включен. У меня параметр opcache.enable в положении Off.

Отключить можно в файле php.ini параметром opcache.enable=0 (в разделе [opcache]), либо (как на моем сервере) в /etc/php/.../мойдомен.conf параметром
php_admin_value[opcache.enable] = Off
и перезапустить пхп.

Ну или хостера попросить.
« Последнее редактирование: 16.10.2020, 08:46:30 от sivers »
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Да, похоже, что включен. У меня параметр opcache.enable в положении Off.

Отключить можно в файле php.ini параметром opcache.enable=0 (в разделе [opcache]), либо (как на моем сервере) в /etc/php/.../мойдомен.conf параметром
php_admin_value[opcache.enable] = Off
и перезапустить PHP.

Ну или хостера попросить.

OPcache отключил, но мне это не помогло. При этом, от непонимания происходящего, попробовал сайт перенести на localhost и вот уж чудо, там проблем с кешированием нет - все изменения в конфигах отображаются сразу. Сейчас вот общаюсь с тех. поддержкой Beget, может они смогут хоть что-то нарыть.
*

sivers

  • Живу я здесь
  • 2582
  • 358 / 0
OPcache отключил, но мне это не помогло
Там может еще какое-то стоять. Их 2 или 3 вида популярных (которые сейчас много где тыкают). Упомянутый opcache, еще часто встречается memcache и что-то еще вроде было.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

khan-alex

  • Давно я тут
  • 649
  • 30 / 1
... провайдер закешить тут тоже ничего не может.
Почему же не может? Перевозил тут одному клиенту сайт от одного хостера другому, поменял ns сервера у регистратора, показал новый сайт у нового хостера, клиент приходит домой у него открывается старый сайт. Ответ из техподдержки хостинга: мы не можем контролировать и не знаем сколько запланировал каждый провайдер на кэш.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Да у Бегета много фишек по хостингу, то почту отключат, то POST
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Почему же не может? Перевозил тут одному клиенту сайт от одного хостера другому, поменял ns сервера у регистратора, показал новый сайт у нового хостера, клиент приходит домой у него открывается старый сайт. Ответ из техподдержки хостинга: мы не можем контролировать и не знаем сколько запланировал каждый провайдер на кэш.

Если провайдер будет кешить сайт, разве они они должны будут сначала мне подсунуть свой SSL сертификат?

P. S. Попробовал включить VPN и затестить все через него - проблема сохраняется, а значит точно не провайдер.
« Последнее редактирование: 16.10.2020, 16:28:27 от dm-krv »
*

sivers

  • Живу я здесь
  • 2582
  • 358 / 0
Если провайдер будет кешить сайт, разве они они должны будут сначала мне подсунуть свой SSL сертификат?
Тут речь шла про кэш DNS - связке домена с IP-адресом сайта.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

khan-alex

  • Давно я тут
  • 649
  • 30 / 1
Тут речь шла про кэш DNS - связке домена с IP-адресом сайта.
Ну в общем ДА!
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Тут речь шла про кэш DNS - связке домена с IP-адресом сайта.

Тоже мимо, у меня стоят DNS серверы Google, у провайдера адреса сайтов не запрашваются. Я на днях отпишусь, что нарыл, пока еще общаюсь с Beget.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Вывод значений из custom fields материала в модуле по имени поля

Автор goga_pgasovav

Ответов: 3
Просмотров: 968
Последний ответ 30.12.2024, 13:22:11
от goga_pgasovav
[Решено] Получить category description image в index.php шаблона

Автор goga_pgasovav

Ответов: 6
Просмотров: 1009
Последний ответ 12.07.2024, 17:06:14
от goga_pgasovav
[Решено] Перестали работать переходы по меню сайта

Автор AlexP750

Ответов: 12
Просмотров: 1622
Последний ответ 06.02.2024, 12:42:26
от AlexP750
[Решено] Ссылка на домен и текущий шаблон в блоге категории

Автор goga_pgasovav

Ответов: 2
Просмотров: 723
Последний ответ 06.03.2023, 16:30:23
от goga_pgasovav
[Решено] Не добавляется CSS-класс страницы

Автор Strelok760

Ответов: 16
Просмотров: 1692
Последний ответ 02.03.2023, 16:14:47
от Танита Сар