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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Проблема с прелоадером
« : 07.08.2021, 19:27:48 »
Здравствуйте!
На странице, которая долго загружается (из-за выборки для селекта из БД) я создала прелоадер, руководствуясь
https://itchief.ru/javascript/preloader
Но у меня почему-то такой прелоадер  просто мелькает перед окончанием загрузки. Не могу понять причину.
Буду благодарна за совет.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #2 : 07.08.2021, 20:16:13 »
здра.
и опять без ссылки на проблемную страницу...
ясновидцев в этом сезоне не завезли
Вот http://web.nioch.nsc.ru/nioch/razdel-vnutrennij/mytest
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re: Проблема с прелоадером
« Ответ #3 : 07.08.2021, 21:11:58 »
Так ведь долго грузится самая первая страница - на которой и прелоадер прописан. Пока страница не загрузится, то и он не отобразится. Чтоб работало - надо загружать страницу без данных, а форму подгружать аяксом после загрузки страницы (с прелоадером).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Проблема с прелоадером
« Ответ #4 : 07.08.2021, 21:26:07 »
ну да.
т.е. у вас изначально должна открываться пустая страница на которой js-скриптом идет обращение к другой станице, которая собирает форму.
например, создаете пустую статью, в неё вставляете модуль с аяксом, который обращается к
Код
http://web.nioch.nsc.ru/nioch/razdel-vnutrennij/mytest
и после получения данных их выводит и по успешному ответу скрывает прелоадер.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Проблема с прелоадером
« Ответ #5 : 07.08.2021, 21:33:48 »
с такими параметрами передавайте страницу для загрузки и будет получено только содержимое зоны компонента, без меню и всяких футеров
Код
http://web.nioch.nsc.ru/nioch/razdel-vnutrennij/mytest?tmpl=component
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #6 : 07.08.2021, 21:44:11 »
с такими параметрами передавайте страницу для загрузки и будет получено только содержимое зоны компонента, без меню и всяких футеров
Код
http://web.nioch.nsc.ru/nioch/razdel-vnutrennij/mytest?tmpl=component
Спасибо. Теперь мне надо понять, как это запрос сделать.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #8 : 07.08.2021, 22:52:01 »
гуглится по "аякс запрос"
Вот  условно "пустая" страница:
Спойлер
[свернуть]
И вот результат
http://web.nioch.nsc.ru/lokalnye-normativnye-akty-obrazovatelnoj-organizatsii
Сначала появляется прелоадер, потом он "затухает" и через некоторое время появляется нужная страница.
[/quote]
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #9 : 07.08.2021, 22:55:22 »
Так ведь долго грузится самая первая страница - на которой и прелоадер прописан. Пока страница не загрузится, то и он не отобразится. Чтоб работало - надо загружать страницу без данных, а форму подгружать аяксом после загрузки страницы (с прелоадером).

Спасибо Вам.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Проблема с прелоадером
« Ответ #10 : 07.08.2021, 23:11:06 »
просто перенесите код, отвечающий за скрытие прелоадера внутрь условия получения ответа от аякса.
т.е. чтобы скрытие происходило не в момент загрузки текущей страницы, а после получения ответа от аякса.

берет то, что внутри  без самой функции, т.к. она запускается в момент загрузки пустой страницы, а вам это не нужно
Код
window.onload = function () {
}

и переносите в место, где у вас происходит вставка ответа аякса в документ.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #11 : 07.08.2021, 23:30:39 »
просто перенесите код, отвечающий за скрытие прелоадера внутрь условия получения ответа от аякса.
т.е. чтобы скрытие происходило не в момент загрузки текущей страницы, а после получения ответа от аякса.

берет то, что внутри  без самой функции, т.к. она запускается в момент загрузки пустой страницы, а вам это не нужно
Код
window.onload = function () {
}

