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

scientificman

  • Захожу иногда
  • 161
  • 6 / 0
Здравствуйте!

Кратко. Небольшая компания, начинающая свой путь в сыроварении. Стоит задача управления рецептурами и регистрации подробностей технологичекого процесса. Необходимо онлайн приложение для работы в любом браузере.

Подробнее. Основа приложения - две таблицы БД примерно одинаковой структуры.
1-я таблица - рецептура.
2-я таблица - ход выполнения.
Структура таблиц похожа, за исключением ряда нюансов (ниже). Перечень основных полей.
1. Уникальный номер эксперимента (или рецептуры).
2. Событие (справочная).
3. Время события.
4. Продолжительность события.
5. Комментарий (текст).
6. Сотрудник (справочник).
7. Оценка этапа (справочник).
8. Для журнала техпроцесса требуется еще ссылка на рецептуру.

Соответственно, еще требуется 3 таблицы-справочника:
- Справочник событий.
- Справочник сотрудников.
- Справочник оценок.

Общий функционал.
- Работа со справочниками (заполнение, исправление, копирование, разрешение/запрещение записи).
- Регистрация рецептур (заполнение, исправление, копирование, разрешение/запрещение рецептуры).
- Регистрация событий техпроцесса.
- Фильтры по таблицам.
- Выгрузка в Excel.

Разделение прав на регистрацию, изменение.

Доработки в перспективе. Информирование работников о необходимости того или иного действия. Общее сопровождение проекта.

Пожелания. Тема немного обсуждалась в разделе поиска компонентов. xpank посоветовал использовать опенсорсное решение - FABRIK. Мы тоже склоняемся к этому. Похоже, что это мощная вещь, обладающая всеми необходимыми возможностями.

Ищем исполнителя проекта.
*

sivers

  • Живу я здесь
  • 2582
  • 358 / 0
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
fabrik хватит для реализации
есть ли какие то требования по визуальной части?
готов обсудить
пишите на почту bovina504@gmail.com
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Думаю можно сделать на любом компоненте событий, например на этом - https://extensionsforjoomla.com/components-modules/vik-appointments-e4j (если я конечно правильно понял ТЗ)
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
там не совсем события
там именно таблички с формами

*

scientificman

  • Захожу иногда
  • 161
  • 6 / 0
Спасибо за быстрые отклики!

Поясняю по возникшим вопросам.
Каков бюджет?

Я выступаю от имени моего друга, который попросил принять участие в решении этой задачи. Попрошу его подключится к обсуждению.

есть ли какие то требования по визуальной части?

Предполагается, что это сайт на Joomla со стндартным шаблоном, допускающим мобильное отображение. Красивости не нужны. Это для внутреннего использования. Меню:
Справочники -> Конкретные справочники,
Перечень рецептур -> Детализация конкретной рецептуры,
Перечень текущих процессов -> Детализация конкретного процесса,
Отчеты -> Выгрузка рецептур, Выгрузка процессов

В каждой таблице нужна возможность фильтрации и упорядочения по полям.

Насчет FABRIK, пока так - https://extensions.joomla.org/extension/fabrik/

Жаль, конечно, но, мы в таком мире живем, что каждый в чем-то виноват! Не думаю, что это навсегда. Разберутся.


Думаю можно сделать на любом компоненте событий, например на этом - https://extensionsforjoomla.com/components-modules/vik-appointments-e4j (если я конечно правильно понял ТЗ)

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

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Жаль, конечно, но, мы в таком мире живем, что каждый в чем-то виноват! Не думаю, что это навсегда. Разберутся.
ну компонент доступен для скачивания на оф сайте
*

scientificman

  • Захожу иногда
  • 161
  • 6 / 0
Да, я его скачивал и знакомился. Мощная штука. К сожалению, у меня нет достаточно времени и профессиональной подготовки в WEB-технологиях, чтобы сделать это самостоятельно и вести дальнейшую поддержку. Я помогу с формированием ТЗ и с коммуникациями на понятном для языке.
*

sivers

  • Живу я здесь
  • 2582
  • 358 / 0
Кастомный компонент под ваши конкретные нужды, с отдельной панелью менеджера (чтоб не через стандартную админку). Ну и ничего лишнего. Так что есть из чего выбрать )
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

scientificman

  • Захожу иногда
  • 161
  • 6 / 0
Кастомный компонент под ваши конкретные нужды, с отдельной панелью менеджера (чтоб не через стандартную админку). Ну и ничего лишнего. Так что есть из чего выбрать )

Спасибо!
Полагаю, что написание кастомного компонента будет дороже, а его дальнейшее развитие потребует больших усилий, возможно рефакторинга. Тогда как использование конструктора позволит удержаться в рамках стандартного набора решений.
*

sivers

  • Живу я здесь
  • 2582
  • 358 / 0
Полагаю, что написание кастомного компонента будет дороже
Конечно.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка при входе в панель управления

Автор FBM

Ответов: 5
Просмотров: 2590
Последний ответ 09.05.2025, 20:38:13
от maximes2004
Поторгуемся онлайн

Автор misteri27

Ответов: 5
Просмотров: 874
Последний ответ 02.05.2017, 09:55:03
от misteri27
Модуль плеера онлайн радио

Автор alenru

Ответов: 1
Просмотров: 1087
Последний ответ 31.01.2017, 23:40:30
от fsv