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

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
как его отключить через FTP?
Переименовать папку плагина
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Добрый день!
Подскажите, пожалуйста, для чайников, как его отключить через FTP?
Спасибо!
Именно через FTP? Я слышал, что корабли в бутылках делают гинекологи на пенсии, вы не из их числа? Ок, научу. Поскольку включение/выключение плагина производится путем установки значения в базе, к которой, как я понимаю, вы не знаете доступ (если что, все данные для доступа прописаны в configuration.php), есть вариант: скачайте SXD. Собственно, у них на сйте все написано, как им пользоваться. Русским языком. Заходите, и выполняете запрос к базе. Если стоит задача отключить именно plg_quickicon_phpversioncheck, то запрос будет примерно такой:
Код
UPDATE `prefix_extensions` SET `enabled` = '0' WHERE `prefix_extensions`.`name` = 'plg_quickicon_phpversioncheck';

Другими словами, все, что вам нужно сделать, это залить папку sxd через ftp на хостинг и выполнить запрос.
« Последнее редактирование: 09.04.2020, 23:33:00 от SeBun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

ustas

  • Новичок
  • 1
  • 0 / 0
У меня тоже была такая проблема. И включение логирования ошибок PHP не помогало.
Отладочной печатью раздебажил, что все ломалось в момент рендеринга модуля mod_quickicon. Дальше набрал в поиске "joomla админка белый экран quickicon" и попал сюда :)

Могу заметить, что у меня не было плагина plg_quickicon_phpversioncheck, а ломалось на plg_quickicon_jcefilebrowser
И отключить плагин можно было через админку, зайдя на страницу плагинов по прямой ссылке (т.к. на этой странице mod_quickicon не рендерится и она работала):
http://<my_cool_site>/administrator/index.php?option=com_plugin
(в поиске искать по подстроке "быстр")
*

Stalker095

  • Новичок
  • 4
  • 0 / 0
Текущая дата при входе в администрацию Joomla, должна соответствовать датам, указанным в файле phpversioncheck.php
Нужно поменять конечную дату в файле phpversioncheck.php подробнее на https://website-making.ru/home/voprosy-i-otvety
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Текущая дата при входе в администрацию Joomla, должна соответствовать датам, указанным в файле phpversioncheck.php
Мне кажется - то Вы что то новое придумали ! ))) - Хотя конечно могу ошибаться но скорее всего что на оборот !
*

Stalker095

  • Новичок
  • 4
  • 0 / 0
Мне кажется - то Вы что то новое придумали ! ))) - Хотя конечно могу ошибаться но скорее всего что на оборот !
Проверьте ... не соответствие даты одна из причин ошибки входа в админку
« Последнее редактирование: 02.12.2020, 12:23:48 от Stalker095 »
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Проверьте ... не соответствие даты одна из причин ошибки входа в админку
Да ! Вы абсолютно правы - Даты там действительно есть ! Но есть одно НО !
Этот метод (функция) называется  getPhpSupport() и она проверяет соответствия поддержки php - версии и безопасности !
Вызывается этот метод из onGetIcons() в том же файле !
И если первый метод (getPhpSupport()) не возвращает значение соответствующие  self::PHP_SUPPORTED - то APP Joomla - должна в админке выкинуть Вам либо warning если Ваша версия  PHP - имеет траблы с безопасностью ли error если Ваша версия Joomla не сможет корректно работать с Вашей версией PHP
Но это всего message Вот вам кусок кода этого метода !!
onGetIcons($context)
[свернуть]
Каким образом - это может прибить Joomla в момент загрузки приложения администратора ?
Это может случится только в том случае когда еще какой то системный плаг от сильно умных и не менее криворуких разробов решил также воспользоваться этим методом для проверки соответствия версии !!
- Прошу прощение за экспрессивность  
*

Svlad

  • Новичок
  • 9
  • 2 / 0
Появился белый экран при входе в админку. Сайт работал нормально.
Включил показ ошибок.
Notice: Undefined variable: recommendedVersion in ..../public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 177
Notice: Undefined variable: recommendedVersionEndOfSupport in ..../public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 178
Fatal error: Call to a member function format() on null in ..../public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 178
Решил проблему изменением даты в файле
ваш-сайт/plugins/quickicon/phpversioncheck/phpversioncheck.php в строке 134. Там должно быть
'7.2' => array(
            'security' => '2019-11-30',
            'eos'      => '2020-11-30'
         ),
Дату изменил на 2021-11-30, Вход в админку возобновился. Дальше можно отключить плагин "Панель иконок - Проверка версии PHP" или phpversioncheck
*

xlenivecx

  • Новичок
  • 6
  • 0 / 0
Появился белый экран при входе в админку. Сайт работал нормально.
Включил показ ошибок.
Notice: Undefined variable: recommendedVersion in ..../public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 177
Notice: Undefined variable: recommendedVersionEndOfSupport in ..../public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 178
Fatal error: Call to a member function format() on null in ..../public_html/plugins/quickicon/phpversioncheck/phpversioncheck.php on line 178
Решил проблему изменением даты в файле
ваш-сайт/plugins/quickicon/phpversioncheck/phpversioncheck.php в строке 134. Там должно быть
'7.2' => array(
            'security' => '2019-11-30',
            'eos'      => '2020-11-30'
         ),
Дату изменил на 2021-11-30, Вход в админку возобновился. Дальше можно отключить плагин "Панель иконок - Проверка версии PHP" или phpversioncheck

Спасибо тебе милый человек, просто и доступно объяснил. Все заработало! А то мучался и вчитывался в решение проблемы, а тут всего то одну циферку поменять нужно было=))
*

Stalker095

  • Новичок
  • 4
  • 0 / 0
Да ! Вы абсолютно правы - Даты там действительно есть ! Но есть одно НО ! Этот метод (функция) называется  getPhpSupport() и она проверяет соответствия поддержки php - версии и безопасности ! Вызывается этот метод из onGetIcons() в том же файле ! И если первый метод (getPhpSupport()) не возвращает значение соответствующие  self::PHP_SUPPORTED - то APP Joomla - должна в админке выкинуть Вам либо warning если Ваша версия  PHP - имеет траблы с безопасностью ли error если Ваша версия Joomla не сможет корректно работать с Вашей версией PHP Но это всего message Вот вам кусок кода этого метода !!
Ну вот...а вы писали я не прав)))
« Последнее редактирование: 04.12.2020, 12:47:06 от Stalker095 »
*

Stalker095

  • Новичок
  • 4
  • 0 / 0
У кого старая версия Joomla и обновлять нет возможности это выход))) По любым вопросам с Joomla обращайтесь https://website-making.ru помогу...
« Последнее редактирование: 04.12.2020, 13:03:16 от Stalker095 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 3 не пускает в админку (просто перезагружается страница) (гуглил, нашёл решение, не помогло)

Автор lifelover2b

Ответов: 11
Просмотров: 3737
Последний ответ 05.06.2025, 04:48:29
от andrey222
Система входа в систему

Автор christopher186

Ответов: 0
Просмотров: 496
Последний ответ 19.08.2023, 06:08:28
от christopher186
403 access Forbidden при попытке обновления

Автор R31rus

Ответов: 1
Просмотров: 596
Последний ответ 12.06.2023, 05:10:04
от R31rus
Доступ в админку без права редактировать контент

Автор NIKOLY

Ответов: 1
Просмотров: 780
Последний ответ 01.06.2023, 14:12:06
от stepan39
Нет входа в админку после установки сайта

Автор PINE

Ответов: 3
Просмотров: 2105
Последний ответ 13.09.2022, 06:47:31
от Юрий777