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

12Gerc

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Пытаюсь делать самодельный шаблон для Joomla 3+(самый простой пример в сети). Всё делаю по учебнику, но при попытке установить пишет - Не найден установочный XML-файл Joomla
Проверял другие шаблоны от Joomla 3+ и фаил templateDetails.xml прописано примерно как и у меня.
Расширения другие устанавливаются, в чём проблема?

templateDetails.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 2.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/2.5/template-install.dtd">
<extension version="3.0" type="template" client="site">
<name>proba</name>
<version>1.0</version>
<creationDate>18/11/2013</creationDate>
<author> I</author>
<authorEmail> </authorEmail>
<authorUrl>www.ru</authorUrl>
<copyright> GNU/GPL</copyright>
<description>simple_template_for_studing</description>

<files>
<folder>css</folder>
<folder>images</folder>
<filename>index.php</filename>
</files>

<positions>
<position>user1</position>
<position>user2</position>
<position>user3</position>
<position>header</position>
<position>left</position>
<position>right</position>
<position>footer</position>
</positions>
</extension>
« Последнее редактирование: 19.11.2013, 12:11:19 от b2z »
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
templateDetails.xml попробуйте вписать в <files>
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Папка шаблона должна называцо proba, т.е. как в xml-ке и с учётом регистра.
*

12Gerc

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
"templateDetails.xml попробуйте вписать в <files>" ни чего не изменило.
"Папка шаблона должна называцо proba, т.е. как в xml-ке и с учётом регистра." Счас положил файлы в папку прописывал по разному, всёравно установочный не видит, может ли в самой Joomla быть проблема?
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Ну запакуйте в зип и прикрепите, на локалке попробую поставить.
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
еще раз, по порядку:
вписали
<files>
..
<filename>templateDetails.xml</filename>
..

Папку с шаблоном назвали proba
Создали архив proba.zip

почистили паку tmp от предыдущей попытки установки (на всякий случай)
*

12Gerc

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Закинул на Яндекс, учусь делать по примеру с сайта _http://likbez-net.ru/razrabotka-shablona-sajta-dlya-joomla-30/155-fajl-templatedetailsxml-urok-3.html

_http://yadi.sk/d/-_Hskot9CsdPS
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Чёт не могу ссылку угадать.
*

12Gerc

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
У меня у одного форум грузит?, с 3й-4й попытки только могу зайти(

"Чёт не могу ссылку угадать." малость не понял вас
http://yadi.sk/d/-_Hskot9CsdPS
https://disk.yandex.ru/public/?hash=K5i3iocXUQverrr4/bUtiwAE0Qd%2BIKfg1t06qIP%2BdjM%3D

fbr
Пробовал по разному, на Яндекс закинул первоначальный вариант без templateDetails.xml
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Закинул на Яндекс, учусь делать по примеру с сайта _http://likbez-net.ru/razrabotka-shablona-sajta-dlya-joomla-30/155-fajl-templatedetailsxml-urok-3.html

_http://yadi.sk/d/-_Hskot9CsdPS
такой пакет никогда не установится
посмотрите нормальный пример
*

12Gerc

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
такой пакет никогда не установится
посмотрите нормальный пример

Ваш пример сразу установился, то есть при создании нового шаблона просто отталкиваться от вашего примера можно?
А почему тот вариант не работает?
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
*

12Gerc

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

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
Скачал. Удалил все что на русском (комментарии так не пишут!) добавил xml-файл, что советовал выше, установил на j3.2 без проблем
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
(комментарии так не пишут!)
вот-вот :)
в XML вообще не должно быть ничего лишнего
*

12Gerc

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Скачал. Удалил все что на русском (комментарии так не пишут!) добавил xml-файл, что советовал выше, установил на j3.2 без проблем
Это самый первый пример закинул(не исправленный), так то комментарии пишу через двойной  //
Я проверял на j3.1.5, в сети вычитал, что сама Joomla может криво работает, счас попробую версию 3.2 установить и посмотреть.
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
.. то комментарии пишу через двойной  //
Я проверял на j3.1.5, в сети вычитал, что сама Joomla может криво работает, счас попробую версию 3.2 установить и посмотреть.
да без разницы! уберите коменты ваапще! так их пишут внутри <?php // ?>
и добавьте templateDetails.xml
*

12Gerc

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Сейчас по разному испробовал и всёж нашёл причину.
Короче проблема была не в просто коментах (с ними тоже устанавливается), а наличии в комментариях дополнительных тегов типа пример ошибки: </files>
// Тегом  <positions> открывается перечень всех позиций для модулей, определенных  шаблоне. Каждая позиция, перечисленная в этой секции, должна находиться внутри тегов <position> и </position>. <positions>

Пс. Комментарии писать больше не буду))

Всем спасибо ещё раз.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[РЕШЕНО] Ошибка при переходе на php7

Автор warlocksp

Ответов: 15
Просмотров: 3034
Последний ответ 11.03.2020, 15:37:50
от warlocksp
Заготовка болванки - BlankTemplate для Joomla 3.x

Автор buyanov

Ответов: 83
Просмотров: 36627
Последний ответ 20.02.2019, 10:27:16
от jem777
Шаблон заготовка masterbootstrap

Автор zxvorobey

Ответов: 1
Просмотров: 3474
Последний ответ 20.02.2018, 07:23:49
от effrit
Шаблон не видит переменные локализации кроме глобальных (Joomla 3.8)

Автор s.elena133

Ответов: 10
Просмотров: 4296
Последний ответ 09.12.2017, 18:27:18
от Ilhom666
Шаблон Shaper Xeon. Не переходит к созданным материалам

Автор wowcheg

Ответов: 1
Просмотров: 3732
Последний ответ 28.06.2017, 13:23:27
от sakhalin4242