Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

0 Пользователей и 1 Гость просматривают эту тему.
  • 12 Ответов
  • 6592 Просмотров
*

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;
 }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться