Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по Smarty

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Реф
Отправлено: 28 Декабря, 2011 - 07:11:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010  
Откуда: Реутов, Россия


Помог: 0 раз(а)




Вывожу меню сайта примерно следующим образом:
CODE (html):
скопировать код в буфер обмена
  1. {if isset($menu->items)}
  2.     <ul id="menu">
  3.         {foreach from=$menu->items item='m'}
  4.             <li>
  5.                 <a href="#">{$m->title}</a>
  6.             </li>
  7.         {/foreach}
  8.     </ul>
  9. {/if}


В результате получаю:
CODE (html):
скопировать код в буфер обмена
  1. <ul id="menu">
  2.     <li><a href="#">Item 1</a></li>
  3.     <li><a href="#">Item 2</a></li>
  4.     <li><a href="#">Item 3</a></li>
  5. </ul>


$menu, $menu->items[i] - объекты одного класса, то есть любой пункт меню $menu->items[i] может сам являться меню (если isset($menu->items[i]->items) == true).

Возможно ли вывести меню с любым числом уровней подменю стандартными средствами шаблонизатора Smarty 2?

Пример того, что хотелось бы уметь получать:
CODE (html):
скопировать код в буфер обмена
  1. <ul id="menu">
  2.     <li><a href="#">Item 1</a></li>
  3.     <li><a href="#">Item 2</a>
  4.         <ul>
  5.             <li><a href="#">Item 2-1</a></li>
  6.             <li><a href="#">Item 2-2</a></li>
  7.             <li><a href="#">Item 2-3</a>
  8.                 <ul>
  9.                     <li><a href="#">Item 2-3-1</a></li>
  10.                     <li><a href="#">Item 2-3-2</a></li>
  11.                     <li><a href="#">Item 2-3-3</a>
  12.                           <ul>...</ul>
  13.                     </li>
  14.                 </ul>
  15.             </li>
  16.         </ul>
  17.     </li>
  18.     <li><a href="#">Item 3</a></li>
  19. </ul>

(Отредактировано автором: 28 Декабря, 2011 - 07:12:46)



-----
Думать надо головой, а не головкой!
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Декабря, 2011 - 07:31:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




О, мне тоже было бы интересным узнать - есть ли у смарти рекурсия.
 
 Top
Реф
Отправлено: 29 Декабря, 2011 - 06:06:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010  
Откуда: Реутов, Россия


Помог: 0 раз(а)




Решение (может кому-то пригодится):

menu.tpl
CODE (html):
скопировать код в буфер обмена
  1. <ul id="menu">
  2.     {foreach from=$menu->items item='m'}
  3.         <li>
  4.             <a href="#">{$m->title}</a>
  5.             {if isset($m->items)}
  6.                 {include file='submenu.tpl' menu=$m}
  7.             {/if}
  8.         </li>
  9.     {/foreach}
  10. </ul>


submenu.tpl
CODE (html):
скопировать код в буфер обмена
  1. <ul>
  2.     {foreach from=$menu->items item='m'}
  3.         <li>
  4.             <a href="#">{$m->title}</a>
  5.             {if isset($m->items)}
  6.                 {include file='submenu.tpl' menu=$m}
  7.             {/if}
  8.         </li>
  9.     {/foreach}
  10. </ul>

(Отредактировано автором: 29 Декабря, 2011 - 06:07:07)



-----
Думать надо головой, а не головкой!
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Декабря, 2011 - 07:00:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ага, зеачит явной рекурсии нет. Жосткое конечно решение, но я бы тоже так "психанул" Закатив глазки
 
 Top
Реф
Отправлено: 29 Декабря, 2011 - 13:50:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010  
Откуда: Реутов, Россия


Помог: 0 раз(а)




Явная только в Smarty 3 http://www[dot]smarty[dot]net/docs/en/la[dot][dot][dot]ion[dot]function[dot]tpl

(Отредактировано автором: 29 Декабря, 2011 - 13:51:36)



-----
Думать надо головой, а не головкой!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB