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

foXDEvil

  • Новичок
  • 3
  • 0 / 0
И так почти достиг цели но встал на одной как мне казалось фигне, но избавиться не могу

ХТМЛ код что есть
Код
<ul class="menu"><li class="parent item8"><div class="strelko"></div><a href="#" onclick="$('div.menu1').toggle('slow');">Автомобильные видео регистраторы</a><ul class="podnim"><div class="menu1menu2" style="display:none;"><li class="item9"><a href="/">Камеры переднего вида</a></li><li class="item10"><a href="/">Камеры заднего вида для грузовых</a></li><li class="item11"><a href="/">Камеры заднего вида для легковых</a></li></div></ul></li><li class="item5"><a href="/">Системы GPS навигации</a></li><li class="parent item6"><div class="strelko"></div><a href="#" onclick="$('div.menu2').toggle('slow');">Парковочная с/с</a><ul class="podnim"><div class="menu1menu2" style="display:none;"><li class="item7"><a href="/index.php?option=com_content&view=frontpage&Itemid=7">Мониторы авто</a></li></div></ul></li><li class="item12"><a href="/">Портативные</a></li></ul>

Нужно получить
Код
<ul class="menu"><li class="parent item8"><div class="strelko"></div><a href="#" onclick="$('div.menu1').toggle('slow');">Автомобильные видео регистраторы</a><ul class="podnim"><div class="menu1" style="display:none;"><li class="item9"><a href="/">Камеры переднего вида</a></li><li class="item10"><a href="/">Камеры заднего вида для грузовых</a></li><li class="item11"><a href="/">Камеры заднего вида для легковых</a></li></div></ul></li><li class="item5"><a href="/">Системы GPS навигации</a></li><li class="parent item6"><div class="strelko"></div><a href="#" onclick="$('div.menu2').toggle('slow');">Парковочная с/с</a><ul class="podnim"><div class="menu2" style="display:none;"><li class="item7"><a href="/index.php?option=com_content&view=frontpage&Itemid=7">Мониторы авто</a></li></div></ul></li><li class="item12"><a href="/">Портативные</a></li></ul>

В первом варианте идёт повторение в коде menu1menu2 и опять menu1menu2 а нужно menu1 и menu2 ну и по порядку потому что раскрываний будет много

Функция обработки в /html/modules.php
Код
function modChrome_my_menu($module, &$params, &$attribs)
{
    $menuha = $module->content;
$menuha = str_replace("<span>","",$menuha);
$menuha = str_replace("</span>","",$menuha);
$menuha = str_replace("</a><ul><li class=\"item","</a><ul class=\"podnim\"><li class=\"item",$menuha);
$menuha = str_replace("parent active item1","active_a",$menuha);  
preg_match_all("<a href=\"/onclick_(.*?)_onclick\">",$menuha, $flolin);
$flolin = implode('', $flolin[0])."\n";
$flolin = str_replace("a href=\"/onclick_","",$flolin);
$flolin = str_replace("_onclick\"","",$flolin);
$flolin = str_replace("\n","",$flolin);
$menuha = str_replace("<a href=\"/onclick_","<div class=\"strelko\"></div><a href=\"#\" onclick=\"$('div.",$menuha);
$menuha = str_replace("_onclick","').toggle('slow');",$menuha);
$menuha = str_replace("<ul class=\"podnim\">","<ul class=\"podnim\"><div class=\"$flolin\" style=\"display:none;\">",$menuha);
$menuha = str_replace("</a></li></ul></li>","</a></li></div></ul></li>",$menuha);

if ($module->showtitle != 0) : ?>
<div style="margin-bottom: 3px;"><font class="menu_title"><?php echo $module->title;?></font></div>
<?php endif; ?>
<?php echo $menuha; ?>
<?php
}
?>

