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

polezniy

  • Захожу иногда
  • 442
  • 1 / 0
Всем доброго время суток. Уважаемые знатоки, подскажите как на ваш взгляд правильнее использовать тег, канноникал или ноуиндекс, для страниц где присутствует пагинация?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
на мой взгляд ни то ни то
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

polezniy

  • Захожу иногда
  • 442
  • 1 / 0
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
мой самый любимый вариант - вообще ничего не делать :) http://prntscr.com/lixdsy
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

polezniy

  • Захожу иногда
  • 442
  • 1 / 0
мой самый любимый вариант - вообще ничего не делать :) http://prntscr.com/lixdsy
Встречный вопрос) возможно ли в категории на сайте, сделать так, чтобы пользователь нажал кнопку показать все статьи? Если да, то как можно это реализовать?;)
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
возможно ли в категории на сайте, сделать так, чтобы пользователь нажал кнопку показать все статьи?
Немного не все, но каждую следующую страницу по нажатию покажет
Плагин AJAX Scroll - "бесконечный скроллинг" для Joomla
Создание сайтов, шаблонов, помощь в решении проблем.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Если есть описание категории, то убирайте его со страниц пагинации.
И ещё ответ зависит от того, под какую поисковую систему продвигаетесь. У Google есть rel="next", rel="prev".
*

polezniy

  • Захожу иногда
  • 442
  • 1 / 0
Спасибо, почитаю про это
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пагинация страниц

Автор Anna_N

Ответов: 3
Просмотров: 657
Последний ответ 06.01.2025, 02:45:52
от pavelrer
Пропадают иконки на части страниц, пока не удалишь кеш браузера

Автор minibelka

Ответов: 4
Просмотров: 1645
Последний ответ 25.02.2024, 22:56:50
от cherianov
Как правильно создать дубликаты страниц Joomla? Что бы не ругались поисковики

Автор Dannik

Ответов: 0
Просмотров: 532
Последний ответ 22.02.2023, 08:00:13
от Dannik
Дубли страниц

Автор disig

Ответов: 0
Просмотров: 492
Последний ответ 28.11.2022, 07:39:05
от disig
Ошибки при загрузке страниц сайта

Автор web_signal

Ответов: 3
Просмотров: 709
Последний ответ 08.11.2022, 20:26:13
от marksetter