parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Mizter Egoist 07.04.2016 09:28 / 07.04.2016 15:02

^if($params.tID){AND p.tID = $params.tID}
Это тип элемента: категория, страница и т. д.

Изменил запрос на приведенный Вами.
В запросе указан ID определенного родителя, у которого два ребенка второго уровня и еще есть третий и четвертый уровень.
@tree[params]
^connect[$connect_string]{
	$tree[^table::sql{
		SELECT t.dsc, IFNULL(h.anc, 0) AS pID
		FROM path AS t
		LEFT JOIN path AS h ON (h.dsc = t.dsc AND h.lvl = 1)
		WHERE t.anc = 297
	}]
	$tree[^tree.hash[pID][
		$.type[table]
		$.distinct(true)
	]]
}
^print[$tree]

@print[tree;pID][locals]
$pID(^pID.int(0))
$cID[$tree.$pID]
$result[]
^if($cID){
	$result[^cID.menu{
		<div>
			<strong>$cID.name</strong>
			^print[$tree]($cID.dsc)
		</div>
	}]
}
На выходе данные следующие:
{ "0":[ {"dsc":"297","pID":"0"} ], "297":[ {"dsc":"337","pID":"297"}, {"dsc":"367","pID":"297"} ] }
Он не достает детей третьего и четвертого уровня.
В этом вся загадка, которая неподвластна моим мозгам.

Вот все дерево целиком:
297
	337
		347
		357
			387
	367
377
	397
Таблица
anc	dsc	lvl
0	297	1
297	297	0
0	337	2
297	337	1
337	337	0
0	347	3
337	347	1
347	347	0
0	357	3
337	357	1
357	357	0
0	367	2
297	367	1
367	367	0
0	377	1
377	377	0
0	387	4
357	387	1
387	387	0
0	397	2
377	397	1
397	397	0