ХТМЛ до обработки
Код
<ul class="menu"><li class="parent item8"><a href="/onclick_menu1_onclick"><span>Автомобильные видео регистраторы</span></a><ul><li class="item9"><a href="/"><span>Камеры переднего вида</span></a></li><li class="item10"><a href="/"><span>Камеры заднего вида для грузовых</span></a></li><li class="item11"><a href="/"><span>Камеры заднего вида для легковых</span></a></li></ul></li><li class="item5"><a href="/"><span>Системы GPS навигации</span></a></li><li class="parent item6"><a href="/onclick_menu2_onclick"><span>Парковочная с/с</span></a><ul><li class="item7"><a href="/index.php?option=com_content&view=frontpage&Itemid=7"><span>Мониторы авто</span></a></li></ul></li><li class="item12"><a href="/"><span>Портативные</span></a></li></ul>
« Последнее редактирование: 21.08.2011, 18:02:27 от foXDEvil »
*

foXDEvil

  • Новичок
  • 3
  • 0 / 0
Re: Из обычного меню в раскрывающиеся
« Ответ #1 : 22.08.2011, 15:09:40 »
Вот пример работы скрипта. http://sb.ufahoster.ru С одним выпадающим меню всю шикарна но если делать больше то id  в диве хавает все названия менюшек. Кто может помогите или может кто сможет предложить вариант получше?
*

foXDEvil

  • Новичок
  • 3
  • 0 / 0
Re: Из обычного меню в раскрывающиеся
« Ответ #2 : 26.08.2011, 08:04:25 »
И так маленько переделал и почти всё работает, страдает только регулярка, а с ней я не в ладах
Код
function modChrome_my_menu($module, &$params, &$attribs)
{
    $menuha = $module->content;
$menuha = str_replace("<span>","",$menuha);
$menuha = str_replace("</span>","",$menuha);
$menuha = str_replace("</a><ul><li class=\"item","</a><ul class=\"podnim\"><li class=\"item",$menuha);
$menuha = str_replace("parent active item1","active_a",$menuha); 
$menuha = preg_replace("<a href=\"/onclick_(.*?)_onclick\">(.*?)</a><ul class=\"podnim\">","<div class=\"strelko\"></div><a href=\"#\" onclick=\"$('div.\\1').toggle('slow');>\\2</a><ul class=\"podnim\"><div class=\"\\1\" style=\"display:none;\">",$menuha);
$menuha = str_replace("</a></li></ul></li>","</a></li></div></ul></li>",$menuha);

if ($module->showtitle != 0) : ?>
<div style="margin-bottom: 3px;"><font class="menu_title"><?php echo $module->title;?></font></div>
<?php endif; ?>
<?php echo $menuha; ?>
<?php
}

Вот этот кусок
Код
$menuha = preg_replace("<a href=\"/onclick_(.*?)_onclick\">(.*?)</a><ul class=\"podnim\">","<div class=\"strelko\"></div><a href=\"#\" onclick=\"$('div.\\1').toggle('slow');>\\2</a><ul class=\"podnim\"><div class=\"\\1\" style=\"display:none;\">",$menuha); 
по ходу тут что та не так </a><ul class=\"podnim\">
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ширина меню

Автор alex86r93

Ответов: 5
Просмотров: 6037
Последний ответ 14.06.2018, 05:13:50
от KANEGI
как сделать кнопки меню!

Автор Millenium_3000

Ответов: 10
Просмотров: 12795
Последний ответ 17.08.2017, 17:24:12
от Intrande
Вопрос по добавлению тега в МЕНЮ j 1.5

Автор berTalino

Ответов: 12
Просмотров: 5908
Последний ответ 29.03.2017, 16:20:43
от berTalino
Как увеличить ширину левого меню?

Автор afina2009

Ответов: 8
Просмотров: 3377
Последний ответ 09.04.2016, 23:00:36
от afina2009
Плавный якорь из меню на Jquery

Автор Timerlan

Ответов: 19
Просмотров: 4058
Последний ответ 04.02.2016, 03:54:16
от Fedor Vlasenko