2012-01-16 3 views
0

У меня есть следующие JSON в файле menu.txt:Populate Выпадающее меню в PHP с JSON

[{ 
"title":"About", 
"url":"/about", 
"nodes":[ 
    {"title":"Staff","url":"/about/staff"}, 
    {"title":"Location","url":"/about/location"} 
]},{ 
"title":"Contact", 
"url":"/contact" 
}] 

Используя следующий Javascript:

var menu = // JSON from menu.txt 

function parseNodes(nodes) { 
    var ul = document.createElement('UL'); 
    for(var i=0; i < nodes.length; i++) { 
     ul.appendChild(parseNode(nodes[i])); 
    } 
    return ul; 
} 
function parseNode(node) { // takes a node object and turns it into a <li> 
    var li = document.createElement('LI'); 
    var a = ('<a href="'+node.url+'">'+node.title+'</a>'); 
    li.innerHTML = a; 
    if(node.nodes) li.appendChild(parseNodes(node.nodes)); 
    return li; 
} 
document.getElementById('menu').appendChild(parseNodes(menu)); 

Я могу создать следующий HTML:

<div id="menu"> 
    <ul> 
     <li><a href="/about">About</a></li> 
      <ul> 
       <li><a href="/about/staff">Staff</a></li> 
       <li><a href="/about/location">Location</a></li> 
      </ul> 
     </li> 
     <li><a href="/contact">Contact</a></li> 
    </ul> 
</div> 

Есть ли простой способ сделать это в PHP, чтобы быть более дружественным к поисковой системе? Предпочтительно PHP-скрипт, который я мог бы включить в мои страницы menu.php?

<?php 

$file = "menu.txt"; 

$json = json_decode(file_get_contents($file), true); 

// ???? 

?> 

ответ

3

Это поможет вам начать;)

<?php 
function parseNodes($nodes) { 
     $ul = "<ul>\n"; 
     foreach ($nodes as $node) { 
       $ul .= parseNode($node); 
     } 
     $ul .= "</ul>\n"; 
     return $ul; 
} 

function parseNode($node) { 
     $li = "\t<li>"; 
     $li .= '<a href="'.$node->url.'">'.$node->title.'</a>'; 
     if (isset($node->nodes)) $li .= parseNodes($node->nodes); 
     $li .= "</li>\n"; 
     return $li; 
} 


$json = '[{ 
"title":"About", 
"url":"/about", 
"nodes":[ 
    {"title":"Staff","url":"/about/staff"}, 
    {"title":"Location","url":"/about/location"} 
]},{ 
"title":"Contact", 
"url":"/contact" 
}]'; 
$nodes = json_decode($json); 

$html = parseNodes($nodes); 
echo $html; 
+0

Совершенный !! Спасибо огромное! – Josiah

Смежные вопросы