Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 27 апр 2024, 20:27

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Помогите с меню
СообщениеДобавлено: 05 июл 2013, 18:27 
Не в сети
Новичок

Зарегистрирован: 25 окт 2012, 12:16
Сообщения: 16
Делаю горизонтальное выпадающее меню.Вот Html

Код:
<ul>       <li class="item root" >
                                    <a class="orphan item bullet" href="/"  >
                    <span>
                                        Главная                                                            </span>
                                    </a>

                                </li>
                                <li class="item root" >
                                    <a class="daddy item bullet" href="/items"  >
                    <span>
                                        Продукция                                                        </span>
                                    </a>


                                </li>
                                <li class="item parent root" >
                                    <a class="daddy item bullet" href="#"  >
                    <span>
                                        Каталог                                                            </span>
                                    </a>

                                    <div class="fusion-submenu-wrapper level2" style="width:180px;">

                                        <ul class="level2" style="width:180px;">

                                            <li class="item183" >
                                                <a class="orphan item bullet" href="#"  >
                    <span>
                                        Монтаж                                                            </span>
                                                </a>

                                            </li>
                                            <li class="item184" >
                                                <a class="orphan item bullet" href="#"  >
                    <span>
                                        Дизайн и проектирование                                                            </span>
                                                </a>

                                            </li>
                                            <li class="item185" >
                                                <a class="orphan item bullet" href="/gallery"  >
                    <span>
                                        Галерея                                                           </span>
                                                </a>

                                            </li>

                                            <li class="item186" >
                                                <a class="orphan item bullet" href="#"  >
                    <span>
                                        Проекты                                                            </span>
                                                </a>

                                            </li>
                                        </ul>

                                        <div class="drop-bot"></div>
                                    </div>
                                </li>
                                <li class="item root" >
                                    <a class="orphan item bullet" href="/news_all"  >
                    <span>
                                        Новости                                                            </span>
                                    </a>

                                </li>
                                <li class="item parent root" >
                                    <a class="daddy item bullet" href="#"  >
                    <span>
                                        Проекты                                                           </span>
                                    </a>

                                    <div class="fusion-submenu-wrapper level2" style="width:180px;">

                                        <ul class="level2" style="width:180px;">
                                            <li class="item188" >
                                                <a class="orphan item bullet" href="#"  >
                    <span>
                                         Типовые проекты                                                            </span>
                                                </a>

                                            </li>
                                            <li class="item189" >
                                                <a class="orphan item bullet" href="#"  >
                    <span>
                                        Реализованные проекты                                                            </span>
                                                </a>

                                            </li>



</ul>






Вот к чему продвинулся

Код:
 <?php 
                                foreach ($menu as $item)
                                {
                                    if ($item['parent_id'] == 0)
                                    {
                 echo '<li class="item root"><a class="orphan item bullet" href="#"><span>' . $item['category'] . '</span></a></li>'."\n";

                   echo '<div class="fusion-submenu-wrapper level2" style="width:180px;"><ul>'."\n";

                                        foreach ($menu as $parent_item)
                                        {
                                            if ($parent_item['parent_id'] == $item['id'])
                                            {
             echo '<li class="item123'"><a class="orphan item bullet" href="#"><span>' . HTML::anchor(URL::site( $parent_item['id']), $parent_item['category']) . '</span></a></li>'."\n";

                                            }

                                        }
                                        echo '</ul></div>'."\n";
                                    }
                                }
                                ?>




Проблема в том что если элемент меню li имеет вложенности (тоесть parent_id==id) ему надо присвоить class="item parent root" а если нет class="item root".Помогите решить


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 05 июл 2013, 18:41 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
на гитхабе есть готовый модуль меню

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 05 июл 2013, 18:48 
Не в сети
Новичок

