Новости Joomla

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

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

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

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

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

🏆 Открыто голосование за 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 Гость просматривают эту тему.
  • 9 Ответов
  • 2607 Просмотров
*

LyalyaChornaya

  • Захожу иногда
  • 236
  • 15 / 1
Вопрос следующий: Зачем в модуле нужен helper.php?
Хочу попробовать разработать модуль калькулятора для сайта - расчет стоимости стекла. Сразу возник вопрос, не могу найти ответ на него (хэлловорд, как пример, на всех сайтах с обучением ответа, естественно на него не даст). Просмотрела все стандартные модули Joomla, тоже не помогло, они работают с компонентом com_content. Конечно, я понимаю, если модуль берет данные из таблицы компонента, то он нужен, но у меня будет в админке администратор вводит цены на стекло, коэффициент на сложность, цену на отверстия и т.д., а уж с фронтэнда пользователь будет вводить размер и и выбирать нужные данные из формы. Хотелось бы с самого начала сделать по всем правилам, то есть с этим хэлпером, тогда сразу возникает следующий вопрос, что туда вписывать.
Ну написала я обязательное defined( '_JEXEC' ) or die; а вот дальше что?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
helper.php в модуле просто дополнительный файл в который вынесли бизнес логику!

Ну написала я обязательное defined( '_JEXEC' ) or die; а вот дальше что?
А дальше создаете нужный вам класс либо функции и используете их в шаблоне, или точке вызова модуля...
*

LyalyaChornaya

  • Захожу иногда
  • 236
  • 15 / 1
Istaan, вот это
Цитировать
вынесли бизнес логику
для меня пока набор слов. Опытному программисту это, конечно, может, и смешно, но все когда-то начинали. Я у вас на сайте попробовала сделать модуль, в хэлпере этом получилось следующее:
Цитировать
<?php

// No direct access
defined( '_JEXEC' ) or die;

class ModuleTestHelper
{

   /**
    * getData method
    * @param $params
    * @return array
    */
   static function getData( $params )
   {
      $db = JFactory::getDbo();
      return array();
   }

}
$db = JFactory::getDbo(); - это ведь модуль обращается к БД или я ошибаюсь?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Istaan, вот это  для меня пока набор слов. Опытному программисту это, конечно, может, и смешно, но все когда-то начинали.
ну бизнес логика скажем так это вы в отдельный файл выносите работу с базой данный, обработку этих данных, подготовка к выводу что бы не мешать в одном файле с отображением данных, тоесть грубо говоря если вы посмотрите в шаблоны модулей то вы не заметите там запросов в базу например, банально вывод например данных, пару условий, и т.д. все потому что данные подготовленны уже в helper!

Я у вас на сайте попробовала сделать модуль, в хэлпере этом получилось следующее:$db = JFactory::getDbo(); - это ведь модуль обращается к БД или я ошибаюсь?
Ну не обращается к БД, а получает объект класса JDatabaseDriver с помощью которого вы можете выполнять запросы в БД..
сделано у меня это банально для того что бы меньше писанины было ) кому не надо работаать в модуле с базой - удалит.. кому надо допишет функционал )
*

LyalyaChornaya

  • Захожу иногда
  • 236
  • 15 / 1
Ладно, для чего нужен хэлпер, я вроде бы разобралась. Он делает выборку из БД и (или) присваивает значения переменным из манифеста. Что там писать, я так и не поняла, хотя хотелось бы разобраться. Ну написала defined( '_JEXEC' ) or die;, ну написала class modCalcglassHelper и что дальше? Поймите, хочу разобраться, а не тупо переписывать готовый код у других, не понимая смысла. Только очень прошу, если кто-то из программистов мне ответит, помните, что отвечаете человеку, который только пытается научиться и не программист, без всяких страшных слов, ладно?

Теперь вопрос уже конкретно по калькулятору.
mod_calcglass.xml
Код
<field name="otvsm" type="text" label="Цена за 1 отверстие д.15-20мм" default="60"/>
<field name="otvmed" type="text" label="Цена за 1 отверстие д.26-42мм" default="130"/>
<field name="otvlar" type="text" label="Цена за 1 отверстие свыше 42мм" default="200"/>

