Перейти к содержимому



Вывод меню joomla своими силами

#1 Banderas
Banderas
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1
0

Обновлено 30 апреля 2013 - 15:57  Отправлено 28 апреля 2013 - 07:49

Здравствуйте уважаемые коллеги.
Недавно было у меня задание, как я думал - достаточно простое:

Установить джуумлу, форум IPB и в хедер форума вставить дубль меню джумлы.

Проанализировал связи я сделал просто 2 запроса, с такой логикой

Взять все категории
Вывести категорию
Если есть подкатегории:
взять соответсвенные подкатегории
вывести подкатегории

Конечно, в итоге у меня было запросов ровно Количество категорий+1, а это уже плохо!
Но суть не в этом... Суть в том что у меня начались проблемы с несоответствием подкатегорий к категориям и битыми ссылками.
На форуме джуумлы меня отправили на гит, там я нашёл репозиторий с исходником меню джумлы.
Конвертировал JQL в обычную строку:
SELECT m.id, m.menutype, m.title, m.alias, m.note, m.path AS route, m.link, m.type, m.level, m.language, m.browserNav, m.access, m.params, m.home, m.img, m.template_style_id, m.component_id, m.parent_id, e.element as component FROM tr_menu AS m LEFT JOIN tr_extensions AS e ON m.component_id = e.extension_id
WHERE m.published = 1 AND m.parent_id > 0 AND m.client_id = 0 ORDER BY m.lft

Но по какому алгоритму теперь стрктурировать массив - я не знаю. Как мне найти какие категории к каким подкатегориям относятся? Как мне собрать готовый структурированный массив?
С уважением, Bodyanuk :)

 

 

  • 0

I'm web-developer 

Magento one love!



#2 fedornabilkin
fedornabilkin
  • Модератор
  • 1 190 сообщений
  • Репутация: 206

Отправлено 28 апреля 2013 - 10:00

Это все конечно очень индивидуально вкаждом случае, но если есть категории и подкатегории, то вероятно необходимо будет использовать рекурсию.
  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#3 Banderas
Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 30 апреля 2013 - 14:55

А поточнее можно?
Сделал скрин результата запроса
Изображение

И то, что должно получиться
Изображение
  • 0

I'm web-developer 

Magento one love!



#4 fedornabilkin
fedornabilkin
  • Модератор
  • 1 190 сообщений
  • Репутация: 206

Отправлено 30 апреля 2013 - 15:57

Сейчас попробую объяснить.
Насколько я понял, все категории находятся в одной таблице, а подкатегории формируются наличием родительской категории.
Для рекурсивного вывода категорий с дочерними подкатегориями необходимо создать массив типа
$cats[$row['parent_id']][] = $row;
где $row - это строка(ассоциативный массив) из приведенного скрина.
Дальше пишем функцию типа такой
// разбираем массив если есть родитель категории, то формируем листинг
function tree_cats ($cats, $parent ){
  if(is_array($cats) and  isset($cats[$parent])){
   $tree = '<ul>';
   foreach( $cats[$parent] as $cat ){
	$tree .= "<li><a href=".$cat['link']."/'>".$cat['title']."</a>";
	$tree .=  tree_cats ( $cats, $cat['parent_id'] ); // рекурсия
	$tree .= '</li>';		
   }
   $tree .= '</ul>';
  }
  else return null;		
  return $tree;	  
}

И в необходимом месте вызываем функцию. Передаем в нее сформированный массив и ноль вторым параметром
Вроде как-то так должно работать
  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.





Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 22.5 3 темы, 6 сообщений, 1 балл репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 18 Вне конкурса за определение пользователя месяца

  • Фотография SergiuS85
    #3

    SergiuS85
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография kuztoday
    #4

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Megoydagi
    #5

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Фотография kolver
    #6

    kolver
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография mkreine
    #7

    mkreine (analiz-krovi.net)
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография Totti
    #8

    Totti
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Фотография r0mZet
    #9

    r0mZet (rz-style.ru)
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Фотография fedornabilkin
    #10

    fedornabilkin (plohoneponyal.ru)
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru