Joomla 1.5 Подсветка пункта меню активного раздела при выводе материала

Тема в разделе "Вопросы по работе с меню", создана пользователем witcatchers-com, 27.02.2011.

  1. Offline

    witcatchers-com Недавно здесь

    Регистрация:
    31.05.2010
    Сообщения:
    62
    Симпатии:
    1
    Пол:
    Мужской
    Здравствуйте коллеги!
    Вопрос следующий. Мне необходимо сделать так, чтобы при выводе конкретного материала (который естественно принадлежит к определенному разду и категории) пункт меню с названием раздела оставался подсвеченным. При навигации по верхнему меню, при переходе с раздела на раздел - все работает правильно, но стоит в разделе перейти к категории - пункт меню с названием раздела становится обычным. Это неправильно. Ведь пользователь должен знать где именно он находится на сайте. Пример того как надо можно увидеть даже на нашем сайте, вот я нахожусь в разделе форум и соответствующий пункт меню подсвечен.

    ques.jpg
     
    Последнее редактирование модератором: 25.11.2014
  2.  
  3. Offline

    ukalen Недавно здесь

    Регистрация:
    24.02.2011
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    на вскидку....
    задаешь пунктам меню айдишники...
    Код (PHP):
    1. <ul >
    2.    <li><a id="cur1" href="#" title="">1</a></li>
    3.    <li><a id="cur2" href="#" title="">2</a></li>
    4.    <li><a id="cur3" href="#" title="">3</a></li>
    5. </ul>

    в ксс...что то типо :
    Код (PHP):
    1. .active {
    2.     color:#333;
    3. }

    ну а потом
    Код (PHP):
    1. <onload="document.getElementById('cur<?= $id ?>').className = 'active';>хотя тут лучше скрипт написать..а то не очень быстрый в боди онлоад.

    ну как то так
     
    Последнее редактирование: 27.02.2011
  4. ycsus
    Offline

    ycsus специалист

    Регистрация:
    19.02.2011
    Сообщения:
    249
    Симпатии:
    33
    Пол:
    Мужской
    Итемид пункта меню походу не передается. Нуна отследить почему.
     
  5. Offline

    witcatchers-com Недавно здесь

    Регистрация:
    31.05.2010
    Сообщения:
    62
    Симпатии:
    1
    Пол:
    Мужской
    Я заметил следующее - пока не создано МЕНЮ категорий, то всё происходит как задумывалось.

    А если присваивать итемИД пунктам меню, то куда в код их вставлять? Я так понял за меню отвечает файл в шаблоне "mod_mainmenu/default.php"?
    Если да то куда вставлять код?
    Код (CODE):
    1. <?php
    2. defined('_JEXEC') or die('Restricted access'); // no direct access
    3.  
    4. ob_start();
    5. require_once realpath(dirname(__FILE__) . str_replace('/', DIRECTORY_SEPARATOR, '/../../../../modules/mod_mainmenu/tmpl/default.php'));
    6. ob_clean();
    7.  
    8. if (!defined('modMainMenuArtXMLCallbackDefined'))
    9. {
    10. function modMainMenuArtXMLCallback(&$node, $args)
    11. {
    12.         if (!$GLOBALS['menu_showSubmenus'] && $node->name() == 'li' && $node->level() == 1) {
    13.             if ($ul = $node->getElementByPath('ul'))
    14.                 $node->removeChild($ul);
    15.         }
    16.        
    17.         if ($node->name() == 'li') {
    18.             $liChildren = & $node->_children;
    19.             if (count($liChildren) > 0) {
    20.                 $liFirstChild = & $liChildren[0];
    21.                 $linkChildren = & $liFirstChild->_children;
    22.                 $span = & $linkChildren[0];
    23.                 $text = $span->data();
    24.                 if ($liFirstChild->name() == 'span' && $liFirstChild->attributes('class') == 'separator') {
    25.                     $liFirstChild->_name = 'a';
    26.                     $liFirstChild->addAttribute('href', '#');
    27.                     $liFirstChild->addAttribute('onclick', 'return false;');
    28.                 }
    29.                 if ($liFirstChild->name() == 'a') {
    30.                     if ($liFirstChild->level() == 2) {
    31.                         $liFirstChild->removeChild($span);
    32.                         $lspan = & $liFirstChild->addChild('span', array('class' => 'l'));
    33.                         $lspan->setData(' ');
    34.                         $rspan = & $liFirstChild->addChild('span', array('class' => 'r'));
    35.                         $rspan->setData(' ');
    36.                         $tspan = & $liFirstChild->addChild('span', array('class' => 't'));
    37.                         $tspan->setData($text);
    38.                     } else {
    39.                         $liFirstChild->removeAttribute('class');
    40.                         $liFirstChild->setData($text);
    41.                         $liFirstChild->removeChild($span);
    42.                     }
    43.                 }
    44.             }
    45.         }
    46.         modMainMenuXMLCallback($node, $args);
    47.         if ($node->name() == 'li') {
    48.             $class = $node->attributes('class');
    49.             if ($class && false !== strpos(' ' . $class, ' active')) {
    50.                 $itemChildren = & $node->_children;
    51.                 $itemChildren[0]->addAttribute('class', 'active');
    52.             }
    53.         }
    54.     }
    55.  
    56.     define('modMainMenuArtXMLCallbackDefined', true);
    57. }
    58.  
    59. if (!defined('artxMenuDecorator'))
    60. {
    61.  
    62.     function artxMenuDecorator($content)
    63.     {
    64.         $result = '';
    65.         ob_start();
    66. ?>
    67. <div class="art-nav">
    68.     <div class="l"></div>
    69.     <div class="r"></div>
    70. <?php
    71.         $result .= ob_get_clean() . $content;
    72.         ob_start();
    73. ?>
    74. </div>
    75. <?php
    76.         $result .= ob_get_clean();
    77.         return $result;
    78.     }
    79.  
    80.     define('artxMenuDecorator', true);
    81. }
    82.  
    83. if ($attribs['name'] == 'user3') {
    84.     $GLOBALS['menu_showSubmenus'] = false && 1 == $params->get('showAllChildren');
    85.     $xml = modMainMenuHelper::getXML($params->get('menutype'), $params, 'modMainMenuArtXMLCallback');
    86.     if ($xml) {
    87.         $xml->addAttribute('class', 'art-menu');
    88.         if ($tagId = $params->get('tag_id')) {
    89.             $xml->addAttribute('id', $tagId);
    90.         }
    91.         $result = JFilterOutput::ampReplace($xml->toString((bool)$params->get('show_whitespace')));
    92.         $result = str_replace(array('<ul/>', '<ul />'), '', $result);
    93.         echo artxMenuDecorator($result);
    94.     }
    95. } else {
    96.     modMainMenuHelper::render($params, 'modMainMenuXMLCallback');
    97. }


    Фрагмент CSS-ки, связанный с пунктом меню

    Код (CODE):
    1. /* begin MenuItem */
    2. .art-menu ul li
    3. {
    4.     clear: both;
    5. }
    6.  
    7. .art-menu a
    8. {
    9.     position:relative;
    10.     display: block;
    11.     overflow:hidden;
    12.     height: 39px;
    13.     cursor: pointer;
    14.     text-decoration: none;
    15.     margin-right: 0px;
    16.     margin-left: 0px;
    17. }
    18.  
    19.  
    20. .art-menu a .r, .art-menu a .l
    21. {
    22.     position:absolute;
    23.     display: block;
    24.     top:0;
    25.     z-index:-1;
    26.     height: 117px;
    27.     background-image: url('../images/MenuItem.png');
    28. }
    29.  
    30. .art-menu a .l
    31. {
    32.     left:0;
    33.     right:0px;
    34. }
    35.  
    36. .art-menu a .r
    37. {
    38.     width:400px;
    39.     right:0;
    40.     clip: rect(auto, auto, auto, 400px);
    41. }
    42.  
    43. .art-menu a .t
    44. {
    45. font-family: "Trebuchet MS", Arial, Helvetica, Sans-Serif;
    46. font-size: 16px;
    47. font-style: normal;
    48. font-weight: normal;
    49.     color: #E1EDEF;
    50.     padding: 0 26px;
    51.     margin: 0 0px;
    52.     line-height: 39px;
    53.     text-align: center;
    54. }
    55.  
    56. .art-menu a:hover .l, .art-menu a:hover .r
    57. {
    58.     top:-39px;
    59. }
    60.  
    61. .art-menu li:hover>a .l, .art-menu li:hover>a .r
    62. {
    63.     top:-39px;
    64. }
    65.  
    66. .art-menu li:hover a .l, .art-menu li:hover a .r
    67. {
    68.     top:-39px;
    69. }
    70. .art-menu a:hover .t
    71. {
    72.     color: #E7F9FD;
    73. }
    74.  
    75. .art-menu li:hover a .t
    76. {
    77.     color: #E7F9FD;
    78. }
    79.  
    80. .art-menu li:hover>a .t
    81. {
    82.     color: #E7F9FD;
    83. }
    84.  
    85.  
    86. .art-menu a.active .l, .art-menu a.active .r
    87. {
    88.     top: -78px;
    89. }
    90.  
    91. .art-menu a.active .t
    92. {
    93.     color: #000000;
    94. }
    95.  
    96.  
    97. /* end MenuItem */
     
    Последнее редактирование: 28.02.2011
  6. Offline

    witcatchers-com Недавно здесь

    Регистрация:
    31.05.2010
    Сообщения:
    62
    Симпатии:
    1
    Пол:
    Мужской
    Блин, неужели никто не подскажет?
     
  7. ycsus
    Offline

    ycsus специалист

    Регистрация:
    19.02.2011
    Сообщения:
    249
    Симпатии:
    33
    Пол:
    Мужской
    Не, итемид там вставляется автоматом. У тебя ЧПУ стоят? Дай ссылку куда поглазеть в личку.
     
  8. Offline

    witcatchers-com Недавно здесь

    Регистрация:
    31.05.2010
    Сообщения:
    62
    Симпатии:
    1
    Пол:
    Мужской
    Вопрос тогда всем: как вывести ссылки сбоку на материалы категории через модуль вывода статей, где скачать и как правильно настраивать этот модуль? И получится ли при помощи этого модуля сделать так, чтобы тот пункт в этом списке который ведет на конкретный материал, отображался активным? Я не понимаю почему так мало информации об этом? Ведь это важейший момент юзабилити - пользователь должен знать ГДЕ он находится в конкретный момент, в каком разделе и какой категории.
    Даже у нас на форуме это организовано:
    1.jpg

    Товарищи знатоки, помогите подвести итог! Я заметил что тема достаточно актуальная и толковых ответов в интернете не найти. Необходимо реализовать управление контентом таким образом:

    нао.jpg
     
    Последнее редактирование модератором: 25.11.2014
  9. Offline

    witcatchers-com Недавно здесь

    Регистрация:
    31.05.2010
    Сообщения:
    62
    Симпатии:
    1
    Пол:
    Мужской
    Как оказалось модуль найти и настроить несложно. Ну правда есть там нюансы, например нельзя сделать чтоы был список категорий и он например разворачивался при переходе на конкретную категорию.. И - что самое самое важное - активный пункт меню НЕ ПОДСВЕЧИВАЕТСЯ.
     
  10. Offline

    witcatchers-com Недавно здесь

    Регистрация:
    31.05.2010
    Сообщения:
    62
    Симпатии:
    1
    Пол:
    Мужской
    Вот что новое открылось мне - в стилях я нашёл где прописать параметры именно для активного пункта меню. Но вот что интересно - он работает только при нажатии на ссылку, когда статья загружается, все пункты снова становятся не активными
     
  11. Offline

    Влад Пользователь

    Регистрация:
    23.02.2008
    Сообщения:
    59
    Симпатии:
    1
    Пол:
    Мужской
    эх..как же нужен ответ на вопрос..актуально..может все-таки есть умная голова на форуме?
     

Поделиться этой страницей

Загрузка...