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

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Здравствуйте! В общем использую компонент Simple File Lister для вывода файлов из директории в материал, устраивает своей простотой, но столкнулся с такой проблемой при скачивании файла из подкаталога, дублируется имя этого подкаталога в пути, что разумеется приводит к ошибке "404 Page Not Found", если вручную убрать дубль в адресной строке, то файл скачивается. В родительском каталоге файлы скачиваются без проблем.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Есть пример в сети?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Есть пример в сети?
http://bmp.kz/ru/
И еще один момент как скрыть путь "Files in directory (./images/Каталог):"
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Что-то у меня локально он вообще не завелся, этот модуль, лень разбираться.
Попробуйте создать каталоги и файлы на латиннице - может поможет.

По заголовку - в хелпере модуля уберите лишнее из строки примерно 390
Код
$results .=  "<b>" . JText::_('FILES_IN_DIR'). " (" . $sfl_breadcrumb . "):</b>";
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Что-то у меня локально он вообще не завелся, этот модуль, лень разбираться.
Попробуйте создать каталоги и файлы на латиннице - может поможет.

По заголовку - в хелпере модуля уберите лишнее из строки примерно 390
Код
$results .=  "<b>" . JText::_('FILES_IN_DIR'). " (" . $sfl_breadcrumb . "):</b>";
Спасибо за ответ! С латиницей пробовал таже проблема. Хотя бы направление подскажите, в корне модуля есть файл php, думаю где то там формируется путь к файлам, верно?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
В том же хелпере все формируется при AJAX запросе, всякие там $sfl_dirlocation
Получилось локально завести, но при входе в подкаталог у меня не как у вас дублируется подкаталог - теряется вообще корневая папка из пути ))
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
А не, получилось, теперь пути корректно строятся
В настройках модуля параметры:
Default Directory:  ./images/catalog/
Web server base path: http://joomlatest391.ru/images/catalog/

Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
А не, получилось, теперь пути корректно строятся
В настройках модуля параметры:
Default Directory:  ./images/catalog/
Web server base path: http://joomlatest391.ru/images/catalog/


Огромное спасибо! Не думал что решение будет таким простым ) Кстати на 390 строке отключил проверку всего условия путь исчез, осталось додумать как вернуть пользователя в корневую папку, думаю это будет не сложно. Еще раз спасибо, как вас отблагодарить?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
не нужно отключать условия, они не просто так там ))
Просто в строке result убрать константу JText::_('FILES_IN_DIR'), тогда будет просто путь
Код
$results .=  "<b>"(" . $sfl_breadcrumb . "):</b>";

Благодарить никак, максимум в карму приложиться можно, на то это и форум поддержки :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
не нужно отключать условия, они не просто так там ))
Просто в строке result убрать константу JText::_('FILES_IN_DIR'), тогда будет просто путь
Код
$results .=  "<b>"(" . $sfl_breadcrumb . "):</b>";

Благодарить никак, максимум в карму приложиться можно, на то это и форум поддержки :)
Спасибо, понял Вас ) Сделал получилось а чтобы исключить еще и "./images/" что подправить?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
чтобы исключить еще и "./images/" что подправить?
Указать другой каталог для файлов в настройках, к примеру создать папку files или catalog в корне сайта
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Здравствуйте! В этом же элементе Simple File Lister пытаюсь убрать серый фон, но как я понимаю параметр buckground не хранится ни в одном CSS файле, а видимо создается скриптом, параметром element.style. Вопрос как убрать фон? Пробовал через суфикс CSS модуля не получается (
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
И еще один вопрос, я правильно понимаю работая с этим модулем, для каждого материала необходимо дублировать модуль соответственно к каждому материалу?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
И еще один вопрос, я правильно понимаю работая с этим модулем, для каждого материала необходимо дублировать модуль соответственно к каждому материалу?
Если загрузки разные - то да, дублировать модуль и настройки в плане папки где хранятся  файлы

Задний фон - в админке же параметр background-color, поставьте ему значение "transparent" ну или любое нужное
Или в шаблоне модуля modules\mod_simplefilelisterv1.0\tmpl\default.php убрать style вообще и работать правильно через стили

Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Все получилось, спасибо!
*

Deir

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
« Последнее редактирование: 25.02.2021, 12:39:42 от Deir »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

SP polls - syntax error, unexpected end of file... polls.php:63

Автор Beer

Ответов: 17
Просмотров: 1823
Последний ответ 17.11.2022, 12:04:43
от marksetter
Не обновляется с 3.5.1 до 3.6.4 - Ошибка загрузки пакета обновления и The archive file is corrupt

Автор ChaosHead

Ответов: 23
Просмотров: 8384
Последний ответ 13.04.2022, 16:58:49
от bugmenot
Ошибка загрузки изображений Joomla &amp;quot;The file is not a valid image&amp;quot;

Автор stimyl

Ответов: 1
Просмотров: 672
Последний ответ 25.03.2022, 20:39:39
от fbr
Обновление и Could not open archive part file

Автор ReefTank

Ответов: 16
Просмотров: 2419
Последний ответ 17.01.2019, 10:40:47
от ReefTank
Ошибка No configuration file found and no installation code available. Exiting

Автор Nikolay Blinov

Ответов: 14
Просмотров: 20554
Последний ответ 12.09.2017, 08:48:08
от partisan42