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

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
Ребят привет! как отобразить значения формы на php  клиенту без перезагрузки страницы, предполагаю, что при помощи AJAX,js можно сделать.

Т.е нужно полностью код переписать на этих языках, или можно иначе?
« Последнее редактирование: 16.02.2016, 10:00:47 от b2z »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
нет, иначе нельзя, нужен AJAX запрос
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
*

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
Отобразить после отправки формы?

Верно, после нажатия submit , происходит перезагрузка страницы и сброс выбранных параметров, хочется сделать с помощью AJAX т.к позволяет отображать данные без перезагрузки, правда пока не разобрался с запросом.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
сессия может быть даже и лишняя будет. если редиректа нет после отправки формы (ну т.е. скрипт отправляет post сам на себя), то она и не нужна, там и так параметры будут переданные. если же есть редирект, то да, тогда JSession.

если же все таки AJAX - то jQuery используется на сайте? если да, то jQuery.ajax или jQuery.post смотрите. и обратите внимание, что там и серверную часть (php) нужно видоизменить, чтобы возвращала данные например в json упакованном виде.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Цитировать
сессия может быть даже и лишняя будет. если редиректа нет после отправки формы
Тогда это будет кривая форма :)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
их особенно Firefox любит :) как Back нажмешь - так окно сразу закрыть хочется хочется :) среднестатистический юзер фиг поймет что от него хотят и что ему сделать надо...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
сессия может быть даже и лишняя будет. если редиректа нет после отправки формы (ну т.е. скрипт отправляет post сам на себя), то она и не нужна, там и так параметры будут переданные. если же есть редирект, то да, тогда JSession.

если же все таки AJAX - то jQuery используется на сайте? если да, то jQuery.ajax или jQuery.post смотрите. и обратите внимание, что там и серверную часть (php) нужно видоизменить, чтобы возвращала данные например в json упакованном виде.

Верно jQuery подключена к сайту, jQuery.ajax или jQuery.post необходимо условие и обработчик написать, вот здесь и понеслась) видимо в коммерческий раздел мне нужно)
*

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
Вот решение подобной задачи, помогли мне в этом, может кому и пригодится.
В модульном виде уже на сайте выдает ошибку 500 . В чем проблема кроется?  .

Форма html:

Спойлер
[свернуть]
AJAX :
Спойлер
[свернуть]

И php скрипт :

Спойлер
[свернуть]
« Последнее редактирование: 07.02.2016, 18:26:46 от mirstiker »
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
удалите и никому это не показывайте )
*

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
а что не так? ^-^ ведь мои потребности почти решены)
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
а что не так? ^-^ ведь мои потребности почти решены)
а вы если будете программировать, и работать программистом, загляните через пару лет в этот код, не поверите что это могли вы написать )

*

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
а вы если будете программировать, и работать программистом, загляните через пару лет в этот код, не поверите что это могли вы написать )



я так и подумал, что для "гуру" это может и смешно, но я на старте и для меня каждое решение - Сдвиг!)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Помимо всего прочего сразу две уязвимости. XSS + плюс нехитрыми пост запросами почту можно спамом закидать.
Цитировать
удалите и никому это не показывайте )

я думаю что г-кодом то здесь уже никого не удивишь)
интернет-блог: http://websiteprog.ru
*

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
а почему ошибку 500 выдает?
*

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
Т
Так я всё-таки не понял, чем сессии не устроили-то?

http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-sessiyami-v-joomla-jsession.html

Решение использую выше описанное т.к полностью справляется с задачей.
*

mirstiker

  • Захожу иногда
  • 66
  • 0 / 0
Темку можно закрыть, ошибку 500 решил указав url в методе load ()
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Переход по ссылки и запуск функции? [РЕШЕНО]

Автор warlocksp

Ответов: 19
Просмотров: 1385
Последний ответ 21.02.2020, 12:06:24
от warlocksp
[РЕШЕНО] Скроллинг страницы вниз?

Автор warlocksp

Ответов: 3
Просмотров: 897
Последний ответ 02.02.2020, 15:56:55
от warlocksp
Разобраться с небольшим кодом PHP (РЕШЕНО)

Автор Шмайсер

Ответов: 18
Просмотров: 1286
Последний ответ 16.01.2020, 21:47:56
от sivers
На сайте страницы, которые я не создавал

Автор Андрей Купцов

Ответов: 0
Просмотров: 634
Последний ответ 18.12.2019, 10:22:27
от Андрей Купцов
Как изнутри iframe вызвать внешнюю функцию? [РЕШЕНО]

Автор dm-krv

Ответов: 6
Просмотров: 1145
Последний ответ 25.08.2019, 20:41:07
от dm-krv