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

NiiCon

  • Новичок
  • 6
  • 0 / 1
При создании шаблона сталкнулся с такой проблемой - при локализации не переводит языковые константы, а именно, вместо перевода, прописанного в файле ini и sys.ini, пишет название константы.
Шаблон устанавливается без ошибок.
В папке language/ru-RU Joomla файлы ini и sys.ini установленного шаблона присутствуют.
Языковые константы в них прописаны.
В файле templateDetails.xml путь к языковым файлам прописан.
Вроде бы все проверил, и по теории все должно работать, но проблема осталась - вместо перевода константы, пишет саму константу!  *ОХ-Х-Х*
Помогите советом, пожалуйста... В какую сторону копать ?  !
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
А переопределить попробуйте .
В файле templateDetails.xml путь к языковым файлам прописан.
Сразу или после установки ?
*

NiiCon

  • Новичок
  • 6
  • 0 / 1
Путь прописан сразу - до установки шаблона.

Переопределение помогло частично - перевод простой текстовой константы, типа TPL_MYSITE_DESC.
Перевести константы позиций (для панели управления) TPL_MYSITE_POSITION_POSITION-0 так и не получилось.
Пошаманил немного - переопределить константы позиций не вышло :\
Все таки не могу понять почему не работают файлы ini и sys.ini  в папке языков Joomla (без переопределения) :(
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Перевести константы позиций (для панели управления)
В папку /administrator/language/
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Константы позиций для панели управления не переводятся как обычные. Я пробовала когда-то. Там есть какой-то затык. Мне удалось перевести в итоге, но помню, что очень много с этим мучалась.

Сравните как прописаны пути к файлам у Вас и у дефолтного шаблона - например, protostar. Еще посмотрите в какой кодировке у Вас файл создан. Нужна utf-8 без BOM.

Еще покажите как назван языковой файл и как прописываете пути.
« Последнее редактирование: 04.05.2019, 15:51:34 от Taatshi »
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

NiiCon

  • Новичок
  • 6
  • 0 / 1
Пути к файлам прописаны как и в предустановленных шаблонах:

Код
<languages folder="language">
<language tag="ru-RU">ru-RU/ru-Ru.tpl_mysite.ini</language>
<language tag="ru-RU">ru-RU/ru-Ru.tpl_mysite.sys.ini</language>

<language tag="en-GB">en-GB/en-GB.tpl_mysite.ini</language>
<language tag="en-GB">en-GB/en-GB.tpl_mysite.sys.ini</language>
</languages>

Кодировка языковых файлов - utf-8

Вот полностью код файла templateDetails.xml

Код
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.0" type="template" client="site">
<name>mysite</name>
<creationDate></creationDate>
<author></author>
<authorEmail>admin@mysite.ru</authorEmail>
<authorUrl></authorUrl>
<copyright>Copyright (C) 2019 Open Source Matters, Inc. All rights reserved.</copyright>
<license></license>
<version>1.0.0</version>
<description>TPL_MYSITE_XML_DESC</description>

<files>
<folder>css</folder>
<folder>html</folder>
<folder>images</folder>
<folder>language</folder>

<filename>index.html</filename>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
</files>

<positions>
<position>TPL_MYSITE_POSITION_POSITION-0</position>
</positions>

<languages folder="language">
<language tag="ru-RU">ru-RU/ru-Ru.tpl_mysite.ini</language>
<language tag="ru-RU">ru-RU/ru-Ru.tpl_mysite.sys.ini</language>

<language tag="en-GB">en-GB/en-GB.tpl_mysite.ini</language>
<language tag="en-GB">en-GB/en-GB.tpl_mysite.sys.ini</language>
</languages>
</extension>

Хотелось бы все таки понять почему не работают файлы языков "напрямую" без переопределения...

А на счет позиций - ведь это тоже языковые константы, которые прописываются в языковых файлах...так почему они должны работать по другому ?

Включил режим "отладки". В консоли "отладки" пишет, что не загружен языковой файл ini в папки ru-RU

Код
**Не загружен** : JROOT/language/ru-RU/ru-RU.tpl_mysite.ini
**Не загружен** : JROOT/templates/mysite/language/ru-RU/ru-RU.tpl_mysite.ini

 хотя он там присутствует . В чем может быть дело ?
« Последнее редактирование: 05.05.2019, 10:50:56 от NiiCon »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Локализация Joomla 3.x (обсуждение перевода, инструкции и рекомендации)

Автор smart

Ответов: 363
Просмотров: 203234
Последний ответ 16.05.2022, 16:56:45
от SK
Проблема с настройкой Русского языка

Автор verov

Ответов: 3
Просмотров: 3754
Последний ответ 28.02.2020, 06:31:55
от verov
Перевод установленного шаблона на русский язык [для чайников]

Автор Полина

Ответов: 3
Просмотров: 4115
Последний ответ 20.02.2020, 15:57:37
от Полина
Переопределение значений из шаблона. Возможно ли?

Автор master-smeta

Ответов: 5
Просмотров: 3522
Последний ответ 10.01.2020, 19:48:44
от beliyadm
Перевод шаблона на русский язык

Автор Единая Справка Строителя

Ответов: 1
Просмотров: 2628
Последний ответ 19.06.2019, 17:02:33
от SeBun