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

klara7

  • Захожу иногда
  • 311
  • 4 / 1
Joomla 1.5.18. Ставлю на денвер. При установке компонента пишет ошибку:

Код
Fatal error: Maximum execution time of 30 seconds exceeded in C:\home\test18\www\libraries\joomla\database\database\mysql.php on line 223
Плагин Группа
Image_manager Scatalog Installed
File_manager Scatalog Installed
Rel_manager Scatalog Installed

При этом работают только категории, все остальное:
Код
500 - Произошла ошибка!
DB function failed with error number 1146
Table 'test18.jos_scatalog_products' doesn't exist SQL=SELECT p.*, u.name AS editor FROM jos_scatalog_products p LEFT JOIN jos_users AS u ON u.id=p.checked_out ORDER BY p.created DESC, p.ordering LIMIT 0, 20
Может кто подскажет? >:(
« Последнее редактирование: 05.07.2010, 17:37:24 от 4webspot »
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Медленно у вас денвер работает :)
Нужно в настройках PHP выставить параметр max_execution_time в значение побольше. Например, 60
*

klara7

  • Захожу иногда
  • 311
  • 4 / 1
Извините, я совсем чайный чайник:) Можно ли поподробнее где это?
*

klara7

  • Захожу иногда
  • 311
  • 4 / 1
Спасибо, большое! Нашла, нужно было в php.ini править. Теперь все ок!
*

m777u

  • Новичок
  • 2
  • 0 / 1
Медленно у вас денвер работает :)
Нужно в настройках PHP выставить параметр max_execution_time в значение побольше. Например, 60
А где его настроить?
*

klara7

  • Захожу иногда
  • 311
  • 4 / 1
Кого настроить-то? Находите файл php.ini, в нем значение max_execution_time. Вот в это значение и ставите 60
*

Vitaminka

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
А если не помогает при max_execution_time 90, то что делать?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
А если не помогает при max_execution_time 90, то что делать?

Ставьте 180
*

Vitaminka

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Да, спасибо, помогло. Но очень виснет комп при перезапуске выдал, что нет файла windows root\sistem32\NTOSkrnl.exe. Из-за чего это может быть?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
это значение не влияет на скорость работы. только на продолжительность.
*

Igoritaly

  • Давно я тут
  • 659
  • 2 / 0
Ставьте 180
А вот мне не помогает. Хоть 80, хоть 180 ставь. Все равно ошибка та же
Maximum execution time of 30 seconds exceeded in administrator\components\com_k2\lib\class.upload.php on line 3926
то есть значение of 30 seconds - не меняется

Фотография загружается только в том случае если ее сильно уменьшить

При чем если в категории в настройках изображения изменить размеры на более маленькие, например очень мальенькое с 400 на 100, маленькое с 500 на 200, среднее с 600 на 300, большое с 700 на 400, очень большое с 800 на 500, картинка загружается. Но стоит вернуть старые настройки - опять ошибка.
« Последнее редактирование: 04.12.2013, 09:21:07 от Igoritaly »
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
А вот мне не помогает. Хоть 80, хоть 180 ставь. Все равно ошибка та же
Maximum execution time of 30 seconds exceeded in administrator\components\com_k2\lib\class.upload.php on line 3926
то есть значение of 30 seconds - не меняется

Меняйте хостинг :)
*

makay

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Медленно у вас денвер работает :)
Нужно в настройках PHP выставить параметр max_execution_time в значение побольше. Например, 60
А если такая проблема на open server?
*

fixbob

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Оптимизируйте сайт
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться