Новости Joomla

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями 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 Гость просматривают эту тему.
  • 12 Ответов
  • 6644 Просмотров
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
День добрый.
Использую mod_adsmanager_menu для вывода меню объявлений.
Столкнулся с проблемой - как выделить активный пункт меню и чтобы выделение сохранялось при переходе по пунктам постраничной навигации?
Заранее спасибо.
*

asdf27

  • Захожу иногда
  • 120
  • 7 / 0
Re: Выделить активный пункт меню
« Ответ #1 : 27.02.2012, 17:17:12 »
Opera - правой кнопкой на активный элемент - проинспектировать элемент. У меня обычный модуль меню, опишу на его примере:

Имеем код
Код
<a href="/" class="mainlevel" id="active_menu">Лазаревское 2012</a>

Если бы это был код вашего модуля, то в CSS модуля добавил бы следующие строки:

Код
#active_menu a.mainlevel {font-weight:bold;}

Может синтаксис неправильно написал, пользую CSS с яндексом, но направление верное.
*

asdf27

  • Захожу иногда
  • 120
  • 7 / 0
Re: Выделить активный пункт меню
« Ответ #2 : 27.02.2012, 17:18:30 »
За небольшую услугу (не деньги) с вашей стороны, помогу с кодом.
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
Re: Выделить активный пункт меню
« Ответ #3 : 27.02.2012, 18:39:51 »
что за услуга?
*

asdf27

  • Захожу иногда
  • 120
  • 7 / 0
Re: Выделить активный пункт меню
« Ответ #4 : 27.02.2012, 18:56:09 »
Туристический сайт делаю для себя на перспективу, стал лениться контент писать :) Если вы отдыхали где-нибудь на Черном море, хотелось бы ваш отзыв на сайт запихнуть. Буквально, 1500 букав с пробелами :) А можно и без отзыва вовсе обойтись, как совесть позволит. Прикрепите модуль, как раз на одном из сайтов у меня есть ads, там посмотрю.
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
Re: Выделить активный пункт меню
« Ответ #5 : 27.02.2012, 19:18:53 »
Отзыв втиснуть наверное смогу.. раньше не наполнял..
Вот код из FireBuga
Код
<table cellspacing="0" cellpadding="0" border="0" width="100%">
   
<tr align="left"><td>
<a class="mainlevel" href="#">Сантехника (16)</a> <!-- Категория -->
<div style="padding-left: 10px">
    <a class="sublevel" href="#">Европейская сантехника (16)</a></div> <!-- Подкатегория 1 -->
<div style="padding-left: 10px">
    <a class="sublevel" href="#">Установка санузлов (0)</a></div> <!-- Подкатегория 2-->
</td></tr>

<tr align="left">
    <td>
<a class="mainlevel" href="#">Отопление и кондиционирование (0)</a></td></tr>

<tr align="left"><td>
<a class="mainlevel" href="#">Отделочные материалы (0)</a></td></tr>

<tr align="left"><td>
<a class="mainlevel" href="#">Окна и двери (0)</a></td></tr>

</tbody></table>
Если ты уже выделял активные пункты модуля 'mod_adsmanager_menu' то глянь, пожалуйста.
Только нужно с дочерними страницами...
С помощью javascript активный пункт меню я выделил. вот код
Код
<script type="text/javascript">
try{
var el=document.getElementById('ads_menu').getElementsByTagName('a');
var url=document.location.href;
for(var i=0;i<el.length; i++){
if (url==el[i].href){
el[i].className += ' active';
};
};
}catch(e){}
</script>
Но используется сапописный вывод товаров и пагинация с помощью классв JPagination и при переходе по пунктам пагинации активная ссылка пропадает.
Заранее спасибо.
*

asdf27

  • Захожу иногда
  • 120
  • 7 / 0
Re: Выделить активный пункт меню
« Ответ #6 : 28.02.2012, 02:03:54 »
У меня ads 2.6, модуль под 2.5 ошибками плюёт. Дай адрес сайта (можно и в личку, хотя чего стесняться), на нем посмотрю. Из твоего кода я не вижу активный элемент.
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
Re: Выделить активный пункт меню
« Ответ #7 : 28.02.2012, 10:17:19 »
Сайт на локале... А насчёт активного элемента... В FireBuge и в Опере активный элемент выбивает следующее
Код
<a class="mainlevel" href="#">Сантехника (16)</a>
для категории и
Код
<a class="sublevel" href="#">Европейская сантехника (16)</a>
для подкатегорий.. Теже самые классы стоят и для неактивных пунктов..
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
Re: Выделить активный пункт меню
« Ответ #8 : 28.02.2012, 11:02:06 »
Проблема решилась с помощью скрипта jQuery
Код
<script type="text/javascript">
jQuery(document).ready (function () {
var active_url=document.location.pathname; 
if (active_url.split ('/')[2]!=0) {
jQuery.each (jQuery("#ads_menu a[href*=/"+active_url.split('/')[2]+"]"),
function (){$(this).addClass ('active');});
}
});
</script>
Если вдруг кому-нибудь понадобиться пояснения к коду - пишите.
*

