Автор Тема: Создать массив гатегории с субкатегориями в php  (Прочитано 75 раз)

31 Июль 2017, 19:54:41
  • Старожил
  • ****
  • Сообщений: 352
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день!
Есть вот такой вопрос..
При выводе карты сайта, используется вывод раздела категорий (с субкатегориями), обработка из sitemap.tpl  и category-tree-branch.tpl
sitemap……………………
<ul class="tree">
            {if isset($categoriesTree.children)}
                {foreach $categoriesTree.children as $child}
                    {if $child@last}
                        {include file="$tpl_dir./category-tree-branch.tpl" node=$child last='true'}
                    {else}
                        {include file="$tpl_dir./category-tree-branch.tpl" node=$child}
                    {/if}
                {/foreach}
            {/if}
            </ul>

category-tree-branch………………………………
<li {if isset($last) && $last == 'true'}class="last"{/if}>
<a href="{$node.link|escape:'html':'UTF-8'}" {if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if} title="{$node.desc|escape:'html':'UTF-8'}">{$node.name|escape:'html':'UTF-8'}</a>


{if $node.children|@count > 0}
<ul>


{foreach from=$node.children item=child name=categoryTreeBranch}
{if $smarty.foreach.categoryTreeBranch.last}
{include file="$tpl_dir./category-tree-branch.tpl" node=$child last='true'}
{else}
{include file="$tpl_dir./category-tree-branch.tpl" node=$child last='false'}
{/if}
{/foreach}
</ul>
{/if}
</li>

Все сдесь понятно, без вопросов..
Но как такое можно сделать в php...

То-есть получить в php выборку категории с вложенными субкатегориями по образу sitemap и category-tree-branch.

Если делать так ..

$kkk = array();
$kkk = Category::getRootCategory()->recurseLiteCategTree();


foreach ($kkk as $key => $v2) {
echo "Ключ: $key; Значение: $v2<br />\n";

}
Результат....
Ключ: id; Значение: 2
Ключ: link; Значение: http://localhost/shop2/index.php?id_category=2&controller=category
Ключ: name; Значение: Главная
Ключ: desc; Значение:
Ключ: children; Значение: Array

Тогда как сделать цикл в цыкле для выборки массивов children..
Или как-то по другому решить.. только в php.

Спасибо!
31 Июль 2017, 20:55:57
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 2991
  • Репутация: +72/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Цикл в цикле - рекурсия. Смотри модуль блок категорий, там видно как с рекурсией выводить дерево категорий.
01 Август 2017, 08:33:38
Ответ #2
  • Старожил
  • ****
  • Сообщений: 352
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо!
Я на основании его и делал, но с выборкой не шло..
Сейчас допилил все нормально.
Спасибо!