default.php
Код
<script type="text/javascript">
otvsmall = eval(form.otvsmall.value); //Присваиваем otvsmall значение из поля otvsmall
otvmedium = eval(form.otvmedium.value); //Присваиваем otvmedium значение из поля otvmedium
otvlarge = eval(form.otvlarge.value); //Присваиваем otvlarge значение из поля otvlarge
result = otvsmall*60+otvmedium*130+otvlarge*200;
form.total1.value = result; //выдаем результат
</script>

<form name="form" style="display: block;" class="calc" action="" method="post" onClick="calculate(this.form); return false;">
   <p>Введите кол-во отверстий д.15-20мм: <input type="text" name="otvsmall" value="0"></p>
   <p>Введите кол-во отверстий д.26-42мм: <input type="text" name="otvmedium" value="0"></p>
   <p>Введите кол-во отверстий д.свыше 42мм: <input type="text" name="otvlarge" value="0"></p>
</form>

Как в javascript передать значения 60,130,200 из mod_calcglass.xml? Попытка вставить
Код
<?php $otvsm ?>
вместо чисел не прокатила.
Кстати, есть у меня в форме еще селект, хотела вставить вместо
Код
<option value="1300">
(к примеру)
Код
<option value=<?php $price_t8 ?>>
не прокатило тоже. Я догадываюсь, что я что-то не так делаю, но что не так - даже божественный Google не помог.
*

fsv

  • Живу я здесь
  • 2787
  • 413 / 2
var x = "<?php echo $otvsm ?>";
<option value="<?php echo $price_t8 ?>">
Веб-разработка: заказ. Только новая разработка.
*

LyalyaChornaya

  • Захожу иногда
  • 236
  • 15 / 1
В том-то и дело, что такая запись почему-то не действует
Код
<option value="<?php echo $price_t8; ?>"><?php echo JText::_('MOD_CALCGLASS_PRICET8'); ?></option>
В исходном коде страницы получается
Код
<option value="">Толщина 8мм</option>
То есть JText все нормально, а вот вместо переменной просто нет ничего
И вот эта запись не подействовала
Код
var x = "<?php echo $otvsm ?>";
Более того, когда я просто на странице вывожу
Код
<?php echo $otvsm ?>
, ну чтобы проверить, действует ли вообще такая запись, так вот и нет, не действует, пусто на странице. Я подозреваю, что это колдунство связано с самой Joomla, то ли в хэлпере нужно что-то прописать очень важное (поэтому я так к нему и привязалась), то ли класс какой-то должен быть добавлен, ну типа JText, только что-то другое. Пересмотрела все стандартные модули самой Joomla, они связаны с компонентами и выборка идет из БД. А вот так, чтобы в админке пользователь вносил данные, а на выходе они попадали в javascript, таких нет совсем.
*

LyalyaChornaya

  • Захожу иногда
  • 236
  • 15 / 1
Уважаемый модератор! тему можно закрывать. Как обычно, не дождалась ответа. Перерыла инет, сделала модуль калькулятора с внесением цен из админки на Javascript. Спасибо всем, кто попытался помочь
*

varX

  • Живу я здесь
  • 2467
  • 141 / 5
  • разработка компонентов
Уважаемый модератор! тему можно закрывать. Как обычно, не дождалась ответа. Перерыла инет, сделала модуль калькулятора с внесением цен из админки на Javascript. Спасибо всем, кто попытался помочь

Плохо смотрели
http://joomlaforum.ru/index.php/topic,228015.0.html
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

LyalyaChornaya

  • Захожу иногда
  • 236
  • 15 / 1
Нет, уважаемый lcd25, смотрела я хорошо, более того, я его тестировала. Такой калькулятор моему заказчику не нужен. Мне нужен был такой калькулятор, чтобы пользователь зашел в админку сайта и поменял цены, не залезая в формулы и код, прямо в форме ввода. Я его сделала, о чем теперь говорить-то
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модернизировать модуль

Автор kurz

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

Автор TW-WEB

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

Автор greytm

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

Автор sava36

Ответов: 21
Просмотров: 18913
Последний ответ 15.06.2016, 09:55:51
от Ilja93
Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 7
Просмотров: 3941
Последний ответ 12.04.2016, 19:36:55
от AlekVolsk