Вопрос по Joomla 3.0. Разбираюсь с mod_menu

  • 16 Ответов
  • 6943 Просмотров

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

*

fbr

  • ******
  • 1274
  • + 140 -
Всем привет))
Кто-нибудь пилил j3.0?

Допиливаю mod_menu … и уперся.
Что-бы работало dropdown-menu, нужно получить вот такую конструкцию:

Код: xml
<ul class=”nav”>
  <li class="item-122 dropdown">
    <a class="dropdown-toggle" data-toggle="dropdown" data-target="#" href="/page-x">
      Пункт меню<b class="caret"></b>
    </a>
    <ul class="dropdown-menu">
      <li class="item-124">
        <a href="/page-y/mtest1">Длинный заголовок подпункта</a>
      </li>
    </ul>
  </li>
  ...

Тогда Js будет отрабатывать класс .open
А уперся я вот где.

Когда добавляешь  data-target="#"  - исчезает <ul class="dropdown-menu">
Если тупо задаешь href=”#” – тоже самое
Если не добавлять, то не появляется класс .open

Пока поставил подпорку через CSS , но решение не очень красивое, временное. Потому что выпадающее меню не исчезает при потере фокуса, а висит, пока не будет выбран какой-нибудь пункт меню

Гуглил, искал, сутки сижу, уже мозги плавятся
Если кто-то разбирался с меню – подскажите, пожалуйста, в каком направлении искать решение

Спасибо))

*

NightGuard

  • *******
  • 3025
  • + 371 -
  • вжжж-вжжж
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #1 : 16.10.2012, 13:29:29 »
Можешь файл шаблона меню куда-нить выложить, чтоб скачать можно было?
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма

skype: nightguardsrussia - только по рабочим вопросам, любые консультации - платные!

*

fbr

  • ******
  • 1274
  • + 140 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #2 : 16.10.2012, 18:52:08 »
дальше в этом направлении не копал пока ... Приведу в порядок - обязательно выложу

А на данном этапе упростил все до минимума. Вставил маленькую подпорку в CSS и заменил несколько строк в шаблоне меню.

в default.php
Код: php
исходный код

47. if ($item->parent) {
      $class .= ' parent';
    }    
// The next item is deeper.
71. if ($item->deeper) {
      echo '<ul class="nav-child unstyled small">';
    }
    
заменил на

    if ($item->parent) {
      $class .= ' dropdown';
    }    
    // The next item is deeper.
    if ($item->deeper) {
      echo '<ul class="dropdown-menu">';
    }
    
в default_component.php
Код: php
добавил
if ($item->parent){
  $caret = '<b class="caret"></b>';
}
и код
26. <a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a>

заменил на
    <a <?php echo $class; ?> href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?><?php echo $caret; ?></a>
в default_separator.php
Код: php
добавил
$caret = '<b class="caret"></b>';

и заменил
22. <span class="separator"><?php echo $title; ?><?php echo $linktype; ?></span>
на
<a href="#" <?php echo $title; ?>><?php echo $linktype; ?><?php echo $caret; ?></a>

в CSS прописал
Код: css
.navbar-inverse .nav  li.dropdown:hover > ul.dropdown-menu{
  display:block!important;
}
.caret{
  display:none;
}
.dropdown .caret {
  display:inline-block;
}

Все работает. Посмотреть можно здесь http://wantweb.ru (это полигон для экспериментов, на тексты не обращать внимания)
« Последнее редактирование: 16.10.2012, 18:57:47 от fbr »

*

toluy

  • **
  • 19
  • + 1 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #3 : 15.12.2012, 21:51:29 »
2fbr, ты дальше ковырял меню, или забил? сам сейчас копаюсь с ней

*

fbr

  • ******
  • 1274
  • + 140 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #4 : 15.12.2012, 22:50:47 »
ну так, немножко еще поковырял ... :)

Вроде все работает и по клику и по hover
Можно посмотреть и потестить файлы прикрепил

Буду всем благодарен за замечания и рекомендации))

[вложение удалено Администратором]

*

toluy

  • **
  • 19
  • + 1 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #5 : 16.12.2012, 02:09:17 »
Буду всем благодарен за замечания и рекомендации))
у тебя отлично получилось.
тока вот есть ньюанс у меня. как к своему шаблону mod_menu прилепить файл name_separator.php (тот который default_separator.php)?
вот наотрез не хочет подключаться.

*

fbr

  • ******
  • 1274
  • + 140 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #6 : 16.12.2012, 23:48:46 »
В файле dropdown-menu.php попробуйте после case 'separator':   вставить

require JModuleHelper::getLayoutPath('mod_menu', 'name_'.$item->type);
break;

сам не проверял ..

*

voland

  • ********
  • 9337
  • + 419 -
  • СКАЙП утерян! Пишите в телеграм @volandku
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #7 : 16.12.2012, 23:54:34 »
В файле dropdown-menu.php попробуйте после case 'separator':   вставить

require JModuleHelper::getLayoutPath('mod_menu', 'name_'.$item->type);
break;

сам не проверял ..
Эх.. версия уже 3, а костыли что? Всё те же?

*

fbr

  • ******
  • 1274
  • + 140 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #8 : 17.12.2012, 00:09:26 »
voland
я, увы, не спец в php... Все больше интуитивно (когда-то писал на VBA)

Учусь потихоньку))

*

toluy

  • **
  • 19
  • + 1 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #9 : 17.12.2012, 02:21:55 »
Эх.. версия уже 3, а костыли что? Всё те же?
ну по умолчанию файлы newmenu_url.php, newmenu_separator.php и другие в папке /templates/your_template/html/mod_menu/ сами не подключаются.. уже проверил. работает только newmenu.php, и в админке модулю меню можно назначить этот файл как шаблон.

Если знаешь другой способ, подскажи, пожалуйста.

fbr - спс за вариант - опробую.

*

toluy

  • **
  • 19
  • + 1 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #10 : 18.12.2012, 16:39:00 »
В файле dropdown-menu.php попробуйте после case 'separator':   вставить

require JModuleHelper::getLayoutPath('mod_menu', 'name_'.$item->type);
break;

сам не проверял ..

Да тема работает))) чёт я вначале даже не обратил внимание на код подключения доп файлов

*

avex

  • ***
  • 193
  • + 0 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #11 : 29.03.2013, 15:38:30 »
fbr, Вы можете пошагово пояснить, что делать с прикрепленным файлом?
Насколько я понимаю, нужно в своем шаблоне, в папке HTML создать папку mod_menu, куда скинуть Ваши два файла - default_separator.php и default-dropdown.php.
В теме Вы говорите, что нужно править файл default.php и default_component.php - откуда они берутся?

очень хочется решить выпадающее меню стандартными средствами Joomla, а не из JED - все просмотренные там либо не очень красивы, либо не для трёшки, либо не адаптивные.
Думай, делай, двигай

*

avex

  • ***
  • 193
  • + 0 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #12 : 31.03.2013, 11:38:39 »
В последней версии Joomla - 3.1 beta2 вопрос с выпадающим меню решили: оно у них работает на стандартном модуле.
Но взамен у них появился косяк (по крайней мере, у меня он есть) - там, где есть выпадающее меню, родительские пункты не кликабельны.
Та же проблема и в админке сайта - например, чтобы попасть в менеджер меню, нужно нажать на "Создать меню", и, попав на страничку создания, нажать "Отменить".
Надеюсь, в следующих версиях решат эту проблему.
Думай, делай, двигай

*

KKAAZZOO

  • *******
  • 2138
  • + 102 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #13 : 31.03.2013, 13:50:11 »
Та же проблема и в админке сайта - например, чтобы попасть в менеджер меню, нужно нажать на "Создать меню", и, попав на страничку создания, нажать "Отменить".
Надеюсь, в следующих версиях решат эту проблему.

Не подтверждаю, при щелчке на пункте меню "Менеджер меню" осуществляется переход в менеджер.  Joomla - 3.1 beta2.

*

avex

  • ***
  • 193
  • + 0 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #14 : 10.04.2013, 18:43:40 »
В Joomla 3 beta 3 по-прежнему стандартно не удается создать выпадающее меню.

Выкладываю последовательность действий.

1. Создаю пункт меню и вложенный к нему.
2. Во фронте пункт red не активен, не выпадает и вложенный уровень.
3. В бэке выключаю вложенный уровень.
4. Перезагружаю фронт.
5. Жму на red - пункт становится активным.
6. В бэке снова включаю вложенный пункт.
7. Во фронте при перезагрузке появляется треугольник, нормально всплывает вложенный пункт.
8. При этом сам пункт red как ссылка не работает - только der.
9. Тут же нажимаю на пункт home, и все возвращается в первоначальное положение.





[вложение удалено Администратором]
Думай, делай, двигай

*

avex

  • ***
  • 193
  • + 0 -
Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #15 : 10.04.2013, 18:44:18 »
Интересно, только у меня так получается?
Если да, то странно, что разработчики до сих пор не вшили решение в Joomla.

[вложение удалено Администратором]
Думай, делай, двигай

*

Mitai

Re: Вопрос по Joomla 3.0. Разбираюсь с mod_menu
« Ответ #16 : 23.11.2015, 03:45:04 »
дальше в этом направлении не копал пока ... Приведу в порядок - обязательно выложу

А на данном этапе упростил все до минимума. Вставил маленькую подпорку в CSS и заменил несколько строк в шаблоне меню.

в default.php
Код: php
исходный код

47. if ($item->parent) {
      $class .= ' parent';
    }   
// The next item is deeper.
71. if ($item->deeper) {
      echo '<ul class="nav-child unstyled small">';
    }
   
заменил на

    if ($item->parent) {
      $class .= ' dropdown';
    }   
    // The next item is deeper.
    if ($item->deeper) {
      echo '<ul class="dropdown-menu">';
    }
   
в default_component.php
Код: php
добавил
if ($item->parent){
  $caret = '<b class="caret"></b>';
}
и код
26. <a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a>

заменил на
    <a <?php echo $class; ?> href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?><?php echo $caret; ?></a>
в default_separator.php
Код: php
добавил
$caret = '<b class="caret"></b>';

и заменил
22. <span class="separator"><?php echo $title; ?><?php echo $linktype; ?></span>
на
<a href="#" <?php echo $title; ?>><?php echo $linktype; ?><?php echo $caret; ?></a>

в CSS прописал
Код: css
.navbar-inverse .nav  li.dropdown:hover > ul.dropdown-menu{
  display:block!important;
}
.caret{
  display:none;
}
.dropdown .caret {
  display:inline-block;
}

Все работает. Посмотреть можно здесь http://wantweb.ru (это полигон для экспериментов, на тексты не обращать внимания)
можешь разжевать для чайника конкретней где что править? например в сss где именно найти этот файл? или добавил строку куда в начале в середине или там пофигу куда?
попытался сделать как было описано выпадающего меню так и не появилось(( зато появились стрелочки вниз у некоторых из пунктов корневого меню (Joomla 3.4.5 шаблон IT ZEN )