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

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Есть вот такой кода, хотелось бы их объединить, нужна помощь
Спойлер
[свернуть]

Если так работало, то так и сделал, но без
Спойлер
[свернуть]
не живет, вот и хотел бы спросить, так что надеюсь подскажете, как сделать это
Спойлер
[свернуть]
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Как лучше объединить разные?
« Ответ #1 : 23.07.2015, 13:15:23 »
получилось пока так соединить
Код
jQuery.noConflict();
function show_wm()
{
jQuery('#rupay').hide();
jQuery('#robox').hide();
jQuery('#wm').slideDown(500);
return false;
};
function show_rupay()
{
jQuery('#wm').hide();
jQuery('#robox').hide();
jQuery('#rupay').slideDown(500);
return false;
};
function show_robox()
{
jQuery('#wm').hide();
jQuery('#rupay').hide();
jQuery('#robox').slideDown(500);
return false;
};

function hide_all()
{
jQuery('#wm').hide();
jQuery('#rupay').hide();
jQuery('#robox').hide();
return false;
}
    jQuery(document).ready(function() {
    jQuery('#amoney').on('click', '.south', function(){
    jQuery('#amoney .south').removeClass('active');
    jQuery(this).addClass('active');
 });
  });
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как лучше объединить разные?
« Ответ #2 : 23.07.2015, 15:33:04 »
зачем там jQuery.noConflict(); ?
интернет-блог: http://websiteprog.ru
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Как лучше объединить разные?
« Ответ #3 : 23.07.2015, 20:21:52 »
зачем там jQuery.noConflict(); ?
Предупреждение конфликтов

я вот не могу добавить
Код
.removeAttr('title');

Есть код когда добавляет class но надо, чтобы еще удалял title.

Код
 jQuery(document).ready(function($) {
    $('#amoney').on('click', '.south', function(){
     $('#amoney .south').removeClass('active').removeAttr('original-title');
     $(this).addClass('active');
 });
  });

В таком варианте убирает но не возвращает обратно
« Последнее редактирование: 23.07.2015, 20:31:06 от leo78 »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как лучше объединить разные?
« Ответ #4 : 23.07.2015, 20:34:51 »
Код: javascript
$ = 'something';
(function($) {
    alert($ === jQuery) //true
})(jQuery);
alert($ === jQuery)     //false
alert($)                //something

Корявая документация чтоли? А у вас вообще не используется знак $. Зато noconflict понатыкано везде.
« Последнее редактирование: 23.07.2015, 20:42:18 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как лучше объединить разные?
« Ответ #5 : 23.07.2015, 21:05:05 »
В таком варианте убирает но не возвращает обратно

Вообще непонятно что вы хотите сделать и почему не используете $(this) в обоих случаях потому что $(this) и $('#amoney .south') у вас один и тот же объект по сути внутри вашего обработчика клика.
интернет-блог: http://websiteprog.ru
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Как лучше объединить разные?
« Ответ #6 : 23.07.2015, 22:59:46 »
я использую то что не конфликтует и работает
Код
$ = 'something';
(function($) {
    alert($ === jQuery) //true
})(jQuery);
alert($ === jQuery)     //false
alert($)                //something
 
- не понимаю к чему это

Так же как
Код
jQuery.noConflict();

Чем это все мешает объединить

От того что я поставлю это
Код
$(this)

скрипт по другому будет работать?

для таких случаев я в скрипте сделал переключатель на "$"

Спойлер
[свернуть]
« Последнее редактирование: 23.07.2015, 23:11:27 от leo78 »
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Как лучше объединить разные?
« Ответ #7 : 23.07.2015, 23:12:46 »
Я хочу улучшить, но для переделки, хотелось бы понимать

У меня три кнопки и одна ссылка с отключением, я сделал, чтобы пропадала кнопка при нажатии(это .removeClass('active')), но мне надо убрать title (.removeAttr('title');).
Ну и за одно усовершенствовать код

Код
<!-- Panel -->
<div id="amoney" class="amoney-module" style="text-align: center;">
<div id="amoney1" class="amoney-mod1" style="text-align: center;">
<span class="panel1"><a class="south" href="javascript:void(0);" style="text-decoration: none;" onclick="hide_all()" title="Скрыть все">Благодарность Автору</a></span>
</div>
<div id="amoney2" class="amoney-payment" style="text-align: center;">
<a id="ammh1" class="south" href="javascript:void(0);" title="WebMoney" onclick="show_wm()"></a>
<a id="ammh2" class="south" href="javascript:void(0);" title="RBKMoney" onclick="show_rupay()"></a>
<a id="ammh8" class="south" href="javascript:void(0);" title="ROBOKASSA" onclick="show_robox()"></a>
</div>
</div>

