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

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Здравствуйте!
Необходимо внедрить в сайт (Joomla 3.9.25) систему регистрации пользователей с возможностью поэтапного предоставления документов, типа системы регистрации поступающих в ВУЗы. Пока нужно определиться с объёмом работы, понять, есть ли для этой задачи готовые решения типа сторонних компонентов (желательно бесплатных), возможно достаточно встроенных средств (это было бы идеально) типа доп. полей и т.п.. Сориентируйте, пожалуйста, куда копать (на форуме пока подобного решения не видно, только фрагментарно из других задач...)!
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
так доп полей за глаза
индивидуальная помощь: @SetAlexx
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Можете вкратце описать процесс (с доп. полями, думаю, разберусь)?
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Спасибо, но это, вроде, непосредственно про использование доп. полей (с просмотром видео есть корпоративные сложности, но подобная инфа есть), а хотелось бы увидеть примерную схему создания системы регистрации и подачи документов поступающих в ВУЗ.
*

Kentyki

  • Новичок
  • 2
  • 0 / 0
Спасибо, но это, вроде, непосредственно про использование доп. полей (с просмотром видео есть корпоративные сложности, но подобная инфа есть), а хотелось бы увидеть примерную схему создания системы регистрации и подачи документов поступающих в ВУЗ.

Вы разобрались в вопросе, мне тоже интересно?
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Нет, пока не разобрались, но уточнение задания привело к некоторым выводам...
Нам очень желательно воспользоваться штатными средствами Joomla (без сторонних компонентов) из соображений безопасности. Но необходимые функции, типа рейтинговых списков, отсылки результатов анкетирования в архиве на почту, возможность загрузки файлов пользователем, веб-администрирование бестолковыми менеджерами, личный кабинет зарегистрированного, и т.п., в самой CMS, вроде бы, отсутствуют (плюс всё это обязано работать сначала на локальном сервере).
Поэтому, по-прежнему ждём подсказок, как правильно решить эту задачу.
Ещё раз уточню: нам нужно не готовое решение от форума, а подсказки по алгоритму построения этой системы. Готовы разбираться.
« Последнее редактирование: 08.06.2022, 13:56:59 от RomanA »
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
Но необходимые функции, типа рейтинговых списков, отсылки результатов анкетирования в архиве на почту и веб\-администрирование бестолковыми менеджерами, личный кабинет зарегистрированного, в самой CMS, вроде бы, отсутствуют (плюс всё это обязано работать сначала на локальном сервере).
вот эти вопросы вообще не поднимались
а так кабинет на полях вполне работает, так же можно связать с контактами
а все остальное только писать
ну или пробуйте что то типа CommunityBuilder
индивидуальная помощь: @SetAlexx
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Ещё раз уточню: нам нужно не готовое решение от форума, а подсказки по алгоритму построения этой системы. Готовы разбираться.
Все перечисленное штатными средствами сделать не получится. Частично решается доп. полями. Форму регистрации желательно переопределить в шаблоны, и слегка переделать, чтобы к примеру при регистрации, логин формировался автоматически по типу AB78008, это избавит юзера от сочинительства, а доп. полями, можно будет уже и ФИО прописать. Дальше, через доп. поля формы контактов, создать анкету для отправки анкеты с файлами. Но вот модерировать весь этот парк, без разработки собственного решения, нормально не получится. Из сторонних компонентов, с данной целью справится только Fabrik, там можно сформировать свои формы и таблицы, сформировать форму анкеты, создать "админку", для модерирования, и сделать даже учетную систему, с автоматическим присвоением статуса заявлению, и информировании об изменении статуса. Имеется встроенный экспорт/импорт в csv, формирование pdf документов. В общем функционал довольно обширный. Разве что, если Joomla 4, то под нее компонент еще не обновили.
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Да, спасибо за ответ!
Про недостаточность штатных средств, к сожалению, понятно...
А кроме Fabrik не справится ли, например, QuickForm?
Кстати, его уже попробовали (QF-3), но столкнулись с тем, что не работает скрипт добавления полей в форму. Группы создаются, а добавить свои поля - никакой реакции, даже на приложенных рабочих примерах.
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
А кроме Fabrik не справится ли, например, QuickForm?
Все зависит от потребностей, и тут уж сами смотрите, хватит или нет, и какие возможны в будущем изменения. Если ограничиться пересылкой заполненной формы заявления/анкеты - то на мой взгляд вполне. И в отличие от Fabrik, у QuickForm можно создать более "гибкую" форму "калькулятор", с различными вычислениями. В Fabrik это слишком сложно, или слишком неочевидно. Но в QuickForm ни о какой модерации и создании личного кабинета, даже речи не идет. Но можно объединить данные решения, если через QuickForm писать в базу, отправления, а через Fabrik их можно считывать, т.к. он способен подключаться к любой таблице в базе данных и на основе этой таблицы, можно сформировать свое собственное управляющее приложение (но это не всегда красиво, но для выполнения каких-то иных операций в качестве "прослойки" иногда бывает удобно), например я для экспорта в csv информации из одного компонента так делал.
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
так то для сбора много каких форм можно использовать(более нативных и понятных)а вот вывод тут конечно Fabrik рулит
индивидуальная помощь: @SetAlexx
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Пробуем Fabrik...
После решения всех проблем с превышением разрешённого для установки размера файлов, при установке одной из версий сервер лёг :) Но был поднят (IIS).
По поводу другой, CMS выдаёт сообщение: "request entity too large". Никто не сталкивался?
« Последнее редактирование: 10.06.2022, 16:22:19 от RomanA »
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Это означает, что превышен установленный на сервере лимит на размер загружаемого файла.
« Последнее редактирование: 10.06.2022, 19:05:28 от xpank »
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Нет, об ограничениях на загрузку CMS сообщает в самом начале процесса установки, просто не берёт файл и пишет про ограничение. Было 8Мб, сейчас на загрузку поставлено ограничение 256Мб, что с большим запасом. Плюс в php.ini увеличены объёмы памяти и время выполнения. В .htaccess тоже... Больше похоже на ограничения самой CMS или СУБД.
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Так вы писали, что у вас IIS, тогда .htaccess тут никак не повлияет на его конфигурацию. В вашем случае нужно вносить изменения в web.config
https://techcommunity.microsoft.com/t5/iis-support-blog/solution-for-request-entity-too-large-error/ba-p/501134

