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

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Не срабатывают карты
« : 22.01.2021, 07:40:00 »
Доброго времени суток форумчане! Подскажите пожалуйста, не могу разобраться почему не срабатывают карты. Вот примеры:  Категория _https://lik-astana.kz/poligrafiya.html - карта работает  Категория второго уровня _https://lik-astana.kz/poligrafiya/plastikovye-karty.html - карта работает   Карточка продукции _https://lik-astana.kz/poligrafiya/plastikovye-karty/diskontnye-karty-detail.html - карта не работает  Карты находятся в нижней части контактов. Подскажите пожалуйста с чем это может связанно.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Не срабатывают карты
« Ответ #1 : 22.01.2021, 18:38:58 »
Какие карты, что значит "не срабатывают"? Я зашел по ссылкам, вообще никаких карт не увидел в подвале.
Нужно больше информации
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #2 : 23.01.2021, 06:23:03 »
Какие карты, что значит "не срабатывают"? Я зашел по ссылкам, вообще никаких карт не увидел в подвале. Нужно больше информации
Вот товар _https://lik-astana.kz/bagetnaya-masterskaya/oformlenie-v-baget/izgotovlenie-ram-dlya-kartin-detail.html в низу 3 карты (на скрине видно). В категориях эти карты работают а вот в товаре не работают.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Не срабатывают карты
« Ответ #3 : 23.01.2021, 16:34:10 »
Для начала я бы отключил сжатие скриптов, чтобы посмотреть нормально что там грузится. Поскольку это явный конфликт JS, консоль выдает что $(...).offset() is undefined, возможно что на этой странице не подключен jquery nonconflict (поскольку большинство кода вызывается через jQuery а не через $

А в сжатом коде разбираться то еще удовольствие

P.S. скорее всего так и есть, запустил простейший клик через нативный объект квери и получил ошибку
Код
$('.item').on('click', function(e) {
alert('123');
});
Запустил через ноконфликт - сработало, значит переписать JS нужно
Код
jQuery('.item').on('click', function(e) {
alert('123');
});
Вот так работает
« Последнее редактирование: 23.01.2021, 16:43:01 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #4 : 23.01.2021, 17:29:45 »
Я так понимаю за открытие отвечает скрипт
Код
<script>
(function ($) {
     var jump = function (e) {
         if (e) {
             e.preventDefault();
             var target = $(this).attr("href");
         } else {
             var target = location.hash;
         }
         $('html,body').animate({
             scrollTop: $(target).offset().top
         }, 1000, function () {
             location.hash = target;
         });
     }
     $('html, body').hide();
     $(document).ready(function () {
         $('a[href^=#contact]').bind("click", jump);
         if (location.hash) {
             setTimeout(function () {
                 $('html, body').scrollTop(0).show()
                 jump();
             }, 0);
         } else {
             $('html, body').show();
         }
     });
 })(jQuery)
</script>
Сжатие отключил
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Не срабатывают карты
« Ответ #5 : 23.01.2021, 17:33:02 »
Заменить $ на jQuery и проверить
« Последнее редактирование: 23.01.2021, 17:47:50 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #6 : 25.01.2021, 06:17:01 »
Заменил
Код
(function (jQuery) {
     var jump = function (e) {
         if (e) {
             e.preventDefault();
             var target = $(this).attr("href");
         } else {
             var target = location.hash;
         }
         jQuery('html,body').animate({
             scrollTop: jQuery (target).offset().top
         }, 1000, function () {
             location.hash = target;
         });
     }
     jQuery('html, body').hide();
     jQuery(document).ready(function () {
         jQuery('a[href^=#contact]').bind("click", jump);
         if (location.hash) {
             setTimeout(function () {
                 jQuery('html, body').scrollTop(0).show()
                 jump();
             }, 0);
         } else {
            jQuery('html, body').show();
         }
     });
 })(jQuery)
Не помогает
*

fbr

  • Завсегдатай
  • 1689
  • 211 / 7
Re: Не срабатывают карты
« Ответ #7 : 25.01.2021, 09:24:22 »
А это?
var target = $(this).attr("href");
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #8 : 25.01.2021, 09:45:36 »
var target = $(this).attr("href");
Все ровно не работает
Код
(function (jQuery) {
         var jump = function (e) {
             var target = location.hash;
             if (e) {
                 e.preventDefault();
                 target = jQuery(this).attr("href");
             };
           if(!jQuery(target).length) return;
             jQuery('html,body').animate({
                 scrollTop: jQuery (target).offset().top
             }, 1000, function () {
                 location.hash = target;
             });
         }
         jQuery('html, body').hide();
         jQuery(document).ready(function () {
             jQuery('a[href^=#contact]').on("click", jump);
             if (location.hash) {
                 setTimeout(function () {
                     jQuery('html, body').scrollTop(0).show()
                     jump();
                 }, 0);
             } else {
                jQuery('html, body').show();
             }
         });
     })(jQuery)
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Не срабатывают карты
« Ответ #9 : 25.01.2021, 10:15:39 »
Код
 jQuery('a[href^=#contact]').each(function() {
     jQuery(this).on("click", jump);
});
« Последнее редактирование: 25.01.2021, 10:29:18 от draff »
*

Stasweb

  • Завсегдатай
  • 1501
  • 24 / 0
Re: Не срабатывают карты
« Ответ #10 : 25.01.2021, 11:33:21 »
Тоже не работает
Код
(function (jQuery) {
         var jump = function (e) {
             var target = location.hash;
             if (e) {
                 e.preventDefault();
                 target = jQuery(this).attr("href");
             };
           if(!jQuery(target).length) return;
             jQuery('html,body').animate({
                 scrollTop: jQuery (target).offset().top
             }, 1000, function () {
                 location.hash = target;
             });
         }
         jQuery('html, body').hide();
         jQuery(document).ready(function () {
            /* jQuery('a[href^=#contact]').on("click", jump);*/
            jQuery('a[href^=#contact]').each(function() {
                jQuery(this).on("click", jump);
                      });
             if (location.hash) {
                 setTimeout(function () {
                     jQuery('html, body').scrollTop(0).show()
                     jump();
                 }, 0);
             } else {
                jQuery('html, body').show();
             }
         });
     })(jQuery)
может дело вообще не в этом скрипте
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Не срабатывают карты
« Ответ #11 : 25.01.2021, 17:14:05 »
Код
scrollTop: jQuery (target).offset().top
Пробел не нужен
Код
scrollTop: jQuery(target).offset().top
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться