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

Serj8463

  • Новичок
  • 1
  • 0 / 0
Как убрать данную ошибку?
« : 04.11.2015, 21:09:05 »
Ошибка на сайте
Код
Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method modIceMegamenuHelper::buildXML() should not be called statically in /home/u845537847/public_html/libraries/joomla/cache/controller/callback.php on line 157

157 строка вот так:
Код
157   $result = call_user_func_array($callback, $Args);

как убрать?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Re: Как убрать данную ошибку?
« Ответ #1 : 05.11.2015, 00:28:44 »
в модуле modIceMegamenu
найдите метод buildXML() и если он идет как то так public function buildXML() то смените на static function buildXML()
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: Как убрать данную ошибку?
« Ответ #2 : 05.11.2015, 14:33:46 »
Подскажите установил меню и вот такая ошибка
Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method VirtueMartModelCategory::getChildCategoryList() should not be called statically in webspace/httpdocs/c.lik-material.kz/libraries/joomla/cache/controller/callback.php on line 157
с таким кодом 157 строке
Код
$result = call_user_func_array($callback, $Args);
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Re: Как убрать данную ошибку?
« Ответ #3 : 05.11.2015, 14:42:54 »
ну четко же написано VirtueMartModelCategory::getChildCategoryList() ищите класс VirtueMartModelCategory и в нем метод getChildCategoryList
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: Как убрать данную ошибку?
« Ответ #4 : 05.11.2015, 14:44:22 »
Отключил ошибки поставил уровень простой чтоб не мешали
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

Stasweb

  • Завсегдатай
  • 1500
  • 24 / 0
Re: Как убрать данную ошибку?
« Ответ #6 : 09.12.2015, 14:11:33 »
в \plugins\xmap\com_virtuemart\com_virtuemart.php есть такой отрезок кода
Код

$vendorId = 1;
$cache    = JFactory::getCache('com_virtuemart','callback');
$children = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $catid );
весь
Спойлер
[свернуть]
« Последнее редактирование: 09.12.2015, 14:17:27 от Stasweb »
*

online0102

  • Новичок
  • 4
  • 0 / 0
Re: Как убрать данную ошибку?
« Ответ #7 : 29.02.2016, 12:35:29 »
Перечитал, ветку но так и не понял как решить проблему, подскажите кто сталкивался где искать причину и как устранять?
Появились вдруг вот такие предупреждения на главной странице сайта:
Strict Standards: Only variables should be assigned by reference in /home/c/cc07953/bartaxi/public_html/modules/mod_ot_virtuemart_category/mod_ot_virtuemart_category.php on line 22
 Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method VirtueMartModelCategory::getChildCategoryList() should not be called statically in /home/c/cc07953/bartaxi/public_html/libraries/joomla/cache/controller/callback.php on line 159
« Последнее редактирование: 29.02.2016, 13:08:21 от online0102 »
*

tanya_nsp

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Re: Как убрать данную ошибку?
« Ответ #8 : 06.02.2020, 18:24:35 »
static
Спасибо, помогло
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать блок в мобильной версии сайта

Автор Grigorii

Ответов: 10
Просмотров: 1531
Последний ответ 10.02.2024, 19:38:34
от darkghost
Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 1257
Последний ответ 08.11.2023, 21:17:26
от GrayAn
Получить ошибку

Автор KevinSimon

Ответов: 0
Просмотров: 549
Последний ответ 22.09.2023, 15:20:21
от KevinSimon
widgetkit slideset - js, как убрать стиль?

Автор all_zer

Ответов: 0
Просмотров: 567
Последний ответ 22.09.2023, 12:02:27
от all_zer
После переноса сайта выдает ошибку

Автор rezchik

Ответов: 5
Просмотров: 934
Последний ответ 14.04.2023, 21:53:12
от rezchik