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

ottofonbismark

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
  • Делаем сайты и прочие мелочи
Структура директорий
modules/mod_customer/tmpl/default.php
modules/mod_customer/helper.php
modules/mod_customer/mod_customer.php
modules/mod_customer/mod_customer.xml

в файле представления default.php хочу сделать два selecta связанных. Тоесть значение второго поля зависит от выбора первого.
код файла

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<?php
require_once('city.php'); // подключаем список с городами

$action = isset($_REQUEST['action'])? $_REQUEST['action'] : '';

// возвращаем список городов
if ($action == 'getCity')
{
    if (isset($city[$_GET['region']]))
    {
        echo json_encode($city[$_GET['region']]); // возвраащем данные в JSON формате;
    }
    else
    {
        echo json_encode(array('Выберите область'));
    }

    exit;
}

// выводим пришедшие данные
if ($action == 'postResult')
{
    //echo '<pre>' . htmlspecialchars(print_r($_POST, true)). '</pre>';
   echo ''.$_POST['region'].'<br>';
   if ($_POST['city']!='Выберите область')
   {
   print_r( $city[$_POST['region']][$_POST['city']]);
   }
    exit;
}
?>

    <style>
        body {font-family:Verdana; font-size:12px;}
    </style>
    <script type="text/javascript">
    // <![CDATA[
        function loadCity(select)
        {
           
            var citySelect = $('select[name="city"]');
            citySelect.attr('disabled', 'disabled'); // делаем список городов не активным
            alert(citySelect);
            // послыаем AJAX запрос, который вернёт список городов для выбранной области
            $.getJSON('modules/mod_customer/tmpl/default.php' ,
            {
               
                action:'getCity',
                region:select.value
            },
           
            function(cityList){
                       
                citySelect.html(''); // очищаем список городов
               
                // заполняем список городов новыми пришедшими данными
                $.each(cityList, function(i){
                    citySelect.append('<option value="' + i + '">' + this + '</option>');
                });
               
                citySelect.removeAttr('disabled'); // делаем список городов активным
               
            });
        }
    // ]]>
    </script>
    <form action="index.php" method="post">
        <select name="region" onchange="loadCity(this)">
            <option></option>
           
            <?php
            // заполняем список областей
            foreach ($city as $region => $cityList)
            {
                echo '<option value="' . $region . '">' . $region . '</option>' . "\n";
            }
            ?>
           
        </select>
       
        <select name="city" disabled="disabled">
            <option>Выберите область</option>
        </select>

        <input type="hidden" name="action" value="postResult" />
        <input type="submit" value="отправить" />
    </form>
</div>


проблема с  $.getJSON('modules/mod_customer/tmpl/default.php'
функция function(cityList) не исполняется.
Подскажите как сделать. Мне нужно работать только с модулем.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
А вы посмотрите:
У вас в файле default.php в самом верху прописана строчка: defined( '_JEXEC' ) or die( 'Restricted access' );
Разумеется, при прямом обращении к этому файлу константа _JEXEC никем не определена, поэтому die()

К сожалению в Joomla не предусмотрен механизм работы AJAX в модулях, AJAX запросы можно обрабатывать только в компонентах / плагинах.
В случае же с модулем имеется 3 обходных варианта:
1) создать в папке шаблона файл module.php и в нем сделать вывод модуля по id, а к запросу добавлять &tmpl=module&module_id=5 (осторожно, этим мы даем доступ ко всем опубликованым модулям, даже тем которые на сайте не выводятся)
2) очищать в модуле буфер, в который пишется код формируемой html-страницы, записывать в него нужную инфу и отправлять браузеру. Однако этот способ не оптимален, так как до момента отработки модуля отработает еще компонент, плагины и другие модули.
3) создать свою точку входа на сайт, например AJAX.php и обращаться к этому файлу напрямую. Самый простой способ.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

ottofonbismark

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
  • Делаем сайты и прочие мелочи
спасибо за совет. будем пробовать
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Файл ajax.php можно создать в папке модуля, и перенести туда код, отвечающий за вывод массива городов или что там у вас. а в default.php оставить только шаблон модуля, этот файл для этого  и предназначен :)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

ottofonbismark

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
  • Делаем сайты и прочие мелочи
ну тогда сейчас начну. посмотрим что выйдет)))) Я просто думаю, а может таки написать компонент.Что вы посоветуете?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Сами решайте. Если есть время и желание разобраться - делайте компонент. Я только не знаю, можно ли делать компонент без админ части, думаю можно.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как увиличить максимальное количество символов в стандартном модуле (mod_custom)?

Автор genkey

Ответов: 0
Просмотров: 1791
Последний ответ 27.04.2017, 14:41:22
от genkey
Подскажите по совместимости jquery

Автор M60aut

Ответов: 0
Просмотров: 1665
Последний ответ 10.02.2017, 11:05:05
от M60aut
Подскажите - сайт стал в фронтэнде выводить ошибку. Как ее убрать

Автор vovchikku

Ответов: 7
Просмотров: 3405
Последний ответ 30.01.2017, 10:35:49
от vovchikku
Подскажите где можно заказать расширения для Joomla

Автор prad

Ответов: 8
Просмотров: 2752
Последний ответ 15.12.2015, 18:13:32
от voland
Как применить атрибут size для элемента select в модуле simpleform 2?

Автор Loh

Ответов: 5
Просмотров: 2279
Последний ответ 06.06.2015, 13:44:28
от motokraft