Если кто поможет, буду очень благодарен.
Вот такой код Смарти:
{section name=i loop=$obj->mCategories}
<li>{$obj->mCategories[i].department_name}
<ul>
{section name=k loop=$obj->mCategories[i].category_name}
<li>$obj->mCategories[i].category_name[k]}
{/section}
{/section}
Если $obj->mCategories[i].category_name оказывается пустым, то поднимается ошибка: Undefined index: category_name.
В качестве решения думаю можно использовать флаг, но нет ли более аккуратного решения?
И вообще для меня загадка как можно проверять переменные в смарти на наличие значений...
Спустя 4 минуты, 5 секунд (16.09.2010 - 13:30) Семён написал(а):
Мб вы просто неправильно используйте массивы на шаблонах Smarty?
Если вы уверены на 100%, то сделайте мне пожалуйста его вывод:
Я правильно сделал вывод, вы хотите сделать рекурсию для вывода древовидного меню категорий? Если да, то какая версия Smarty 2, 3 (если да, то какой RC)
Если вы уверены на 100%, то сделайте мне пожалуйста его вывод:
{$obj->mCategories|print_r}
Я правильно сделал вывод, вы хотите сделать рекурсию для вывода древовидного меню категорий? Если да, то какая версия Smarty 2, 3 (если да, то какой RC)
Спустя 15 минут, 23 секунды (16.09.2010 - 13:46) Guest написал(а):
Семён, спасибо за ваш ответ!
Да, именно хочу сделать многослойное меню.
Smarty версия 2.6
Вот print_r:
Array
(
[department_name] => Supplements
[category_name] => Array
(
[0] => Healthy Foods
[1] => Healthy drinks
[2] => Buzz!
)
)
Array
(
[department_name] => Zuzi!
)
Array
Буду рад ответу!
Да, именно хочу сделать многослойное меню.
Smarty версия 2.6
Вот print_r:
Array
(
[department_name] => Supplements
[category_name] => Array
(
[0] => Healthy Foods
[1] => Healthy drinks
[2] => Buzz!
)
)
Array
(
[department_name] => Zuzi!
)
Array
Буду рад ответу!
Спустя 9 минут, 14 секунд (16.09.2010 - 13:55) Семён написал(а):
Внимание!
А вы print_r дали с шаблона smarty или print_r из php файлика?
Вообще если у вас нет бесконечной вложенности, и сообственно вложенность всего 2-ва уровня => бы сделал так (сорри по памяти не помню, уже давно сижу на 3х)
А вы print_r дали с шаблона smarty или print_r из php файлика?
Вообще если у вас нет бесконечной вложенности, и сообственно вложенность всего 2-ва уровня => бы сделал так (сорри по памяти не помню, уже давно сижу на 3х)
<ul>
{foreach key=key from=$массив item=n}
<li>{$n.department_name}</li>
{if count($n.category_name) != 0}
<ul>
{foreach key=key from=$n.category_name item=b}
<li>{$b}</li>
{/foreach}
</ul>
{/if}
{/foreach}
</ul>
Спустя 11 минут, 24 секунды (16.09.2010 - 14:06) Семён написал(а):
Исправил ошибки в примере. перепроверьте! вместо $массив, подставьте просто свой массив.
Спустя 4 минуты, 16 секунд (16.09.2010 - 14:10) Гость_Евгений написал(а):
Ага то была распечатка из смарти, а вот из пхп:
Array ( [0] => Array ( [department_name] => Supplements [category_name] => Array ( [0] => Healthy Foods [1] => Healthy drinks [2] => Buzz! )) [1] => Array ( [department_name] => Zuzi! ) )
Меню хочу на самом деле сделать 3х уровней, пока третий откинул для удобства.
Спасибо, за ваш код, попробую его!
Array ( [0] => Array ( [department_name] => Supplements [category_name] => Array ( [0] => Healthy Foods [1] => Healthy drinks [2] => Buzz! )) [1] => Array ( [department_name] => Zuzi! ) )
Меню хочу на самом деле сделать 3х уровней, пока третий откинул для удобства.
Спасибо, за ваш код, попробую его!
Спустя 2 минуты, 45 секунд (16.09.2010 - 14:13) Семён написал(а):
Я бы сразу сделал рекурсией, блин помнится в Smarty 2 в своё время я её реализовал через жопу с каким-то доп. плагином. в Smarty 3 древовидное меню выстраиваю через функцию.
Спустя 12 минут, 29 секунд (16.09.2010 - 14:26) Гость_Евгений написал(а):
Да, а я даже и не подозревал о существовании Смарти 3, пока вы не ответили.
А если я поставлю Смарти 3, у нее есть совместимость с кодом Смарти 2?
Не могли бы вашу эту функцию показать?
А я в благодарность... могу например чаю зеленого японского выслать, правда.
А если я поставлю Смарти 3, у нее есть совместимость с кодом Смарти 2?
Не могли бы вашу эту функцию показать?
А я в благодарность... могу например чаю зеленого японского выслать, правда.
Спустя 13 минут, 38 секунд (16.09.2010 - 14:39) Семён написал(а):
В смарти3 рекурсивный вывод древовидного меню (с бесконечной вложенностью) у меня так:
Ну некоторые вещи придётся переписать. а так синтаксис не изменился.
Ну некоторые вещи придётся переписать. а так синтаксис не изменился.
{function name='navigator' list=$myTree}
{foreach from=$list item=element}
{if !empty($element.childNodes)}
<li>
<a>- {$element.name_link}</a>
{else}
<li><a>- {$element.name_link}</a>
{/if}
{if !empty($element.childNodes)}
<ul class="list-style">{navigator list=$element.childNodes}</ul>
{/if}
</li>
{/foreach}
{/function}
<ul class="list-style">
{navigator}
</ul>
Спустя 16 минут, 25 секунд (16.09.2010 - 14:56) Guest написал(а):
Спасибо!
Чай нужен?
Чай нужен?
Спустя 2 минуты, 29 секунд (16.09.2010 - 14:58) Семён написал(а):
Цитата (Guest @ 16.09.2010 - 15:56) |
Спасибо! Чай нужен? |
Да ну что вы не утруждайте себя )))
Обращайтесь
Спустя 8 минут, 13 секунд (16.09.2010 - 15:06) Guest написал(а):
Сэнкс, жму руку!
Спустя 11 часов, 8 минут, 32 секунды (17.09.2010 - 02:15) Гость_Евгений написал(а):
Кстати, вот конечный рабочий вариант для 3х меню:
<ul>
{section name=i loop=$obj->mCategories}
<li>{$obj->mCategories[i].department_name}
<ul>
{if !empty($obj->mCategories[i].category_name)}
{section name=k loop=$obj->mCategories[i].category_name}
<li>{$obj->mCategories[i].category_name[k]}
{if !empty($obj->mCategories[i].subcategory_name[k])}
{section name=z loop=$obj->mCategories[i].subcategory_name[k]}
<ul>
<li>{$obj->mCategories[i].subcategory_name[k][z]}</li>
</ul>
{/section}
{/if} </li>
{/section}
</ul>
{/if}
{/section}
</li>
</ul>
<ul>
{section name=i loop=$obj->mCategories}
<li>{$obj->mCategories[i].department_name}
<ul>
{if !empty($obj->mCategories[i].category_name)}
{section name=k loop=$obj->mCategories[i].category_name}
<li>{$obj->mCategories[i].category_name[k]}
{if !empty($obj->mCategories[i].subcategory_name[k])}
{section name=z loop=$obj->mCategories[i].subcategory_name[k]}
<ul>
<li>{$obj->mCategories[i].subcategory_name[k][z]}</li>
</ul>
{/section}
{/if} </li>
{/section}
</ul>
{/if}
{/section}
</li>
</ul>