2009年7月10日 星期五

樹狀分類產程式碼生器

樹狀分類產生器

已經有網頁介面了
請網新的頁面看
===============源由===============
由於BLOG文章日益增加
但是GOOGLE blogger本身提供的"分類"
只能做大致上的分類
他只能提供一層的聯結
但是BLOG中的文章主題分類有很多
所以已經不夠使用,連自己都找不太到之前寫的文章
所以就上網找看看有沒有別人寫好的 "樹狀分類"
這樣才能夠快速找到所需要的文章
於是找阿找的...
終於在 finalevil's blog 發現了 "樹狀分類產生器"
他是用JAVA寫的基本上已經能滿足需求,而且能做到多層分類連結
(也應該支援大部分blog)
只是問題來了,如果有好多好多篇文章,每層每篇作連結都要加入好多語法
這樣實在很麻煩
雖然他finalevil's blog 裡面還有提供,自動產生語法的工具
但是發現還是不實用
第一、如果要新增加新的分層分類,之前打的都會不見
第二、如果日後要新增,那就要全部重來
所以最後決定自己寫一個程式碼產生器,方便自己使用
不過最後運行當然還是用他的 顆顆顆
至於最後呈現結果請看右邊的樹狀分類連結(目錄) 顆顆顆

============檔案輸入格式===============
t 為第一層樹狀分類 (可改)
c 為第二層樹狀分類 (可改)
p 為第三層樹狀分類 (可改)
| 為確定樹狀分類哪一層的分隔 (可改)
, 為分隔 "顯示樹狀分類名稱" ,"連結" , "註解" (可改)
; 為斷行,使程式讀取下一個分層 (可改)

==========最後呈現的格式如下==========
//這是此BLOG的目錄,結果如右邊最上方目錄

t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;
t|PHP基礎教學;
c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;
c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;
c|1.基本指令;
c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;
c|3.判斷事件;
c|4.字串處理;
c|5.常用其他;
t|PHP實用文章;
c|0.PHP基礎須知;
p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;
p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;
p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;
c|1.PHP語法索引;
p|PHP函數語法索引,http://fq-story.blogspot.com/2009/07/php.html;
p|PHP MYSQL 函數語法與說明,http://fq-story.blogspot.com/2009/07/php-mysql.html;
c|2.PHP PLUG外掛;
p|Smarty;
t|PHP程序程式碼;
c|PHP資料處理相關;
p|HTML語法測試機;
p|利用php將ncbi的data存入自己的mysql中,http://fq-story.blogspot.com/2009/05/phpncbidatamysql.html;
p|樹狀分類程式碼產生器,http://fq-story.blogspot.com/2009/07/blog-post.html;
c|PHP與網路連線相關;
p|PHP CURL 發送 GET 和 POST 語法,http://fq-story.blogspot.com/2009/05/php-curl-get-post.html;
p|PHP 傳送GET使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-getfsockopen-curl.html;
p|PHP 傳送POST使用fsockopen 取代CURL 取得回應,http://fq-story.blogspot.com/2009/05/php-postfsockopen-curl.html ;
p|PHP 自動更新進入yahoo 拍賣,http://fq-story.blogspot.com/2009/05/php-yahoo.html;
t|PHP Game;
c|RGP舊遊戲資料,http://fq-story.blogspot.com/2009/05/php-rpg-game.html;
p|index.php,http://fq-story.blogspot.com/2009/06/indexphp.html;
P|checkmap.php,http://fq-story.blogspot.com/2009/06/checkmapphp.html;
p|check.php,http://fq-story.blogspot.com/2009/06/checkphp.html;
p|charator.php,http://fq-story.blogspot.com/2009/06/charatorphp.html;
p|gmain.php,http://fq-story.blogspot.com/2009/05/gmainphp.html;
p|battling.php,http://fq-story.blogspot.com/2009/05/battlingphp.html;
p|battle.php,http://fq-story.blogspot.com/2009/05/battlephp.html;
c|GGAME;
t|C語言與C++;
c|C語言學習實錄,http://fq-story.blogspot.com/search/label/C%E8%AA%9E%E8%A8%80%E5%AD%B8%E7%BF%92%E5%AF%A6%E9%8C%84;
p|C語言學習實錄 起源,http://fq-story.blogspot.com/2009/07/c.html;
p|C語言學習實錄之一,http://fq-story.blogspot.com/2009/07/c_08.html;
p|C語言學習實錄之二,http://fq-story.blogspot.com/2009/07/c_09.html;
t|楓之谷,http://fq-story.blogspot.com/2009/06/blog-post.html;
t|BMP和JPEG圖檔格式
c|BMP 點陣圖(Bitmap)檔案格式,http://fq-story.blogspot.com/2009/06/bmp-bitmap.html;
c|JPG/JPEG 檔案格式,http://fq-story.blogspot.com/2009/06/jpgjpeg.html;
t|好用程式;
c|MSN將圖片畫出來,以手繪訊息送出去,http://fq-story.blogspot.com/search/label/MSN;

//ps 所以只要保留以上的格式,以後要增加或修改,都可以簡單使用
==========最後呈現的格式如上==========

這是兩層的 樹狀分類生產器 (java原程式碼 還是用finalevil的)
不過此php現在還沒有放到網路上,所以可能要在自己家弄弄瞜
以後會寫成比較完整方便的網頁
只用到:
t 為第一層樹狀分類 (可改)
c 為第二層樹狀分類 (可改)
ps 這是剛開始寫出來的,但發現兩層還是不夠用,所以下面又寫的一個三層的
所以註解就在下面"三層樹狀分類程式碼生產器"的地方寫
================================
兩層樹狀分類程式碼生產器,php程式碼開始
================================
<?php

