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

vasmed

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
В папке /templates/protostar/css создал свою папку для стилей. Положил в нее файл с рабочим стилем (проверил применение стиля из файла style.css в корне папки css). Разрешения выставил максимальные. Но стиль не применяется. Как сделать, чтобы он применился из новой папки?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

vasmed

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
Хорошо, что вы знаете, что другому человеку надо, а что не надо. Но ваш способ я и так знаю, а спрашиваю как раз то, что написал.
*

lexxbry

  • Живу я здесь
  • 2387
  • 68 / 8
Так подключите свой файл из своей папки в индексе
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
*

vasmed

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
Этот ответ кажется ближе к истине. Действительно нашел в файле /templates/protostar/index.php
строки
Код
// Add Stylesheets
$doc->addStyleSheetVersion($this->baseurl . '/templates/' . $this->template . '/css/template.css');
$doc->addStyleSheetVersion($this->baseurl . '/templates/' . $this->template . '/css/style.css');
Где можно добавить свой файл стиля. Не знаю только, а если править этот файл, не повлияет это на обновление Joomla?
И еще вопрос. В другой версии Joomla у нас используется шаблон yoo_unity.
Там в папке /templates/yoo_unity/styles есть разные папки. В том числе и папка из которой берутся файлы theme.css и custom.css. В индексе шаблона они не объявлены. Их как интересно объявили? В админке можно добавить всю папку для подключения CSS стилей или по одному подключить? или надо где-то в файлах подключать?
*

lexxbry

  • Живу я здесь
  • 2387
  • 68 / 8
просто дописываете строку с путем к своему файлу
при обновлении на протостаре скорее всего слетит
поэтому лучше переопределить сам шаблон и уже там править

вносить папкой не думаю что получится
лучше каждый файл стилей отдельно подключать

а так элементарно Яндекс первыим запросами все прекрасно расписывает
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
*

vasmed

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
Каждый человек смотрит со своего места, поэтому и запросы могут получиться разные. Много раз сталкивался, что то, что мне найти в Яндекс не составляет никакого труда, для других - непосильная задача.
Это может еще зависеть от конкретного состояния человека и загруженности. Кстати я по-честному искал до этого эту тему в Яндекс - не нашел. Может не хватило терпения, может знаний.
С переопределениями не разбирался, знаю только что в админке в менеджере шаблонов в шаблонах есть пункт "создать переопределение". Но что он переопределяет не совсем ясно, а описания там нет.
« Последнее редактирование: 26.10.2018, 10:59:57 от vasmed »
*

lexxbry

  • Живу я здесь
  • 2387
  • 68 / 8
То переопределение, про которое вы пишите...это переопределение модулей и компонентов.
Шаблон переопределяется иначе:
Расширения-шаблоны-шаблоны сделать копию...появится папка с вашим названием шаблона: 
Про стили:
   https://yandex.ru/search/touch/?text=подключить%20свой%20файл%20стилей%20joomla&&lr=191   
Можете с первого вывода начать
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
*

vasmed

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
Ну я искал не "как подключить свой файл", а "своя папка для стилей CSS в шаблоне joomla"
Как подключить файл там есть, а как подключить папку - нет.
*

lexxbry

  • Живу я здесь
  • 2387
  • 68 / 8
Ну так по логике вещей
Задать папке переменную
И дальше файлы подключать
SEO-оптимизация,продвижение
Создание и сопровождение сайтов на Joomla
Миграция
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Helix3 сделать несколько рядов не столбцов!

Автор Bowa

Ответов: 6
Просмотров: 3207
Последний ответ 04.03.2023, 20:33:40
от Petrovich
Разобраться с областью компонента в шаблоне

Автор gorbi_U

Ответов: 7
Просмотров: 2046
Последний ответ 04.02.2023, 10:45:14
от sivers
При обновлении плагина helix3 слетает сендвич в мобильном шаблоне

Автор gorbi_U

Ответов: 0
Просмотров: 1381
Последний ответ 25.01.2023, 10:55:44
от gorbi_U
Как сделать вывод ссылок в обратном порядке (com_weblinks)?

Автор Slava77

Ответов: 0
Просмотров: 679
Последний ответ 24.11.2022, 16:42:09
от Slava77
Хлебные крошки: вместо title сделать заголовок

Автор Zelyonkin

Ответов: 2
Просмотров: 682
Последний ответ 09.09.2022, 08:46:10
от Zelyonkin