Зарегистрирован: 25 окт 2012, 12:16
Сообщения: 16
Готовый это очень хорошо!)))Но уже почти сам сделал,тем более это же просто меню


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 05 июл 2013, 18:59 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
вообще для меню обычно рекурсивный метод используют если не nested tree используется, но если меню строго 2х уровневое, то пойдет и так.
а в чем именно трудность возникает?
вроде все просто
Код:
echo ($item['parent_id'] == 0 ? 'class="item parent root"' : 'class="item root"') 

или я что-то упускаю?

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 05 июл 2013, 23:08 
Не в сети
Новичок

Зарегистрирован: 25 окт 2012, 12:16
Сообщения: 16
Не все так просто))) class= item parent root приделяется только тем parent_id=0 у которых есть вложеность. Например первая ссылка - "Home", она не имеет вложености ей приделяется class="item root" но она же тоже parent_id=0.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 05 июл 2013, 23:32 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
если я все верно понял, то если это объекты, то преобразуйте в массив вначале(в случае с orm методом as_array), а потом пройдитесь циклом for и проверяйте следующий элемент( т.е. i текущий i+1 следующий). но вообще изврат какой-то имхо, я обычно в таблицу категорий товаров (я интернет-магазинами в основном занимаюсь) добавляю поле в котором хранится кол-во под категорий, чтобы каждый раз его не считать. либо как вариант можно кешировать данное значение, тогда и заморочек таких в циклах не будет

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Последний раз редактировалось WinterSilence 06 июл 2013, 00:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 05 июл 2013, 23:53 
Не в сети
Новичок

Зарегистрирован: 25 окт 2012, 12:16
Сообщения: 16
Таблица обычная id, parent_id,category. for вообще не использую в модели получаю массив передаю в вид а дальше вы видели.Вот весь код

print_r ($menu)

Array
(
[0] => Array
(
[category] => Главная
[parent_id] => 0
[id] => 4
)

[1] => Array
(
[category] => Продукция
[parent_id] => 0
[id] => 5
)

[2] => Array
(
[category] => Каталог
[parent_id] => 0
[id] => 6
)

[3] => Array
(
[category] => Монтаж
[parent_id] => 6
[id] => 7
)

[4] => Array
(
[category] => Дизайн и проектирование
[parent_id] => 6
[id] => 8
)

[5] => Array
(
[category] => Галерея
[parent_id] => 6
[id] => 9
)

[6] => Array
(
[category] => Проекты
[parent_id] => 6
[id] => 10
)

[7] => Array
(
[category] => Новости
[parent_id] => 0
[id] => 11
)

[8] => Array
(
[category] => Проекты
[parent_id] => 0
[id] => 12
)

[9] => Array
(
[category] => Типовые проекты
[parent_id] => 12
[id] => 13
)

[10] => Array
(
[category] => Реализованные проекты
[parent_id] => 12
[id] => 14
)

[11] => Array
(
[category] => Полезные материалы
[parent_id] => 0
[id] => 15
)

[12] => Array
(
[category] => Презентации
[parent_id] => 15
[id] => 16
)

[13] => Array
(
[category] => Cтатьи
[parent_id] => 15
[id] => 17
)

[14] => Array
(
[category] => Инструкции
[parent_id] => 15
[id] => 18
)

[15] => Array
(
[category] => Буклеты
[parent_id] => 15
[id] => 19
)

[16] => Array
(
[category] => Сертификаты
[parent_id] => 15
[id] => 20
)

[17] => Array
(
[category] => Видео
[parent_id] => 15
[id] => 21
)

[18] => Array
(
[category] => Контакты
[parent_id] => 0
[id] => 22
)

)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 06 июл 2013, 00:06 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
я про Вид и говорю, что-то вроде того:
Код:
for($i=0;$i<count($categories); $i++)
{
if($categories[$i+1][parent] == $categories[$i][id])
{
// есть потомки
}
else
{
// нет потомков
}
}

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 06 июл 2013, 12:33 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
WinterSilence писал(а):
преобразуйте в массив вначале(в случае с orm методом as_array), а потом пройдитесь циклом for

Очень оригинально


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с меню
СообщениеДобавлено: 06 июл 2013, 18:50 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Sergey чего не так то?

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group