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

Dutch

  • Глобальный модератор
  • 219
  • 88 / 2
  • Проф. разработка больших порталов с нуля!
Для старта необходимо следовать по следующим шагам:

Рассмотрим пример создания Каталога недвижимости, в котором будут такие типы недвижимости как Квартира/комната, Земельный участок/Коттеджи, Коммерческая недвижимость


Создание «Каталога объектов»

1. Создаем каталог объектов(тип объекта) и даем ему имя
2. Заполняем поля: Фраза: Добавить новый объект, Фраза: Редактировать объект, Фраза: Параметры поиска
3. Добавляем почтовые адреса
3. В дополнительных параметрах выставляем галочки для:
    Какие группы пользователей могут добавлять объекты (если нужно для фронта)
    Можно добавлять новые записи на сайте (если нужно для фронта)
4. Выбирает шаблон default

Остальные параметры пока оставляем как есть.

Сохраняем

Создаем глобальные поля

1. Заходим в Справочки и создаем поле с несколькими значениями. Например: Тип аренды а) продажа, б) аренда
2. Заходим в Поля и создаем глобальное поле Тип аренды:
    2.1. Выбираем тип поля - выпадающий список
    2.2. Выбираем наш справочник Тип аренды
    2.3. Далее выбираем нужные поля и выставляем галочки (тут все просто)
    2.4. Выставим галочку для поля Использовать это поле для меню
    2.5. В вкладке Настройка поиска выставляем галочку для Точный поиск (ПОЛЕ='ЗНАЧЕНИЕ') — это даст нам возможность в меню задать для наших параметров выпадающего списка Тип аренды точное отображение. Это значит, что наше поле будет видно в меню и если мы применим к Типу аренды значение аренда, то для пункта меню будут показаны все материалы (квартиры) которые можно снять. Аналогично можно сделать пункт меню и для параметра продажа.

Далее
Нам нужно еще одно глобальное поле - Тип недвижимости
Для него также создаем справочник Тип недвижимости, в котором имеются следующие значения 1) квартира, 2) земельные участки, 3) ком. недвижимость
Также заходим в Поля, создаем новое поле  - Тип недвижимости
 - Выбираем тип поля - выпадающий список и нужный справочник
 - Указываем, что это поле Глобальное и выставляем галочку для поля Использовать это поле для меню
Пункт 2.5 повторяем.


Создаем остальные поля для квартир
Все поля перечислять мы не будем - нам ведь важен сам принцип

Создадим два поля, которые относятся сугубо для объявлений квартир - Этаж и Общая площадь
Итак, создаем поле Этаж
1. Заходим в Поля и создаем поле
2. Выбираем тип поля - Текстовое поле
3. Выставляем нужные галочки
4. Заходим в третью вкладку - Зависимость этого поля от глобальных полей
5. В ней мы видим список глобальных полей. Нам необходимо сделать так, чтобы при выборе пункта в поле Тип недвижимости появлялось это поле. Для этого в списке выбираем Тип недвижимости и ставим галку напротив квартиры. Все теперь мы привязали это поле к глобальному полю Тип недвижимости. Сохраняем его.
Создаем поле Общая площадь
1. тоже самое
2. Тип поля - Число с плавающей точкой
3-5  тоже самое




Более детально тут
« Последнее редактирование: 30.01.2012, 21:42:37 от Fat »
*

tefun

  • Живу я здесь
  • 2540
  • 130 / 1
  • Легче всего обмануть себя
Re: Начало работы с nCatalogues: Старт
« Ответ #1 : 20.01.2012, 20:13:45 »
интересно, будем исследовать. А демо имеется?
то что постится на фОруме, не вырубается тапОрами
_______________________________________________
Мысли и женщины вместе не приходят М.Ж.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

загрузка фото в nCatalogues

Автор Ledywasya

Ответов: 1
Просмотров: 4386
Последний ответ 24.01.2016, 13:14:34
от sivers
ncatalogues и J3

Автор denis174

Ответов: 1
Просмотров: 4110
Последний ответ 29.05.2015, 16:32:33
от sivers
Пожелания, отзывы и конструктивная критика nCatalogues

Автор Fat

Ответов: 29
Просмотров: 9425
Последний ответ 27.06.2014, 22:30:32
от sivers
LiqPay в nCatalogues. Как реализовать?

Автор ezekiel-2517

Ответов: 0
Просмотров: 4608
Последний ответ 06.12.2012, 19:10:35
от ezekiel-2517
Сайт недвижимости при помощи nCatalogues

Автор EvgeniyyB

Ответов: 3
Просмотров: 6047
Последний ответ 14.09.2012, 15:56:59
от studioab