- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
Файл с настройками
$category_set = array (
'allow_num_news' => '1', //Показывать количество новостей
'allow_null_cat' => '0', //Показывать разделы в которых нет новостей
'el_1' => '<div class="mydiv">', //Основной блок. Стандартно - <ul> Свои - <div class="mydiv>"
'c_el_1' => '</div>', //Закрывающий тэг основной блок. Стандартно - </ul> Свои - </div>
'el_2' => '<h3>', //Элемент подменю. Стандартно - <li> Свои - <h3>
'c_el_2' => '</h3>', //Закрывающий тэг элемент подменю. Стандартно - </li> Свои - </h3>
'el_3' => '', //Дополнительно. Стандартно - '' Свои - ''
'c_el_3' => '', //Закрывающий тэг дополнительно. Стандартно - '' Свои - ''
'p_el_1' => '', //Элемент основного блока если есть подкатегории. Стандартно - '' Свои - ''
'p_c_el_1' => '', //Закрывающий тэг основного блока если есть подкатегории. Стандартно - '' Свои - ''
'p_el_2' => '', //Элемент подменю если есть подкатегории. Стандартно - <ul> Свои - ''
'p_c_el_2' => '', //Закрывающий тэг подменю если есть подкатегории. Стандартно - </ul> Свои - ''
'p_el_3' => '<p>', //Элемент дополнительно если есть подкатегории. Стандартно - <li> Свои - <p>
'p_c_el_3' => '</p>', //Закрывающий тэг дополнительно если есть подкатегории. Стандартно - </li> Свои - </p>
'el_add' => '<span style="font-size:10px;"> - ', //Тэг для количества новостей
'c_el_add' => '</span>', //Закрывающий тэг для количества новостей
);
include "Файл с настройками"
function categoryTree($cat_arr,$parent_id){
global $category_set, $DOMAIN,$link_set;
$elAdd = $category_set['el_add'];
$celAdd = $category_set['c_el_add'];
if(is_array($cat_arr) and isset($cat_arr[$parent_id])){
foreach($cat_arr[$parent_id] as $cat){
$el1 = $category_set['el_1'];
$cel1 = $category_set['c_el_1'];
$el2 = $category_set['el_2'];
$cel2 = $category_set['c_el_2'];
$el3 = $category_set['el_3'];
$cel3 = $category_set['c_el_3'];
if ($cat['id_parent'] >0){
$el1 = $category_set['p_el_1'];
$cel1 = $category_set['p_c_el_1'];
$el2 = $category_set['p_el_2'];
$cel2 = $category_set['p_c_el_2'];
$el3 = $category_set['p_el_3'];
$cel3 = $category_set['p_c_el_3'];
$sub = $link_set['sub_for_tree'];
}
$numNews = $cat['num_news'];
if($category_set['allow_num_news'] != 1){
$elAdd = '';
$celAdd = '';
$numNews = '';
}
if($cat['num_news'] != 0){
$catTree .= $el1;
$catTree .= $el2.$el3."<a href='".$DOMAIN."/".$sub."".$link_set['category_for_tree']."/".$cat['id_category']."/'>".$cat['name']."</a>".$elAdd."".$numNews.$celAdd.$cel3.$cel2;
$catTree .= categoryTree($cat_arr,$cat['id_category']);
$catTree .= $cel1;
}
else{
if($category_set['allow_null_cat'] == 1){
$catTree .= $el1;
$catTree .= $el2.$el3."<a href='".$DOMAIN."/".$sub."".$link_set['category_for_tree']."/".$cat['id_category']."/'>".$cat['name']."</a>".$elAdd."".$numNews.$celAdd.$cel3.$cel2;
$catTree .= categoryTree($cat_arr,$cat['id_category']);
$catTree .= $cel1;
}
}
}
}
else return null;
return $catTree;
}
Цель.
Полный, наиполнейший, высший контроль над деревом категорий с подкатегориями. Хорошо, что комментарии написал.
Кто бы, что не говорил, а это изумительно работает. Единственная недоработка, тэг <а> Тоже должен быь в массиве с настройками :-) я так думаю.
з.ы Переделывать лень.