X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Вывод меню joomla своими силами
Banderas
Banderas
Topic Starter сообщение 28.4.2013, 8:49; Ответить: Banderas
Сообщение #1


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

Проанализировал связи я сделал просто 2 запроса, с такой логикой
[PHP]
Взять все категории
Вывести категорию
Если есть подкатегории:
взять соответсвенные подкатегории
вывести подкатегории
[/PHP]
Конечно, в итоге у меня было запросов ровно Количество категорий+1, а это уже плохо!
Но суть не в этом... Суть в том что у меня начались проблемы с несоответствием подкатегорий к категориям и битыми ссылками.
На форуме джуумлы меня отправили на гит, там я нашёл репозиторий с исходником меню джумлы.
Конвертировал JQL в обычную строку:
[PHP]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[/PHP]
Но по какому алгоритму теперь стрктурировать массив - я не знаю. Как мне найти какие категории к каким подкатегориям относятся? Как мне собрать готовый структурированный массив?
С уважением, Bodyanuk :)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 28.4.2013, 11:00; Ответить: fedornabilkin
Сообщение #2


Это все конечно очень индивидуально вкаждом случае, но если есть категории и подкатегории, то вероятно необходимо будет использовать рекурсию.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
Topic Starter сообщение 30.4.2013, 15:55; Ответить: Banderas
Сообщение #3


А поточнее можно?
Сделал скрин результата запроса
[img]http://content.screencast.com/users/Bodyanuk/folders/Jing/media/d7d91f98-e517-4204-bed0-5cf059f2765f/2013-04-30_1453.png[/img]

И то, что должно получиться
[img]http://content.screencast.com/users/Bodyanuk/folders/Jing/media/09ac71a7-ca02-45ae-9612-257277f309d0/2013-04-30_1456.png[/img]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 30.4.2013, 16:57; Ответить: fedornabilkin
Сообщение #4


Сейчас попробую объяснить.
Насколько я понял, все категории находятся в одной таблице, а подкатегории формируются наличием родительской категории.
Для рекурсивного вывода категорий с дочерними подкатегориями необходимо создать массив типа
$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;      
}


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

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Ручной обмен, ввод/вывод электронных валют | ЮMoney, WMZ, Крипта, Приват, Монобанк | Низкие комиссии, минимальные суммы сделок
быстро, удобно, по доступному курсу
200 Sostavitel 97661 11.2.2024, 21:07
автор: Wolfhound
Открытая тема (нет новых ответов) Sbitcoin.ru – Ввод, Вывод, Обмен: Qiwi, YD, Btc, Btc-e, PM, Cash IN, PR24, MG, WU, Нал (RU, UA).
9 sbitcoinru 6746 10.10.2023, 19:25
автор: Sbitcoin
Горячая тема (нет новых ответов) Разработка сайтов Joomla Wordpress Opencart
Разработка, верстка, оптимизация веб сайтов.
77 WoWeb 40291 3.9.2023, 16:52
автор: Sawich
Открытая тема (нет новых ответов) [Продам] базы сайтов на CMS Wordpress/Joomla/Drupal/Magento/...
14 phosphoruss 13673 16.8.2023, 15:27
автор: SmmPanelUS
Открытая тема (нет новых ответов) Оплатим зарубежные сервисы своими visa mc
0 gregory037 1280 22.7.2023, 21:56
автор: gregory037


 



RSS Текстовая версия Сейчас: 28.3.2024, 19:51
Дизайн