« Последнее редактирование: 23.07.2015, 23:18:03 от leo78 »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как лучше объединить разные?
« Ответ #8 : 23.07.2015, 23:22:31 »
Как же вы его усовершенствуете если до конца не понимаете сами что вы делаете и зачем вы делаете? Такому на форумах не учат. jQuery.fn.removeAttr('title') метод должен удалить title. Вероятно вызываете вы его не на том объекте

У вас там 3 объекта с классом "south" .В цикле необходимо пройти по каждому объекту и удалить атрибут я так понимаю вам. Хотя jQuery сама все сделает если это коллекция объектов.
« Последнее редактирование: 23.07.2015, 23:37:48 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Как лучше объединить разные?
« Ответ #9 : 23.07.2015, 23:37:29 »
Прикалываетесь "Приступая к работе"  >:(
Спойлер
[свернуть]

 *DRINK*
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как лучше объединить разные?
« Ответ #10 : 23.07.2015, 23:40:59 »
я вам не предлагаю писать плагин jQuery (хотя это не так уж и сложно). я говорю о стандартном методе removeAttr() который уже принадлжеит объекту jQuery.fn  
интернет-блог: http://websiteprog.ru
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Как лучше объединить разные?
« Ответ #11 : 23.07.2015, 23:48:13 »
Стандартный я проделывал
Удаление атрибута
стал бы писать если бы все получилось, проблема в том, что привязать его не смог к "click"


Код
	jQuery.noConflict();
(function($) {
    $(document).ready(function() {
    $('#amoney').on('click', '.south', function(){
     $('#amoney .south').removeClass('active');
     $(this).addClass('active');
 });
});
})(jQuery);
Код
 jQuery(document).ready(function($) {
    $('#amoney').on('click', '.south', function(){
     $('#amoney .south').removeClass('active');
     $(this).addClass('active');
 });
  });
Результат есть хождения к "south" добавляется "active"

Осталось только сделать
Код
$(".newsBlock").removeAttr("title")
« Последнее редактирование: 23.07.2015, 23:54:02 от leo78 »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Как лучше объединить разные?
« Ответ #12 : 24.07.2015, 00:02:41 »
непонимаю что у вас там за HTML и что вы хотите сделать. Потренируйтесь на  jsfiddle
интернет-блог: http://websiteprog.ru
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Как лучше объединить разные?
« Ответ #13 : 24.07.2015, 00:29:19 »
Код
 jQuery(document).ready(function($) {
    $('#amoney').on('click', '.south', function(){
     $('#amoney .south').removeClass('active').removeAttr('original-title');
     $(this).addClass('active');
 });
  });
Как то так должно работать
Код: javascript
(function(f){    
    f('#amoney').on('click', '.south', function () {
        f(this).addClass('active').removeAttr('original-title').siblings().removeClass('active');
    });
}(jQuery));
и можно так писать
Код: javascript
$('#wm, #rupay, #robox').hide();
*

leo78

  • Завсегдатай
  • 1018
  • 62 / 8
  • I left from paradise!?...
Re: Как лучше объединить разные?
« Ответ #14 : 24.07.2015, 00:52:20 »
Fedor Vlasenko
Спасибо, давно уже не общались !
Что-то типа такого:
Код
(function($) {
this.show_wm = function()
{
                        $('#rupay, #robox').hide();
$('#wm').slideDown(500);
    return false;
};
this.show_rupay = function()
{
$('#wm, #robox').hide();
$('#rupay').slideDown(500);
    return false;
};
this.show_robox = function()
{
$('#wm, #rupay').hide();
$('#robox').slideDown(500);
    return false;
};

this.hide_all = function()
{
$('#wm, #rupay, #robox').hide();
return false;
}   
})(jQuery);

Живет только
Код
	jQuery.noConflict();
(function($) {
    $(document).ready(function() {
  $('#amoney').on('click', '.south', function () {
        $(this).addClass('active').removeAttr('title').siblings().removeClass('active');
    });
});
})(jQuery);

Но к сожалению только удаляет title, но не возвращает  title обратно

 *DRINK*

zomby6888
Спасибо все работает

демо
 *DRINK*
« Последнее редактирование: 24.07.2015, 22:00:59 от leo78 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться