CMSimple Drupal Yii 內容管理系統三方案 - 提升台灣中小企業競爭力

目前位置:   首頁 > Use CMSimple > 延伸使用案例

延伸使用案例


案例1:由台灣樹木解說網站,可以下載五冊的樹木相關資料,因為該項資料是以標準的超文件格式,加上利用 Javascript 程式,能夠在各冊全文資料間,進行搜尋,使用上還算方便.

但是由於該資料各冊之間的圖檔,皆以相同的序號命名,因此造成許多資料更新上的不便,因此若能夠將該資料轉成 CMSimple 為主的內容,將可以隨著各使用者的需求,自行增刪補正相關的內容,使該項資料成為能夠活用的資料.

以下將就資料轉換的過程加以說明:

(a) 將中文說明內容,由 Big5 碼轉為 UTF8 碼.

(b) 利用原資料所提供之中文索引,以線上複製的方式,建立基本的樹木名稱與各冊超文件檔案(以數字命名)之對應表.

(c) 透過對應表,以樹木名稱為<h2>的標註內容,以便在 CMSimple系統中建立第二階之索引標題.

(d) 利用程式,以樹木名稱為序,分別讀取所對應的.htm 檔案,以 preg_replace 的方式,去除不需要的Javascript與各類超文件標註.

(e) 將原先以 images/ 目錄所對應的圖檔位址,以程式搜尋的方式,更換為 bookx/images/,並將原資料各冊之images 圖檔,搬移至 CMSimple 的根目錄下,並以 bookx/images/ 命名,x則分別由1~5等.

(f) 以上(a)之參考程式如下:

<?php
 // 本程式能夠自動進入各子目錄,將內容由Big5轉為UTF8
//./taiwan_tree_data為所欲轉檔的目錄
ls_recursive2("./taiwan_tree_data");
function ls_recursive2($dir)
{
  if (is_dir($dir))
  {
   $files = scandir($dir);
         
   foreach ($files as $file)
   {
     $currentfile = $dir . "/" . $file;
  
     if (is_dir($currentfile))
     {
       if ($file != '.' && $file != '..')
     {
//只會處理.htm檔案
$is_htm=eregi(".htm|.HTM",$file);
if($is_htm)
{
//echo $currentfile;
//echo "<br>";
//這裡的$file為目錄名稱";
}
         ls_recursive2($currentfile);
       }
     }
     else
     {
//只會處理.htm檔案
$is_htm=eregi(".htm|.HTM",$file);
if($is_htm)
{
$fd = fopen( $currentfile, "r" );
$current = fread( $fd, filesize($currentfile));
$after=iconv("BIG-5","UTF-8",$current);
$fd=fopen($currentfile, "w");
fputs($fd,$after);
$fd = fopen($currentfile, "r");
$nowfile = fread($fd, filesize($currentfile));
//echo $nowfile;
fclose($fd);
echo $currentfile." 轉檔完成!";
echo "<br>";
}
     }
   }
  }
}
//this is for php 4.0, php 5.0 has default scandir()
/*
function scandir($dir = './', $sort = 0)
{
 
   $dir_open = @ opendir($dir);
 
   if (! $dir_open)
       return false;
     
     
   while (($dir_content = readdir($dir_open)) !== false)
           $files[] = $dir_content;
 
   if ($sort == 1)
       rsort($files, SORT_STRING);
   else
       sort($files, SORT_STRING);
 
   return $files;
}
*/
?>

(g) 步驟(c)~(e)的參考程式:

<?php
// 本程式乃針對台灣樹木解說資料,將一般超文件資料轉換為 CMSimple 資料
// title_table.txt為各頁面中文標題與數字檔名間的對應
    $fd=fopen("title_table.txt","r");
    $content=fread($fd,filesize("title_table.txt"));
   
// 能夠分隔任何數目之commas 或 space characters,
// 其中也包括 " ", r, t, n 與 f
$keywords = preg_split("/[s,]+/", $content);
//print_r($keywords);
$i=0;
$j=0;
$k=0;
$value=Array();
$index=Array();
foreach($keywords as $keyword)
{
    $modulo=$i%2;
    if($modulo==0)
    {
       
    //echo $modulo;
    //echo "<br>";
        $value[$j]=$keyword;
        //echo $keyword."的index為";
        $j++;
        // 找相對於index的htm檔案,並以value作為<h2></h2>
    }
    else
    {
    //echo $modulo;
    //echo "<br>";
         $index[$k]=$keyword;
        //echo $keyword;
        //echo "<br>";
        $k++;
    }
    $i++;
}
// 依照原書的冊數,加以分類,因此以第一冊為<h1>,其餘$value[$k]則為<h2>,其他相關的註解或延伸說明則列為h3
// 以$k為處理代換的總個數
// 建立<h2>$value[$k]</h2>為頭,加上以$index[$k].htm的內容,全部串成一個大.htm檔
// 以便作為CMSimple的content.htm
$fd=fopen("big.htm","w");
for ($i=0;$i<=$k;$i++)
{
 // 請注意針對每一個檔案加以處理
$content.="<h2>".$value[$i]."</h2><br>";
$fd2=fopen($index[$i].".htm","r");
$tempcontent=fread($fd2,filesize($index[$i].".htm"));
// 刪除javascript
$tempcontent = preg_replace("'<script[^>]*?>.*?</script>'si"," ", $tempcontent);
// 除掉不要的tag與反斜線
$content.=stripslashes(removeEvilTags($tempcontent));
}
// 代換影像位置,其中的bookx,分別為book1~5
$content = str_replace("images", "book1/images",$content);
fputs($fd,$content);
echo "done";
/*
print_r ($index);
echo "<br>";
print_r ($value);
echo "done";
*/
fclose($fd);
fclose($fd2);
function removeEvilTags($source)
{
   $allowedTags = '<h2><h4><img>';
   $source = strip_tags($source, $allowedTags);
   return trim(preg_replace('/<(.*?)>/ie', "'<'.removeEvilStyles('1').'>'", $source));
}
function removeEvilStyles($tagSource)
{
   // 以下的相關格式將會被移除
   $evilStyles = array('font', 'font-family', 'font-face', 'font-size', 'font-size-adjust', 'font-stretch', 'font-variant');
   $find = array();
   $replace = array();
 
   foreach ($evilStyles as $v)
   {
       $find[]    = "/$v:.*?;/";
       $replace[] = '';
   }
   return preg_replace($find, $replace, $tagSource);
  
}
?>

(h) 最後所完成的結果畫面如下:





以上所完成之系統共有 981頁,圖文內容共約 165MB.

加上其他延伸模組後,管理者可以掌握各頁面被瀏覽的情形:


 

Powered by CMSimple_XH| Template: ge-webdesign.de| 登入