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

jm

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Экспериментирую с Joomla на локальном компьютере, всё работает нормально и предсказуемо, но обнаружил одну странную особенность: Joomla выдаёт страницы, которые не должна выдавать, например:

http://site/22/
http://site/37/
http://site/124/

или

http://site/products/25-aaa/
http://site/news/46-bbbb/
http://site/about/241-ccccc/

Причём цифры 22, 37, 124, 25, 46, 241 это номера существующих ID материалов в системе, а буквы aaa, bbbb, ccccc это любые строки (которых может и не быть, значение имеют только цифры). При этом Joomla выдаёт совершенно разные страницы по этим путям, причём может на одну страницу поместить сразу несколько разных материалов.

Модуль Breadcrumbs при этом выдаёт не правильные пути, а пути прямо от корня категорий со множеством лишних ссылок.

Если материала с ID, например, 23 нет в системе, то пути

http://site/23/
http://site/products/23-dddddd/

как им и положено, отсутствуют и система выдаёт правильное сообщение об отсутствующей странице.

От версии Joomla это не зависит, проблема есть как на старых версиях, так и на последней.

Что это такое и как от этого избавиться?
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
*

jm

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Joomla выдаёт лишние страницы
« Ответ #2 : 25.07.2018, 09:36:37 »
Хотелось бы понять причину такого поведения Joomla, ведь это очевидная ошибка, которой не должно быть в системе и разработчики Joomla не могут о ней не знать. Так почему они не исправят эту ошибку?

Или второй вариант: я что-то неправильно делаю, но тогда хотелось бы понять, что именно?
*

wishlight

  • Гуру
  • 5051
  • 314 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Joomla выдаёт лишние страницы
« Ответ #3 : 25.07.2018, 10:50:35 »
Это очевидная привязка id к материалу. Почему так я не вникал.
*

jm

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Re: Joomla выдаёт лишние страницы
« Ответ #5 : 25.07.2018, 11:45:42 »
Благодарю! Так всё-таки это баг, цитата:

«После обновления Joomla до 3.8.1, обнаружил баг»

и судя по цитате это появилось после выхода версии 3.8.1.

Примем это за рабочую версию. У кого-нибудь есть альтернативное мнение по этому поводу?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Joomla выдаёт лишние страницы
« Ответ #6 : 25.07.2018, 12:00:09 »
Я посчитал это багом, а Воланд писал на форуме что это во всех версиях и исправлять никто не будет.
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Re: Joomla выдаёт лишние страницы
« Ответ #7 : 25.07.2018, 20:16:26 »
Так всегда было, все ждали и надеялись на  новый роутер, а он не оправдал ожиданий и не исправил эти дубли.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Joomla выдаёт лишние страницы
« Ответ #8 : 25.07.2018, 20:22:46 »
Так всегда было, все ждали и надеялись на  новый роутер, а он не оправдал ожиданий и не исправил эти дубли.
Какие эти дубли? Если с новым роутером включить, как написано в моей статье , нет бага.
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Re: Joomla выдаёт лишние страницы
« Ответ #9 : 25.07.2018, 22:37:58 »
Ну так это в htaccess дописать надо, без этого правило будет та же фигня, что и раньше.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор lifelover2b

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

Автор azm1n

Ответов: 0
Просмотров: 499
Последний ответ 25.05.2025, 09:26:17
от azm1n
Стоит ли ставить плагин rel="canonical" на Joomla 3

Автор azm1n

Ответов: 2
Просмотров: 666
Последний ответ 09.05.2025, 12:39:18
от azm1n
Вывести поля профиля Joomla

Автор romagromov

Ответов: 11
Просмотров: 1719
Последний ответ 28.04.2025, 10:25:44
от sivers
Максимальная версия PHP для Joomla 3

Автор Dram

Ответов: 8
Просмотров: 2084
Последний ответ 27.03.2025, 10:40:29
от wishlight