Как создать подписи-комментарии под каждым пунктом горизонального меню?

Тема в разделе "Вопросы по работе с меню", создана пользователем DeadButHappy, 09.08.2011.

  1. Offline

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

    Регистрация:
    09.08.2011
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    Создаются пункты меню, но под ними должны быть комментарии..
    все пункты меню создаются через админку.
    а как там же добавить подстрочные комментарии?
    и чтобы эти комментарии были связаны с
    соответсвующим пунктом меню.д
    Меню горизонтальное.
    Версия джумлы 1,5.23
     
  2.  
  3. Offline

    bugmenot Недавно здесь => Cпециалист <=

    Регистрация:
    15.03.2009
    Сообщения:
    647
    Симпатии:
    39
    Пол:
    Мужской
    Как я помню, в некоторых шаблонах это делалось так "Заголовок || Подзаголовок"
     
  4. ycsus
    Offline

    ycsus Недавно здесь => Cпециалист <=

    Регистрация:
    19.02.2011
    Сообщения:
    249
    Симпатии:
    33
    Пол:
    Мужской
    там по сути обычная разбивка тем же explode || а потом формирование меню по немного измененному шаблону, так что такую феньку мона прикрутить куда угодно.

    Если сильно напряжно, мона выдрать с какого нить шаблона, типа http://www.yootheme.com/demo/themes/joomla/2011/shelf/ который мона поискать на каких нить варезниках, ибо покупать ради одной такой плюшки расточительно.
     
  5. vyatka
    Offline

    vyatka Пользователь

    Регистрация:
    30.11.2010
    Сообщения:
    93
    Симпатии:
    5
    Пол:
    Мужской
  6. Offline

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

    Регистрация:
    09.08.2011
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
  7. Offline

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

    Регистрация:
    09.08.2011
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    Если подстваить это в заголовок , то символы || будут отображаться. Или так должно быть?
    Можно немного прокомментировать данный способ? :X
     
  8. progmist
    Offline

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

    Регистрация:
    18.05.2009
    Сообщения:
    155
    Симпатии:
    10
    Пол:
    Мужской
    необходимо написать (дописать) файл templates/[ваш шаблон]/html/mod_mainmenu/default.php

    а именно вот код:
    Код (PHP):
    1. <?php
    2.  
    3. // no direct access
    4. defined('_JEXEC') or die('Restricted access');
    5.  
    6.  
    7. if ( ! defined('modMainMenuXMLCallbackDefined') )
    8. {
    9. function modMainMenuXMLCallback(&$node, $args)
    10. {
    11.     $user   = &JFactory::getUser();
    12.     $menu   = &JSite::getMenu();
    13.     $active = $menu->getActive();
    14.     $path   = isset($active) ? array_reverse($active->tree) : null;
    15.  
    16.     if (($args['end']) && ($node->attributes('level') >= $args['end']))
    17.     {
    18.         $children = $node->children();
    19.         foreach ($node->children() as $child)
    20.         {
    21.             if ($child->name() == 'ul') {
    22.                 $node->removeChild($child);
    23.             }
    24.         }
    25.     }
    26.  
    27.     if ($node->name() == 'ul') {
    28.         foreach ($node->children() as $child)
    29.         {
    30.             if ($child->attributes('access') > $user->get('aid', 0)) {
    31.                 $node->removeChild($child);
    32.             }
    33.         }
    34.     }
    35.  
    36.     if (($node->name() == 'li') && isset($node->ul)) {
    37.         $node->addAttribute('class', 'parent');
    38.     }
    39.  
    40.     if (isset($path) && (in_array($node->attributes('id'), $path) || in_array($node->attributes('rel'), $path)))
    41.     {
    42.         if ($node->attributes('class')) {
    43.             $node->addAttribute('class', $node->attributes('class').' active');
    44.         } else {
    45.             $node->addAttribute('class', 'active');
    46.         }
    47.     }
    48.     else
    49.     {
    50.         if (isset($args['children']) && !$args['children'])
    51.         {
    52.             $children = $node->children();
    53.             foreach ($node->children() as $child)
    54.             {
    55.                 if ($child->name() == 'ul') {
    56.                     $node->removeChild($child);
    57.                 }
    58.             }
    59.         }
    60.     }
    61.  
    62.     if (($node->name() == 'li') && ($id = $node->attributes('id'))) {
    63.         if ($node->attributes('class')) {
    64.             $node->addAttribute('class', $node->attributes('class').' item'.$id);
    65.         } else {
    66.             $node->addAttribute('class', 'item'.$id);
    67.         }
    68.     }
    69.    
    70. /* тут собственно изменения стандартного шаблона вывода */
    71.     if (($node->name() == 'li') ) {
    72.        
    73.         $node_span = &$node->a[0]->span[0]; // получаем span ссылки пункта меню (в нем хранится текст пункта)
    74.    
    75.         $node_data_arr = explode('||', $node_span->data()); // разбиваем на подстроки
    76.        
    77.         if (count($node_data_arr) > 1) { // если разбивка прошла
    78.            
    79.             $node_span->setData($node_data_arr[0]);  // первый элемент разбивки - это текст пункта меню будет
    80.            
    81.             $node->addChild('br' ); // добавляем в li-шку конец строки <br/>
    82.             $node_comment = &$node->addChild('span', array('class' => 'li_comment' ) );// добавляем в li-шку еще один span с классом li_comment (это к примеру )
    83.             $node_comment->setData($node_data_arr[1]); // записываем текст нового span-а
    84.            
    85.         }
    86.        
    87.        
    88.     }
    89. /* конец изменений */
    90.     if (isset($path) && $node->attributes('id') == $path[0]) {
    91.         $node->addAttribute('id', 'current');
    92.     } else {
    93.         $node->removeAttribute('id');
    94.     }
    95.     $node->removeAttribute('rel');
    96.     $node->removeAttribute('level');
    97.     $node->removeAttribute('access');
    98. }
    99.     define('modMainMenuXMLCallbackDefined', true);
    100. }
    101.  
    102. modMainMenuHelper::render($params, 'modMainMenuXMLCallback');
     
  9. Offline

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

    Регистрация:
    09.08.2011
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    С точки зрения программирования наверное самый правильный подход. Посижу, надеюсь вникну в код..
     

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

Загрузка...