1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
public
function
getCategoryHtml(
$categoryId
=
''
,
$layer
=
''
,
$store_id
= null){
$store_id
=
$store_id
== null ? Mage::app()->getStore()->getId() :
$store_id
;
$categoryM
= Mage::getModel(
'catalog/category'
);
$categoryC
=
$categoryM
->getCollection();
foreach
(
$categoryC
as
$category
) {
$M
= Mage::getModel(
'catalog/category'
)->setStoreId(
$store_id
)->load(
$category
->getEntityId());
$categoryData
[
$M
->getEntityId()][
'id'
] =
$M
->getEntityId();
$categoryData
[
$M
->getEntityId()][
'name'
] =
$M
->getName();
$categoryData
[
$M
->getEntityId()][
'path'
] =
explode
(
'/'
,
$M
->getPath());
}
sort(
$categoryData
);
//print_r($categoryData);
$categoryTree
=
$this
->getChild(
$categoryId
,
$layer
-1,
$categoryData
);
return
$categoryTree
;
}
public
function
getChild(
$parentId
,
$layer
,
$categoryData
){
$parentId
=
$parentId
?
$parentId
:1;
$html
.=
'<ul>'
;
$categoryThisLevel
=
array
();
for
(
$i
= 0;
$i
<
count
(
$categoryData
);
$i
++) {
for
(
$j
= 0;
$j
<
count
(
$categoryData
[
$i
][
'path'
]);
$j
++) {
if
(
$categoryData
[
$i
][
'path'
][
$j
] ==
$parentId
){
if
(
$j
+2 ==
count
(
$categoryData
[
$i
][
'path'
])){
$category
= Mage::getModel(
'catalog/category'
)->load(
$categoryData
[
$i
][
'path'
][
$j
+1]);
if
(
$category
->getName() && !in_array(
$category
->getEntityId(),
$categoryThisLevel
)){
$html
.=
'<li>'
;
$html
.=
'<a href="'
.
$category
->getUrl().
'">'
.
$category
->getName().
'</a><br/>'
;
//echo $layer.')<a href="'.Mage::getUrl('*/*/',array('id'=>$category->getEntityId())).'">'.$category->getName().'</a><br/>';
if
(
$layer
&&
$categoryData
[
$i
][
'path'
][
$j
] !=
end
(
$categoryData
[
$i
][
'path'
])){
$html
.=
$this
->getChild(
$category
->getEntityId(),
$layer
- 1,
$categoryData
);
}
$html
.=
'</li>'
;
$categoryThisLevel
[] =
$category
->getEntityId();
//echo $i.')level: '.$parentId.' id:'.$j.' path:'.$categoryData[$i]['path'][$j].' name:'.$categoryM->getName().'<br/>';
}
}
}
}
}
$html
.=
'</ul>'
;
return
$html
;
}
|