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

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Подробнее тут. http://joomlaforum.ru/index.php/topic,289324.0.html но там был вопрос, а сюда уже как с проблемой.  :(
В чем может быть проблема такого поведения. Скрипт вроде с кешем не работает.
Это бидаль пича.
*

Arkadiy

  • Moderator
  • 5317
  • 463 / 2
  • Крепитесь, други.
Модуль в режиме аякс-подгрузки формирует HTML так:
Код: php
if($loadAfter == 1 && $type != 'logout'){
    ?>
    <div id="mod_slogin">
        <img src="/modules/mod_slogin/media/ajax-loader.gif"/>
    </div>
    <script type="text/javascript">
        var sloginReturnUri = '<?php echo base64_encode($return);?>';
        SLogin.addListener(window, 'load', function () {
            SLogin.loadModuleAjax();
        });
    </script>
    <?php
}
Функция SLogin.loadModuleAjax();
Код: javascript
    loadModuleAjax:function () {
        SLogin.getUrl('/index.php?option=com_slogin&task=load_module_ajax&return='+sloginReturnUri);

    }

    getUrl:function (url) {
        var xmlhttp = SLogin.getXmlHttp();
        xmlhttp.open("GET", url);
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4) {
                var resp = xmlhttp.responseText;
                SLogin.printProviders(resp);
            }
        }
        xmlhttp.send(null);
    }

    getXmlHttp:function () {
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                return new ActiveXObject("Microsoft.XMLHTTP");
            } catch (ee) {
            }
        }
        if (typeof XMLHttpRequest != 'undefined') {
            return new XMLHttpRequest();
        }
    }

Функция load_module_ajax() которую вызывает скрипт подгрузки модуля:
Код: php
    public function load_module_ajax(){

        //подключаем helper стандартного модуля авторизации, для ридеректа
        require_once JPATH_BASE.'/modules/mod_login/helper.php';

        $user = JFactory::getUser();
        $doc = JFactory::getDocument();
        $input = new JInput;

        $params = new JRegistry;
        $params->loadString(JModuleHelper::getModule('mod_slogin')->params);

        JFactory::getLanguage()->load('mod_slogin');

        $type = modLoginHelper::getType();
        $return = base64_decode($input->getBase64('return', ''));
        $callbackUrl = '&return=' . $return;
        $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));

        $plugins = array();
        JPluginHelper::importPlugin('slogin_auth');
        $dispatcher = JDispatcher::getInstance();
        $dispatcher->trigger('onCreateSloginLink', array(&$plugins, $callbackUrl));

        require JModuleHelper::getLayoutPath('mod_slogin', $params->get('layout', 'default'));
        die;
    }
Я не вижу где тут очистка кеша.
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Так в том то и дело что и я не вижу. В этом и дело. Конечно я не исключаю что возможен конфликт с другими скриптами. Но и они вроде как с кешем не работают. Все что могло чистить кеш (NONumber Cleaner и Little Helper) я удалил. Дело могло быть и просто в пересоздании эскизов, но папка чистится полностью.
Это бидаль пича.
*

Arkadiy

  • Moderator
  • 5317
  • 463 / 2
  • Крепитесь, други.
Попробуйте другую папку использовать для эскизов.
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Из других не удаляет. Тоесть удаление происходит только в папке cache. Хотя это не совсем решает проблему. Не во всех модулях можно выбрать папку.
Может как то затрагивается джумловская очистка кэша?
Это бидаль пича.
*

zikkuratvk

  • Глобальный модератор
  • 4824
  • 346 / 2
  • Обслуживаем проекты - дорого.
Из других не удаляет. Тоесть удаление происходит только в папке cache. Хотя это не совсем решает проблему. Не во всех модулях можно выбрать папку.
Может как то затрагивается джумловская очистка кэша?
Аркадий имеел ввиду перенести папку аватаров из папки кеша.
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Аркадий имеел ввиду перенести папку аватаров из папки кеша.
Мы тут не про аватары. =) Есть два модуля jUNewsUltra и Xpert Captions, и плагин Less Text. И если в jUNewsUltra еще можно указать папку для эскизов то в других нет.
Вечером проверю еще на одном сайте, есть ли там подобная ситуация.
Это бидаль пича.
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Вы не поверите... на другом сайте ситуация абсолютно аналогичная. Хотя и Joomla 3.2 и модули с плагинами почти все другие. (Ну кроме популярных типа Jcomments, Akeeba Backup и тд)
Это бидаль пича.
*

Arkadiy

  • Moderator
  • 5317
  • 463 / 2
  • Крепитесь, други.
/components/com_slogin/controller.php
удалите
Код
        $this->cache->clean();
        $this->cache->remove($this->cache->makeId(), 'page');
из конструктора класса.
« Последнее редактирование: 27.02.2014, 08:35:21 от Arkadiy »
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
/components/com_slogin/controller.php
удалите

Ура. Теперь все отлично. Ничего не удаляется. Спасибо!
Это бидаль пича.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться