1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

Как встроить выподающее меню в joomla

Тема в разделе "Joomla", создана пользователем Uglik, 14 авг 2010.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Статус темы:
Закрыта.
Модераторы: arman29, DMS, Genk0, NightHunter
  1. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    Здравствуйте, столкнулся с такой пробелемой.... делаю шаблон под Joomla, реализованно выподающее меню... но не получается натянуть на joomla

    Собственно вот что получатеся в шаблоне на html:
    HTML:
    
    Вот как реализованны стили в моем меню
    
    <a href="" id="link">Главное меню</a>
    <div id="top_menu" class="top_menu">    		
    <ul class="menu-nav">
    <li class="top item53"><a href="page.html"><strong>Уровень 1</strong></a></li>
    <li class="top item54"><a href="page.html"><strong>Уровень 1</strong></a>
      <div class="ulwrapper">
      <ul>
        <li class="item59"><a href="/"><strong>Уровень 2</strong></a></li>
        <li class="parent item60"><a href="/"><strong>Уровень2</strong></a>
    	<div class="ulwrapper">
    	<ul>
    	   <li class="item62"><a href="/"><strong>Уровень 3</strong></a></li>
    	   <li class="item63"><a href="/"><strong>Уровень 3</strong></a></li>
    	</ul>
    	</div>
    	</li>
    <li class="item61"><a href="/"><strong>Уровень 2</strong></a></li>
       </ul>
       </div>
    </li>
    <li class="top item56"><a href="/"><strong>Уровень 1</strong></a></li>
    </ul>	    
    </div>
    
    
    При вставке модуля меню

    HTML:
    
    <a href="" id="link">Главное меню</a>
    <div id="top_menu" class="top_menu">    		
    <jdoc:include type="modules" name="menu_nav" />	    
    </div>
    
    меню работает как статическое и не выподает.

    А вот что отдает код Joomla в меню

    HTML:
    
         <a href="/kuhni/" id="link">Главное меню</a>
         <div id="top_menu" class="top_menu">    		
         <ul class="menu">
                <li class="item1"><a href="http://localhost/kuhni/"><span>Уровень 1</span></a></li>
                <li class="parent active item3"><a href="/kuhni/index.php?option=com_content&amp;view=article&amp;id=4&amp;Itemid=3"><span>Уровень 1</span></a>
                <ul>
                  <li class="item6"><a href="/kuhni/index.php?option=com_content&amp;view=article&amp;id=2&amp;Itemid=6"><span>Уровень 2</span></a></li>
                  <li id="current" class="parent active item4"><a href="/kuhni/index.phpoption=com_content&amp;view=article&amp;id=3&amp;Itemid=4"><span> Уровень 2</span></a>
                      <ul>
                      <li class="item8"><a href="/kuhni/index.php?option=com_content&amp;view=article&amp;id=3&amp;Itemid=8"><span>Уровень 3</span></a></li>
                      <li class="item9"><a href="/kuhni/index.php?option=com_content&amp;view=article&amp;id=2&amp;Itemid=9"><span>Уровень 3</span></a></li>
                     </ul>
                 </li><li class="item7"><a href="/kuhni/index.php?option=com_content&amp;view=article&amp;id=4&amp;Itemid=7"><span>Уровень 2</span></a></li>
               </ul>
               </li>
               <li class="item5"><a href="/kuhni/index.php?option=com_content&amp;view=article&amp;id=2&amp;Itemid=5"><span>Уровень 1</span></a></li>
         </ul>	    
         </div>
    
    
    Что нужно прописать что бы стили меню соотовествыввали примеру на HTML
    Когда здесь прописывается всего 1 строчка <jdoc:include type="modules" name="menu_nav" />
     
  2. 3ner

    3ner

    Регистр.:
    21 июн 2009
    Сообщения:
    757
    Симпатии:
    197
    Вообще модуль выпадающего меню ставил?
     
  3. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    Нет никакого модоля не ставил... у меня меню встроенное в шаблон на javascript и css .... кароче все чтили переписал... а вот что то оно все равно не выпадает... что то не досмотрел
     
  4. 3ner

    3ner

    Регистр.:
    21 июн 2009
    Сообщения:
    757
    Симпатии:
    197
    И как нам понять, что что-то не досмотрел?
    Как поступить:
    1. Ставишь готовый модуль выпадающего меню (их уже навалом).
    2. Полностью все описываешь, что делал (в какой файл, что прописывал и в какую строку), включая код javascript и css.
    Иначе ничем помочь не могу.

    З.Ы.
    Если будешь описывать пункт 2, то исходный код вывода писать не нужно, это:
    "Собственно вот что получатеся в шаблоне на html:" и "А вот что отдает код Joomla в меню"
     
  5. ndvkerch

    ndvkerch

    Регистр.:
    26 июн 2008
    Сообщения:
    277
    Симпатии:
    74
    Тут нужно править шаблон модуля \modules\mod_mainmenu\tmpl\default.php и оборачивать выпадающие списки второго уровня в тег <div class="ulwrapper"></div> а также проверить еще соответствие всех классов и идентификаторов в верстке и в том что отдает джумла и либо править шаблон либо css. А еще лучще использовать специальный модуль Перейти по ссылке и на него уже натягивать дизайн и css
     
  6. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    Прикрепляю архив с js index и css

    Меню сейчас такого плана

    HTML:
    
    <div id="top_menu" class="top_menu">    		
    <ul class="menu">
    <li><a href="page.html"><strong>Уровень 1</strong></a></li>
    <li><a href="page.html"><strong>Уровень 1</strong></a>
      <div class="ulwrapper">
      <ul>
        <li><a href="/"><strong>Уровень 2</strong></a></li>
        <li><a href="/"><strong>Уровень 2</strong></a>
        <div class="ulwrapper">
    	<ul>
    	   <li><a href="/"><strong>Уровень 3</strong></a></li>
    	   <li><a href="/"><strong>Уровень 3</strong></a></li>
    	</ul>
        </div>
    	</li>
        <li><a href="/"><strong>Уровень 2</strong></a></li>
       </ul>
    </div>
    </li>
    <li><a href="/"><strong>Уровень 1</strong></a></li>
    </ul>	    
    </div>
    
    Нужно привести к такому

    HTML:
    
    <div id="top_menu" class="top_menu">    		
    <ul class="menu">
    <li><a href="page.html"><strong>Уровень 1</strong></a></li>
    <li><a href="page.html"><strong>Уровень 1</strong></a>
      <ul>
        <li><a href="/"><strong>Уровень 2</strong></a></li>
        <li><a href="/"><strong>Уровень 2</strong></a>
    	<ul>
    	   <li><a href="/"><strong>Уровень 3</strong></a></li>
    	   <li><a href="/"><strong>Уровень 3</strong></a></li>
    	</ul>
    	</li>
        <li><a href="/"><strong>Уровень 2</strong></a></li>
       </ul>
    </li>
    <li><a href="/"><strong>Уровень 1</strong></a></li>
    </ul>	    
    </div>
    
    
    Что бы работоло без <div class="ulwrapper">
    Целый сетки промучался... как мне кажется нужно просто в js (который находится в index) переписать...
    Код:
    	<script type="text/javascript">
    	var $j = jQuery.noConflict();
    		$j(document).ready(function(){
    			$j('ul#jbg-menu').wrap('<div class="new" />');
    		$j('.menu li').hover(
    			function() {
    				$j(this).addClass("active");
    				$j(this).find('> .ulwrapper').stop(false, true).fadeIn();
    				Cufon.refresh();
    			},
    			function() {
    				$j(this).removeClass("active");        
    				$j(this).find('div').stop(false, true).fadeOut('fast');
    				Cufon.refresh();
    			}
    		);
    		$j('.ulwrapper').hover(
    			function() {
    				$j('.parent').addClass("active_tab");
    			},
    			function() {
    				$j('.parent').removeClass("active_tab");        
    			}
    		);
    		$j('.ulwrapper .ulwrapper').hover(
    			function() {
    				$j('.ulwrapper .parent').addClass("active_tab2");
    			},
    			function() {
    				$j('.ulwrapper .parent').removeClass("active_tab2");        
    			}
    		);
    	});
    
    $j(function()
    		{
    		 
    		$j("#link").click(function(event) {
    		event.preventDefault();
    		$j(this).toggleClass("link2");
    		$j("#top_menu").slideToggle();
    		});
    		 		});
    	</script>
    
    
    пробывал переписывать .ulwrapper в стилях и в самом js на ul.menu ul, все равно не помагло :(

    Архиф с файломи Перейти по ссылке
     
  7. 3ner

    3ner

    Регистр.:
    21 июн 2009
    Сообщения:
    757
    Симпатии:
    197
    Архив не распаковывается, весит 2.3Kb всего.
    Просто сюда прикрепи архив.
     
  8. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    Перезалил... пробуй теперь

    Посмотреть вложение test.zip
     
  9. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    а что здесь \modules\mod_mainmenu\tmpl\default.php отвечает за вложенность меню что то не могу понять

    PHP:
    // no direct access
    defined('_JEXEC') or die('Restricted access');


    if ( ! 
    defined('modMainMenuXMLCallbackDefined') )
    {
    function 
    modMainMenuXMLCallback(&$node$args)
    {
        
    $user    = &JFactory::getUser();
        
    $menu    = &JSite::getMenu();
        
    $active    $menu->getActive();
        
    $path    = isset($active) ? array_reverse($active->tree) : null;

        if ((
    $args['end']) && ($node->attributes('level') >= $args['end']))
        {
            
    $children $node->children();
            foreach (
    $node->children() as $child)
            {
                if (
    $child->name() == 'ul') {
                    
    $node->removeChild($child);
                }
            }
        }

        if (
    $node->name() == 'ul') {
            foreach (
    $node->children() as $child)
            {
                if (
    $child->attributes('access') > $user->get('aid'0)) {
                    
    $node->removeChild($child);
                }
            }
        }

        if ((
    $node->name() == 'li') && isset($node->ul)) {
            
    $node->addAttribute('class''parent');
        }

        if (isset(
    $path) && (in_array($node->attributes('id'), $path) || in_array($node->attributes('rel'), $path)))
        {
            if (
    $node->attributes('class')) {
                
    $node->addAttribute('class'$node->attributes('class').' active');
            } else {
                
    $node->addAttribute('class''active');
            }
        }
        else
        {
            if (isset(
    $args['children']) && !$args['children'])
            {
                
    $children $node->children();
                foreach (
    $node->children() as $child)
                {
                    if (
    $child->name() == 'ul') {
                        
    $node->removeChild($child);
                    }
                }
            }
        }

        if ((
    $node->name() == 'li') && ($id $node->attributes('id'))) {
            if (
    $node->attributes('class')) {
                
    $node->addAttribute('class'$node->attributes('class').' item'.$id);
            } else {
                
    $node->addAttribute('class''item'.$id);
            }
        }

        if (isset(
    $path) && $node->attributes('id') == $path[0]) {
            
    $node->addAttribute('id''current');
        } else {
            
    $node->removeAttribute('id');
        }
        
    $node->removeAttribute('rel');
        
    $node->removeAttribute('level');
        
    $node->removeAttribute('access');
    }
        
    define('modMainMenuXMLCallbackDefined'true);
    }

    modMainMenuHelper::render($params'modMainMenuXMLCallback');

     
  10. 3ner

    3ner

    Регистр.:
    21 июн 2009
    Сообщения:
    757
    Симпатии:
    197
    Что-то у меня не получается с твоим архивом сделать меню, может есть косяк в исходниках.
    Сдается мне что это файлы с какого-то TM шаблона. Если так, то с какого?
     
Статус темы:
Закрыта.