Помогите написать дерево сайта (карту сайта)
Нужно чтобы скрипт работал с my sql.
Дерево вывода под отдельную структура пишеться. Хотя структура вообщем одинакова. Обходишь рекурсивно все разделы. У каждого раздела есть id, parent_topic_id, где id - его id, parent_topic_id - id родителя. Если parent_topic_id = 0, то это корневой раздел
Код:
<?php
//Функции дизайна
function main_block($kontent,$switcher){
if($switcher==true){
if($kontent['parent_viev']=="on"){
$kontent['parent_viev']="Under_pages_enable";
$kontent['switcher']="onClick=\"switcher_under_pages('$kontent[id]')\"";
}
else{
$kontent['parent_viev']="Under_pages_disable";
$kontent['switcher']="";
}
$list_page=<<<COD
<div class="pageblock">
<div class="$kontent[parent_viev]" id="img_block_$kontent[id]" $kontent[switcher]></div>
<!--Контролы-->
<div class="page_controls">
<a title="Удалить страницу" href="" style="background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="Добавить подстраницу" href="" style="background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="Редактировать страницу" href="" style="margin-left: 5px; background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="" href="http://localhost/" style="background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="" href="http://localhost/" style="background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="" href="http://localhost/" style="background-image: url(anthena.png);" class="page_controls_button"></a>
</div>
<div title="" class="page_image"></div>
<div class="page">
<a href=""title="Редактировать страницу" class="contentTreeActivePage">$kontent[title]</a>
</div>
<div class="newpageline"></div>
COD;
}
else{
$list_page=<<<COD
</div>
COD;
}
return ($list_page);
}
//-----------------
function other_block($kontent,$switcher){
if($switcher==true){
$list_page=<<<COD
<!--Скрытое поле-->
<div style="display:none;" class="Under_pages" id="block_$kontent[id]">
COD;
}
else{
$list_page=<<<COD
</div>
COD;
}
return ($list_page);
}
//------------------------
//Подключение к базе данных
include( "db.php" );
//функция генератора дерева
function sitemap($pid, $id) {
global $db,$level,$out;
$level++;
$query="SELECT id,title,pid,parent_viev FROM pages WHERE pid='$pid'";
$query=mysql_query($query, $db);
if (mysql_num_rows($query) > 0) {
while ( $row = mysql_fetch_array($query) ){
$id = $row["id"];
$out=$out.main_block($row,true);
$out=$out.other_block($row,true);
sitemap($id, $level);
$out=$out.other_block("",false);
$out=$out.main_block("",false);
$level--;
}
}
}
sitemap(0, 0);
echo $out;
//mysql_close($db);
?>
//Функции дизайна
function main_block($kontent,$switcher){
if($switcher==true){
if($kontent['parent_viev']=="on"){
$kontent['parent_viev']="Under_pages_enable";
$kontent['switcher']="onClick=\"switcher_under_pages('$kontent[id]')\"";
}
else{
$kontent['parent_viev']="Under_pages_disable";
$kontent['switcher']="";
}
$list_page=<<<COD
<div class="pageblock">
<div class="$kontent[parent_viev]" id="img_block_$kontent[id]" $kontent[switcher]></div>
<!--Контролы-->
<div class="page_controls">
<a title="Удалить страницу" href="" style="background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="Добавить подстраницу" href="" style="background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="Редактировать страницу" href="" style="margin-left: 5px; background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="" href="http://localhost/" style="background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="" href="http://localhost/" style="background-image: url(anthena.png);" class="page_controls_button"></a>
<a title="" href="http://localhost/" style="background-image: url(anthena.png);" class="page_controls_button"></a>
</div>
<div title="" class="page_image"></div>
<div class="page">
<a href=""title="Редактировать страницу" class="contentTreeActivePage">$kontent[title]</a>
</div>
<div class="newpageline"></div>
COD;
}
else{
$list_page=<<<COD
</div>
COD;
}
return ($list_page);
}
//-----------------
function other_block($kontent,$switcher){
if($switcher==true){
$list_page=<<<COD
<!--Скрытое поле-->
<div style="display:none;" class="Under_pages" id="block_$kontent[id]">
COD;
}
else{
$list_page=<<<COD
</div>
COD;
}
return ($list_page);
}
//------------------------
//Подключение к базе данных
include( "db.php" );
//функция генератора дерева
function sitemap($pid, $id) {
global $db,$level,$out;
$level++;
$query="SELECT id,title,pid,parent_viev FROM pages WHERE pid='$pid'";
$query=mysql_query($query, $db);
if (mysql_num_rows($query) > 0) {
while ( $row = mysql_fetch_array($query) ){
$id = $row["id"];
$out=$out.main_block($row,true);
$out=$out.other_block($row,true);
sitemap($id, $level);
$out=$out.other_block("",false);
$out=$out.main_block("",false);
$level--;
}
}
}
sitemap(0, 0);
echo $out;
//mysql_close($db);
?>
Да и если уж пишете цмс, так хоть постарайтесь элементарно отделить код от визуального представлени, реализовать какую-никакую архитектуру...
эт только тестовая функция, это не блок цмс.
Всеравно следует себя приучать писать все и всегда в одном стиле.