Навигация и главное меню

Тема в разделе "Пожелания и предложения", создана пользователем nep, 28.02.2008.

  1. Offline

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

    Регистрация:
    28.02.2008
    Сообщения:
    1
    Симпатии:
    0
    Предложение по поводу главного меню, а точнее его компонента - mod_mjoostinamenu.

    При навигации, зачастую "верхнее" меню используется как меню первого уровня, а "левое" меню - как меню второго уровня.

    Задача: сделать таким образом, чтобы при выборе разных элементов "верхнего" меню - выводились разные пункты "левого" меню.

    Варианты решения:
    Копировать модуль главного меню и привязывать его к разным меню (спискам элементов меню) и отображать на нужных страницах (нашел поиском несколько тем, например эту: http://joomla-support.ru/showthread.php?t=2636 )

    Решение, если честно, не очень удобное.
    Почему бы не сделать так: создать одно меню (иерархический список элементов), в "верхнем" меню выводить только его первый уровень, а в "левом" меню - только нижние уровни выбранного в "верхнем" меню пункта?

    М.б. я плохо читал документацию, но возможности такой не нашел. Предлагаю модернизировать mod_mjoostinamenu для того, чтобы такая возможность появилась.

    Вот так я подправил код mod_mjoostinamenu.php для реализации этой функциональности:
    function mosRecurseVIMenuMLZ( $id, $level, &$children, &$open, &$indents, &$params ) {
    if (@$children[$id]) {
    $n = min( $level, count( $indents )-1 );
    echo "\n".$indents[$n][0];
    //добавил $Itemid
    global $Itemid;
    foreach ($children[$id] as $row) {

    /* оригинальный код echo "\n".$indents[$n][1];
    * echo mosGetJoostinaLink( $row, $level, $params, $open );
    * // show menu with menu expanded - submenus visible
    * if ( !$params->get( 'expand_menu' ) ) {
    * if ( in_array( $row->id, $open )) {
    * mosRecurseVIMenuMLZ( $row->id, $level+1, $children, $open, $indents, $params );
    * }
    * } else {
    * mosRecurseVIMenuMLZ( $row->id, $level+1, $children, $open, $indents, $params );
    * }
    * echo $indents[$n][2];
    */

    //мой код
    if ($level==0){
    if ( ($Itemid == $row->id) ||( in_array( $row->id, $open ) ) ) {
    mosRecurseVIMenuMLZ( $row->id, $level+1, $children, $open, $indents, $params );

    continue;
    } else {


    continue;
    }
    } else {

    echo "\n".$indents[$n][1];
    echo mosGetJoostinaLink( $row, $level, $params, $open );
    mosRecurseVIMenuMLZ( $row->id, $level+1, $children, $open, $indents, $params );
    echo $indents[$n][2];
    }
    // /мой код

    }
    echo "\n".$indents[$n][3];
    }
    }
    }


    Это решение "в лоб" - при нем не отрабатываются настрока "Разворачивать меню" и нет никаких условий.
    Если возможно - включите в опции.
     
  2.  

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

Загрузка...