и переносите в место, где у вас происходит вставка ответа аякса в документ.
Вот так сделала, но результат тот же.
Спойлер
[свернуть]
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #12 : 07.08.2021, 23:33:24 »
Все-таки class loaded у body появляется гораздо раньше, чем происходит загрузка
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Проблема с прелоадером
« Ответ #13 : 07.08.2021, 23:39:40 »
ну так вы сделали безусловный запрос на вставку содержимого.
у вас же нет никакого обработчика на событие загрузки внешнего контента сейчас.
сделайте хотя бы в таком виде
Код
$('#remoteContainer').load('http://web.nioch.nsc.ru/nioch/razdel-vnutrennij/mytest?tmpl=component', function() {
тут код скрытия
});
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Проблема с прелоадером
« Ответ #14 : 07.08.2021, 23:48:03 »
вообще, по хорошему надо именно аякс-запрос использовать, чтобы обработать и ошибки тоже.
иначе в случае сбоя у вас неопределенная ситуация возникает и юзер будет грустно наблюдать вечный прелоадер.
т.е. вам и в момент ошибки надо будет прописывать скрытие прелоадера и показ сообщения, что мол "что-то пошло не так, попробуйте позже"
вот тут пример последний посмотрите.
Код
https://snipp.ru/jquery/ajax-jquery
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #15 : 08.08.2021, 00:11:53 »
Может я ошиблась, следуя вашим предыдущим инструкциям:
<script>
 $(document).ready(function(){

   $('#remoteContainer').load('http://web.nioch.nsc.ru/nioch/razdel-vnutrennij/mytest?tmpl=component', function() {
 
    document.body.classList.add('loaded_hiding');
    window.setTimeout(function () {
    document.body.classList.add('loaded');
    document.body.classList.remove('loaded_hiding');
    }, 500); 
   });
});
</script>
Но сейчас именно безостановочно крутятся шарики.
Конечно, посмотрю.


*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re: Проблема с прелоадером
« Ответ #16 : 08.08.2021, 00:34:41 »
Может я ошиблась
со способом решения проблемы )

Может стоило бы разобраться, почему выборка идет так долго и исправить это? Не придется тогда скрипты прикручивать, в которых вы слегка "плаваете" и вообще результат будет лучше.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Проблема с прелоадером
« Ответ #17 : 08.08.2021, 06:56:09 »
по ходу, в таком варианте не срабатывает скрипт.
так что надо аяксом делать, как и говорилось изначально.
и из полученного результата брать только узел #InitialPrepare, иначе много мусора на странице, включая дубль прелоадера.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #18 : 08.08.2021, 13:20:15 »



по ходу, в таком варианте не срабатывает скрипт.
так что надо аяксом делать, как и говорилось изначально.
и из полученного результата брать только узел #InitialPrepare, иначе много мусора на странице, включая дубль прелоадера.

Добрый день.
Вот что сделала:
Спойлер
[свернуть]
</script> 
Прелоадер как надо покрутился, но данные, которые надо было загрузить, на странице не появились. Ещё и меню стало не кликабельным.

*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Проблема с прелоадером
« Ответ #19 : 08.08.2021, 14:22:39 »
как-то слишком тяжело вам помочь, извините.
предполагается, что вы должны изучать примеры и вникать в то, что делаете.
сейчас ситуация, когда помогающий должен полностью написать рабочий код для вашего сайта.
добейтесь сначала, чтобы выводило данные аякса, потом уже прелоадер прикручивайте в версии без тайминга - начните с простого.
у вас в коде идет попытка вставить некое
data, которое нигде не получено
в примере же
Код
success: function(data)
а у вас в коде - что?
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема с прелоадером
« Ответ #20 : 08.08.2021, 14:50:46 »
У меня вот:
Спойлер
[свернуть]
Заработало. спасибо
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с адаптацией

Автор Leo1986

Ответов: 1
Просмотров: 304
Последний ответ 22.05.2025, 20:30:25
от Leo1986
Проблема с плагином News Show gk5

Автор Evgeniy

Ответов: 4
Просмотров: 669
Последний ответ 27.03.2025, 05:38:57
от R31rus
Проблема со входом в панель администратора Joomla 3.x после обновления

Автор danieeljose

Ответов: 2
Просмотров: 713
Последний ответ 24.03.2025, 20:33:02
от R31rus
Проблема с меню

Автор denis_4

Ответов: 6
Просмотров: 1102
Последний ответ 07.08.2024, 14:00:43
от denis_4
Непонятная проблема с меню

Автор THE KILLERS

Ответов: 2
Просмотров: 6854
Последний ответ 25.07.2024, 16:07:39
от THE KILLERS