fle4er

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: Выделить активный пункт меню
« Ответ #9 : 14.03.2012, 00:50:02 »
Поясните пожалуйста куда мне этот скрип вставить адс 2.6, Joomla 2.5             Vse72.ru
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
Re: Выделить активный пункт меню
« Ответ #10 : 14.03.2012, 10:17:28 »
fle4er, у меня Joomla 1.5+adsmanager 2.5
Данный скрипт вставил в конец файла mod_adsmanager_menu.php, который лежит в modules/mod_adsmanager_menu
*

fle4er

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: Выделить активный пункт меню
« Ответ #11 : 14.03.2012, 12:58:19 »
не работает скрипт у меня
 
вот код mod_ads_manager_menu.php
Код
<?php
// no direct access
defined('_JEXEC') or die( 'Restricted access' );

require_once(JPATH_BASE.'/administrator/components/com_adsmanager/models/category.php');

if (!function_exists("displayMenuCats")) {
function displayMenuCats($id, $level, &$children,$itemid,$current_list,$displaynumads) {
global $cur_template;
if (@$children[$id]) {
foreach ($children[$id] as $row) {
?>
<li>
<?php
$link = JRoute::_("index.php?option=com_adsmanager&view=list&catid=".$row->id."&Itemid=$itemid");
if ($displaynumads == 1)
{
echo '<a href="'.$link.'" ><span>'.$row->name.' ('.$row->num_ads.')</span></a>';
}
else
{
echo '<a href="'.$link.'" ><span>'.$row->name.'</span></a>';
}
if (@$current_list[count($current_list) - 1 -$level] == $row->id)
{
echo "<ul>";
displayMenuCats($row->id, $level+1, $children,$itemid,$current_list,$displaynumads);
echo "</ul>";
}
?>
</li>
<?php
}
}
}
}

/****************************************************/
$catid = JRequest::getInt('catid', -1 );
$displaynumads = $params->def('displaynumads',1);
$itemid = intval($params->get( 'default_itemid', JRequest::getInt('Itemid', 0 ) )) ;

$catmodel  = new AdsmanagerModelCategory();
$cats = $catmodel->getCatTree(true,true,$nbcontents);

$displayhome = $params->def('displayhome',1);
$displaywritead = $params->def('displaywritead',1);
$displayprofile = $params->def('displayprofile',1);
$displaymyads = $params->def('displaymyads',1);
$displayrules = $params->def('displayrules',1);
$displayallads = $params->def('displayallads',1);
$displaycategories = $params->def('displaycategories',1);
$displayseparators = $params->def('displayseparators',1);

if ($displaycategories == 1) {
$cc = $catmodel->getCategories();
$orderlist = array();
// first pass - collect children
foreach ($cc as $v ) {
$orderlist[$v->id] = $v;
}

$current_list[] = $catid;
if ($catid != -1)
{
$current = $catid;
while((isset($orderlist[$current])) && ($orderlist[$current]->parent != 0))
{
$current_list[] = $orderlist[$current]->parent;
$current = $orderlist[$current]->parent;
}
}
}

$lang = JFactory::getLanguage();
$lang->load("com_adsmanager");

$user = JFactory::getUser();

$link_front = JRoute::_("index.php?option=com_adsmanager&view=front&Itemid=$itemid");
$link_write_ad = JRoute::_("index.php?option=com_adsmanager&task=write&Itemid=$itemid");
$link_show_profile = JRoute::_("index.php?option=com_adsmanager&view=profile&Itemid=$itemid");
$link_show_user = JRoute::_("index.php?option=com_adsmanager&view=list&user=".$user->id."&Itemid=$itemid");
$link_show_rules = JRoute::_("index.php?option=com_adsmanager&view=rules&Itemid=$itemid");
$link_show_all = JRoute::_("index.php?option=com_adsmanager&view=list&Itemid=$itemid");

require(JModuleHelper::getLayoutPath('mod_adsmanager_menu'));
$content="";
$path = JPATH_ADMINISTRATOR.'/../libraries/joomla/database/table';
JTable::addIncludePath($path);



Может кто поможет что нужно изменить в коде чтобы выделенный пункт меню был жирным красным цветом
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
Re: Выделить активный пункт меню
« Ответ #12 : 14.03.2012, 13:36:09 »
fle4er, смотри...
у меня в index.php вот так вот
Код
<div id="ads_menu">
    <jdoc:include type="modules" name="ads_menu" />
</div>
Т.е. вывод модуля обёрнут в дивку ads_menu.
В скрипте указана дивка
Код
<script type="text/javascript">
jQuery(document).ready (function () {
var active_url=document.location.pathname; 
if (active_url.split ('/')[2]!=0) {
jQuery.each (jQuery("#ads_menu a[href*=/"+active_url.split('/')[2]+"]"),
function (){$(this).addClass ('active');});
}
});
</script>

В CSS файл (в моём случае это components/com_adsmanager/css/adsmanager.css) добавил
Код
#ads_menu a.active{
     color:red;
 }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться