Detay için : buraya tıklayın
/**
* Sınırsız kategori fonksiyonu
*
* @author Hakan KAYA
* Emeğe saygı ...
*/
header('Content-Type:Text/html; charset=utf8 ');
// Dbden aldığınız menü veya sayfalar.
$sayfalar = array(
array(
'id' =>1 ,
'menu' => 'Anasayfa',
'ebeveyn' => 0
)
,
array(
'id' =>2 ,
'menu' => 'Hakkımızda',
'ebeveyn' => 0
)
,
array(
'id' =>3 ,
'menu' => 'İletişim',
'ebeveyn' => 0
)
,
array(
'id' =>4 ,
'menu' => 'Biz Kimiz',
'ebeveyn' => 2
)
,
array(
'id' =>5 ,
'menu' => 'Misyonumuz',
'ebeveyn' => 4
)
,
array(
'id' =>6 ,
'menu' => 'Vizyonumuz',
'ebeveyn' => 4
)
);
// Fonksyionumuz
function sayfa_nested($sayfalar , $ebeveyn = 0 , $kademe_pixel = 5 , $i = 0 , $menuler = NULL , $nested = FALSE )
{
// Sayfalar Boşşa boş döndür.
if(empty($sayfalar))
return;
// Eğer fonksiyon içinden çağırılmıyorsa
if (!$nested)
{
// Sayfaları ebeveyn idsi ile yeni dizi oluştur
foreach($sayfalar as $row):
$items[$row['ebeveyn']][] = $row;
endforeach;
}
else
{
// Nested ise gelen sayfaları al
$items = $sayfalar;
}
// Gelen sayfaları aç
foreach($items[$ebeveyn] as $sayfa)
{
// Boşluk hesapla
$bosluk = str_repeat(' ',($i*$kademe_pixel));
// Menuleri değişkene aktar
$menuler .= ''.PHP_EOL;
// Açılan menude bir alt sayfa var ise nested çağır
if (isset($items[$sayfa['id']]))
$menuler = sayfa_nested($items , $sayfa['id'] , $kademe_pixel , ($i+1) , $menuler , TRUE);
}
// Oluşan menüleri return et
return $menuler;
}
echo '';