$title = 't';

$content = 'c';


$star ='|';

$dis = ',';

$end = ';';

$string ='<p>

t|abc,cba;<br />

c|bbb,ccc;<br />

c|ccc,ddd;<br />

t|eee,fff;<br />

c|ccc,ddd;</p>';

$string = str_replace(" ", "",trim($string));

$string = str_replace("<p>", "",trim($string));

$string = str_replace("<br />", "",trim($string));

$string = str_replace("<br/>", "",trim($string));

$string = str_replace("<br>", "",trim($string));

echo $string;

$check = 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $check == 1){

$check =2;

echo '<li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}elseif($string[$i][0] == $content){

echo '<li><a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $check != 1){

echo '</ul></li><li>';

echo '<a href="'.$string[$i][1][1].'">'.$string[$i][1][0].'</a>';

echo '<ul>';

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>
//此程式沒測試過,請使用下面的(TEST OK)
================================
兩層樹狀分類程式碼生產器,php程式碼結束
================================

接下來是三層的樹狀分類程式碼生產器
"檔案輸入格式中" 都會用到

================================
三層樹狀分類程式碼生產器,php程式碼開始
================================

<?php

/*=====三層樹狀分類程式碼生產器,php程式碼=======*/

$string ='

t|PHP先看,http://fq-story.blogspot.com/2009/05/php.html;

t|PHP基礎教學;

c|APACHE PHP MYSQL in WindowsXP 安裝教學,http://fq-story.blogspot.com/2009/05/phpini.html;

c|0.基本HTML語法,http://fq-story.blogspot.com/2009/05/html.html;

c|1.基本指令;

c|2.重複迴圈,http://fq-story.blogspot.com/2009/05/2.html;

t|PHP實用文章;

c|0.PHP基礎須知;

p|0-a.PHP(簡介),http://fq-story.blogspot.com/2009/05/0-aphp.html;

p|0-b.PHP 安裝 (LINUX),http://fq-story.blogspot.com/2009/05/0-bphp-linux.html;

p|0-c.php.ini 配置詳細解說,http://fq-story.blogspot.com/2009/05/phpini_23.html;
';//將樹狀分類放上面

$string = str_replace(" ", "",trim($string)); //清除空白

$string = str_replace("<p>", "",trim($string)); //清除段落

$string = str_replace("<br />", "",trim($string)); //清除換行

$string = str_replace("<br/>", "",trim($string)); //清除換行

$string = str_replace("<br>", "",trim($string)); //清除換行

/*如果有需要請自行增加*/

$title = 't'; //第一層樹狀分類

$content = 'c'; //第二層樹狀分類

$ps = 'p'; //第三層樹狀分類

$star ='|'; //確定樹狀分類哪一層的分隔

$dis = ','; //為分隔 "顯示樹狀分類名稱" ,"連結" , "註解"

$end = ';'; //為斷行,使程式讀取下一個分層

echo $string;

$t= 1;

$c= 1;

$p= 1;

$string = explode($end,$string);

echo '<style>

ul.mktree li { list-style: none; }ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }ul.mktree li .bullet { padding-left: 15px; }ul.mktree li.liOpen .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/minus.gif) center left no-repeat; }ul.mktree li.liClosed .bullet { cursor: pointer; background: url(http://finalevillee.googlepages.com/plus.gif) center left no-repeat; }ul.mktree li.liBullet .bullet { cursor: default; background: url(http://finalevillee.googlepages.com/bullet.gif) center left no-repeat; }ul.mktree li.liOpen ul { display: block; }ul.mktree li.liClosed ul { display: none; }ul.mktree li { font-size: 12pt; }ul.mktree li ul li { font-size: 10pt; }ul.mktree li ul li ul li { font-size: 8pt; }ul.mktree li ul li ul li ul li { font-size: 6pt; }</style>

<script src="http://finalevillee.googlepages.com/tree.js"></script>';

echo '<ul class="mktree">';

for($i=0;$i<count($string)-1;$i++){

$string[$i] = explode($star,$string[$i]);

$string[$i][0] = trim($string[$i][0]);

$string[$i][1] = explode($dis,$string[$i][1]);

if($string[$i][0] == $title and $t == 1){

$t =2;

echo '<li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==1){

$c =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($string[$i][0] == $content and $c ==2){

if($p ==1){

echo '</li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}elseif($p ==2){

$p =1;

echo '</ul></li><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a>';

}

}elseif($string[$i][0] == $ps and $p ==1){

$p =2;

echo '<ul><li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $ps and $p ==2){

echo '<li><a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.@$string[$i][1][0].'</a></li>';

}elseif($string[$i][0] == $title and $t == 2){

if($c ==2 and $p ==1){

$c =1;

echo '</li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c ==2 and $p ==2){

$c =1;

$p =1;

echo '</ul></li></ul><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}elseif($c==1){

echo '</li><li>';

echo '<a href="'.@$string[$i][1][1].'" title="'.@$string[$i][1][2].'">'.$string[$i][1][0].'</a>';

}

}

}

echo '</ul></li></ul><script>convertTrees();</script>';

?>

==============================
三層樹狀分類程式碼生產器,php程式碼結束
==============================

沒有留言:

張貼留言