Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

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

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 45 Ответов
  • 3712 Просмотров
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Re: Нужно доработать модуль html-код
« Ответ #30 : 17.09.2014, 00:29:59 »
.. в файле edit.php о котором уже писали добавить ...
да блин)) опять хакядра или писать свою админку!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Нужно доработать модуль html-код
« Ответ #31 : 17.09.2014, 00:33:23 »
да блин)) опять хакядра или писать свою админку!
А зачем заново писать скопируйте этот файл в шаблон и переопределите..Можно этот скрипт засунуть и в кастомное поле кстатии тоже, туда можно любой php js скрипт запихнуть. Но это не совсем правильно, может тогда уж действительно лучше плагин написать)
« Последнее редактирование: 17.09.2014, 00:36:53 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Re: Нужно доработать модуль html-код
« Ответ #32 : 17.09.2014, 00:35:50 »
файлы из administrator переопределить в шаблоне модуля? никогда не задумывался ... А можно?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Нужно доработать модуль html-код
« Ответ #33 : 17.09.2014, 00:37:40 »
файлы из administrator переопределить в шаблоне модуля? никогда не задумывался ... А можно?
Конечно можно админка переопределяется также как и фронт. Только не в шаблоне модуля а в шаблоне сайта
интернет-блог: http://websiteprog.ru
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Re: Нужно доработать модуль html-код
« Ответ #34 : 17.09.2014, 00:39:44 »
ну вот..
не пойдет,
модуль должен работать на любом шаблоне
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Нужно доработать модуль html-код
« Ответ #35 : 17.09.2014, 00:41:21 »
А если в модуле прописать чтобы он после установки создавал сам папку в шаблоне и скрипт туда закидывал переопределенный?
« Последнее редактирование: 17.09.2014, 00:44:22 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Re: Нужно доработать модуль html-код
« Ответ #36 : 17.09.2014, 00:45:18 »
Как вы отнесетесь к модулю, который без спросу вам шаблон начнет чейто грузить? ;)
не вариант
Вот поэтому придется писать плагин.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Нужно доработать модуль html-код
« Ответ #37 : 17.09.2014, 00:48:41 »
Как вы отнесетесь к модулю, который без спросу вам шаблон начнет чейто грузить? ;)
Куда лучше чем к модулю который загружает еще и системный плагин, который может нагнуть весь сайт) Да и об удобстве тут речи не идет плагин скорее всего надо будет отдельно ставить и включать в админке. 
интернет-блог: http://websiteprog.ru
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Re: Нужно доработать модуль html-код
« Ответ #38 : 17.09.2014, 00:53:24 »
пока не знаю. буду думать ..
утро вечера мудренее
спасибо за помощь))
*

fsv

  • Живу я здесь
  • 2787
  • 413 / 2
Re: Нужно доработать модуль html-код
« Ответ #39 : 17.09.2014, 03:17:37 »
Несколько раз упоминалось кастомное поле. Почему было проигнорировано?
Цитировать
На самом деле мне нужно в админке заполнять таблицу (форму), с возможностью динамически добавлять нужное количество строк.
Это все можно js-ом сделать, без всяких редакторов. JS-код => кастомное поле конкретного вашего модуля.
Делал для J1.5 в плагине по этому мануалу: http://joomlaportal.ru/blogs/development/2341-dobavlyaem-podderzhku-mnozhestvennogo-vybora-v-jelementlist-dlya-joomla-1-5
Получилось следующее:
1) в xml-плагина (у вас – модуля)
Код
<params addpath="/plugins/system/texttoyandex/elements">
  …
  <param name="my_js" id="my_js" type="myjs" default="" label="" description="" />
  …
</params>
2) доп.файл –
/plugins/texttoyandex /texttoyandex/elements/myjs.php

Код: php
<?php
defined('JPATH_BASE') or die();

/**
 * My JavaScript code in this plugin
 *
 * @package Joomla.Framework
 * @subpackage Parameter
 * @since 1.5
 */

class JElementMyJs extends JElement
{
/**
* Element name
*
* @access protected
* @var string
*/
var $_name = 'MyJs';

function fetchElement($name, $value, &$node, $control_name)
{
$myjs = $this->getJsCode();
return $myjs;
}

private function getJsCode() {
              $javascript = '<script type="text/javascript">
                                   // js-code
                               </script>';
return $javascript;
}
}
Все. В админке плагина делал, что хотел. С аяксом, с двухступенчатой авторизацией и получением токена.
Точно также там было сделано еще 2 кастом.поля - "кнопка" и "php-код".
В тройке не делал. Вот мануал - http://docs.joomla.org/Creating_a_custom_form_field_type
Просто переписать под новые реалии.
Веб-разработка: заказ. Только новая разработка.
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Re: Нужно доработать модуль html-код
« Ответ #40 : 17.09.2014, 12:21:37 »
Предлагаю сделать системный плагин (у меня в подписи ссылка на создание каркаса плагина)
в него вставить код  после установки:
Код: php
public function onContentPrepareForm( $form, $data )
{
if ( empty( $data->id ) && isset( $data->module ) && $data->module === 'mod_custom' ) {
$data->content = '123';
}
}
Istaan, спасибо! Работает))