На счет настроек в самой cms, обычно лимиты зависят от компонента, например штатный медиа менеджер имеет свой лимит который меняется в настройках системы. Но основные лимиты joomla определяет от конфигурации сервера.
« Последнее редактирование: 14.06.2022, 10:09:23 от xpank »
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Ну, .htaccess - просто "до кучи :)
Изменено в web.config на максимальное значение (по данным из ссылки), эффекта нет. Может это дефектный пакет Фабрик всё-таки (скачано отсюда: https://codeload.github.com/Fabrik/fabrik/zip/refs/heads/master)?
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Оф сайт https://fabrikar.com Там есть две версии, одна для версий Joomla до 3.10 и другая после 3.10. Поэтому нужно под свою версию cms ставить. Чтобы скачать возможно потребуется регистрация. Если версия cms не последняя, то нужно качать из архива https://fabrikar.com/download-archive
И эту ошибку выдает до установки? Или в процессе работы компонента?
Если перед установкой, значит точно где-то еще какой-то лимит на сервере упущен. С IIS не работал, потому не подскажу. Но можно загрузить по ftp в папку tmp (или напрямую закинуть, если свой сервер), и запустить установку из каталога. Еще можно распаковать архив, и установить части компонента по отдельности, т.к. основной установочный архив содержит, более мелкие самостоятельные архивы, которые можно устанавливать по отдельности.
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Оф. сайт требует регистрации, а она не проходит - возможно из-за нашего местоположения (ру), пытались ещё на прошлой неделе в разнообразных вариантах. Поэтому и искали альтернативные источники.
Установка теперь начинается без проблем, потому что все ограничения на загрузку файлов были поправлены ещё в пятницу. Сообщение выдаётся именно в процессе установки, но не как ошибка, а, как бы, по результатам установки, на розовой полоске вверху.
установить части компонента по отдельности
а можно ли его просто распаковать в соответствующую папку компонентов?

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

xpank

  • Захожу иногда
  • 448
  • 41 / 0
А вообще, видимо это что-то не то, что готово для установки - при установке из каталога пишет, что отсутствуют установочные файлы.
В tmp нужно кидать распакованным. Я так никогда не ставил, поэтому этого нюанса не знал.
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
В tmp нужно кидать распакованным. Я так никогда не ставил, поэтому этого нюанса не знал.
Пробовал и так и так - одинаково, установочных файлов не найдено.
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Ссылка на гитхаб неправильная, не могу посмотреть, что там за архив, но возможно там чисто исходники без установочных файлов.
С регистрацией на оф сайте, что-то действительно не так, отклоняет email, даже gmail. Но я там был зареган, сейчас попробовал закачку по прямой ссылке, вроде скачивается, версия для Joomla 3.10+ (Если версия ниже, не ставить, только архивную версию!) https://fabrikar.com/index.php?option=com_fabrik&task=plugin.pluginAjax&plugin=fileupload&method=ajax_download&format=raw&element_id=31&formid=3&rowid=3796&repeatcount=0&ajaxIndex=0
« Последнее редактирование: 14.06.2022, 13:24:41 от xpank »
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Спасибо огромное! Скачалось, встало без проблем. +.
Однако, он же платный, вроде? Сейчас нам надо только потестить на локале, потом, в любом случае, будем покупать, если подойдёт.

Моя ссылка на Гитхаб, действительно, не открывалась, но я там был сегодня без неё, через поиск.
« Последнее редактирование: 14.06.2022, 13:51:22 от RomanA »
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
Однако, он же платный, вроде?
Нет, это open source.
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
С регистрацией на оф сайте, что-то действительно не так, отклоняет email, даже gmail.

Не могли бы Вы скинуть ещё ссылки на плагины, хотя бы упомянутые в Вашей инструкции?
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
https://disk.yandex.ru/i/CJDZvxdTk6zVQw
Там документ, это скопированная страница со всеми плагинами и описанием.
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Спасибо! Установились.

Только, видимо, наша 3.9.25 не совсем совместима с версией Фабрик для 3.10 . Пока замечены две проблемы: ошибка 500 вылезает при окончательном сохранении списка (но сохранение, тем не менее, происходит, и после перезагрузки страницы ошибка исчезает), и при сохранении связей (также всё сохраняется, но ошибка непреодолима, только откат назад по истории). Мы решали вопрос по ош.500 в другой теме, оказалось - php виноват. Может и здесь проблема в нём же, только нужно искать ещё более подходящую версию...
« Последнее редактирование: 21.06.2022, 15:51:16 от RomanA »
*

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
Очередной вопрос возник. Может несколько не по теме, но рядом.
После нескольких экспериментов пришли к выводу, что надо бы отдельную БД завести для этого хозяйства. Завели, но подключиться к ней не получается... Рядом с основной базой лежит база для Fabrik. В разделе "Соединения" создаём новое, все настройки копируем с настроек соединения с основной базой, но соединения нет. Возможно, проблема в пароле, но тогда не понятно, какому ранее заданному паролю он должен соответствовать (проверили все)...
И ещё здесь же: не вполне понятна схема взаимодействия этих баз, т.е., все зарегистрированные будут попадать в отдельную указанную нами базу? И вся регистрация осуществляется через формы Фабрик, не привлекая стандартные средства регистрации Joomla?
« Последнее редактирование: 28.06.2022, 15:30:43 от RomanA »
*

xpank

  • Захожу иногда
  • 448
  • 41 / 0
На счет версий, прошлые версии компонента доступны в "архиве" https://fabrikar.com/download-archive регистрация для скачивания не нужна, можно попробовать версию 3.9.2.

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

RomanA

  • Захожу иногда
  • 111
  • 0 / 0
прошлые версии компонента доступны в "архиве"
Спасибо, нашли.

функция подключения к посторонней таблице, нужна в случае использования вместе Joomla каких-либо посторонних web-приложений
Как Вы, возможно, заметили, работа у нас идёт "от случая к случаю" - такова специфика ;) Та же специфика может потребовать возможности переноса полной БД пользователей куда-то ещё, и выдирать потом эти данные из общей БД может оказаться затруднительным. Да и эксперименты показали, что записи в БД плодятся неимоверно, захламляя всё. Поэтому вопрос о создании отдельной БД и взаимосвязи с основной БД остаётся актуальным  *ОХ-Х-Х* Почитать бы где...

Дополнение по версиям: обновлено до Joomla 3.10.10, Fabrik 3.10, PHP версий от 7.2.9 до 8.0 - везде ошибка 500 при 1) сохранении нового соединения с БД и 2) сохранении списка  :o
« Последнее редактирование: 29.06.2022, 11:48:28 от RomanA »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин для регистрации и входа на сайты через Мобильный ID

Автор stepan39

Ответов: 0
Просмотров: 821
Последний ответ 29.01.2022, 18:56:20
от stepan39
Защита от регистрации ботов

Автор Mick_20

Ответов: 12
Просмотров: 1839
Последний ответ 01.11.2021, 14:35:12
от Mick_20
Компонент форма обратной связи или анкета для пользователей сайта

Автор disig

Ответов: 14
Просмотров: 1998
Последний ответ 01.07.2021, 03:35:15
от disig
Экспорт пользователей с заказами

Автор SergeyPro7

Ответов: 6
Просмотров: 655
Последний ответ 07.10.2020, 13:29:46
от draff
Как запретить скачивать документы по ссылкам определённой группе пользователей?

Автор vova630

Ответов: 1
Просмотров: 783
Последний ответ 10.09.2020, 18:09:35
от Cedars