Теперь буду проверять советы fsv и zomby6888
По результата отпишусь))
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Re: Нужно доработать модуль html-код
« Ответ #41 : 17.09.2014, 23:22:16 »
Вроде продвинулся.

Написал модуль и плагин.
От джумловского API охренел и пошел обходным путем (как и положено тормозу и лентяю).
Просто добавил в плагин вывод файлов CSS и js на бэкэнд

Теперь можно управлять отображением админки и писать обработчики для нужных элементов

Код: php
class plgSystemTest extends JPlugin
{
   ....
  public function onContentPrepareForm($form, $data)
  {
    if (isset($data->module) && $data->module === $this->params->get('mod_type')) {
     
      if (empty($data->id) || !$data->content) {

        $advHtml = ' <table> ... </table> ';
        $data->content =  $advHtml;

      }
     
      $app = JFactory::getApplication();
      $doc = JFactory::getDocument();
      $doc->addStyleSheet('../modules/mod_test/css/mod_test.admin.css');
      $doc->addScript('../modules/mod_test/js/mod_test.admin.js');
     
    }
  }
}

Вот, где-то так .. )) А с фронтом я разберусь

С удовольствием выслушаю замечания
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Нужно доработать модуль html-код
« Ответ #42 : 18.09.2014, 00:21:19 »
Значение для $advHtml может лучше брать из параметра плагина? или параметра модуля mod_test?
*

fsv

  • Живу я здесь
  • 2787
  • 413 / 2
Re: Нужно доработать модуль html-код
« Ответ #43 : 21.09.2014, 01:36:22 »
Написал модуль и плагин.
От джумловского API охренел и пошел обходным путем (как и положено тормозу и лентяю).
Просто добавил в плагин вывод файлов CSS и js на бэкэнд
С удовольствием выслушаю замечания
Плагин для модуля? Только чтобы js и CSS вывести?

Посмотрел для тройки то, что выше для полторашки написал. Примерно следующее получилось.

В манифесте модуля:
Код: html4strict
<fields name="params">
дополнить -
Код: html4strict
<fields name="params"  addfieldpath="/modules/mod_your_module/fields">
добавить 2 поля
Код: html4strict
<field
    name="customjs"
    type="customjs"
    label=""
    description="" />
<field
    name="custombutton"
    type="custombutton"
    label=""
    description="" />
В папке модуля создать папку fields , в нее поместить пустой index.html , дополнительно в ней создать 2 файла:
customjs.php
Спойлер
[свернуть]
custombutton.php
Спойлер
[свернуть]

В результате в админке модуля появится кнопка (CustomButton Form Field class), по клике по которой сработает пользовательский js (CustomJs Form Field class).
Для стилей тип поля и свой файл - по аналогии с js.
Сделал расширением существующих классов полей разделителя и радио, можно и другими, просто что под руку подвернулось.
Веб-разработка: заказ. Только новая разработка.
*

fsv

  • Живу я здесь
  • 2787
  • 413 / 2
Re: Нужно доработать модуль html-код
« Ответ #44 : 30.09.2014, 00:02:13 »
Наткнулся сегодня на статью Создание собственного поля для формы в Joomla 2.5+.
Судя по дате публикации (16.08.2014), к моменту обсуждения в этой теме ей исполнился месяц. А ведь в теме кто-то про нее знал, но скромно молчал.
Веб-разработка: заказ. Только новая разработка.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Нужно доработать модуль html-код
« Ответ #45 : 30.09.2014, 00:37:34 »
Наткнулся сегодня на статью Создание собственного поля для формы в Joomla 2.5+.
Судя по дате публикации (16.08.2014), к моменту обсуждения в этой теме ей исполнился месяц. А ведь в теме кто-то про нее знал, но скромно молчал.
Даже не представляю кто мог о ней знать ;D а вот молчал потому что не совсем понимаю зачем вам нестандартные поля в вашем модуле?!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Доработать плагин импорта полей CFI от joomline

Автор R31rus

Ответов: 1
Просмотров: 743
Последний ответ 21.12.2022, 10:40:11
от R31rus
Модернизировать модуль

Автор kurz

Ответов: 4
Просмотров: 895
Последний ответ 13.09.2022, 15:35:31
от kurz
[SP Page Builder] Модуль ajax contact в модальном окне

Автор TW-WEB

Ответов: 2
Просмотров: 3390
Последний ответ 24.02.2018, 17:34:50
от TW-WEB
Модуль авторизации OpenId

Автор greytm

Ответов: 7
Просмотров: 3515
Последний ответ 04.11.2016, 00:04:31
от KypuHa9_Hora
Как вставить модуль в контент компонента

Автор sava36

Ответов: 21
Просмотров: 18907
Последний ответ 15.06.2016, 09:55:51
от Ilja93