phpcms 如何擷取文章

來源:互聯網
上載者:User

標籤:des   style   class   blog   code   http   

請求地址http://127.0.0.1/phpcms/index.php?m=content&c=index&a=show&catid=6&id=8

先來判斷地址對應的資料表

查閱phpcms v9 資料表結構手冊 http://v9.help.phpcms.cn/html/2010/database_1228/107.html           可以獲知我們要取出news,v9_news_data 兩個表中的資料

下一步就要理解資料是如何取出的

相關的控制器如下

 

這個比較簡單就是調用 content模組下index控制器的show方法 資料表結構手冊

下一步介紹下show()方法如何操作資料庫的

請求參數catid=6&id=6

而我們已經知道文章儲存在 文章模型表 news,news_data表id=6這一行,

catid為欄目id 查詢資料表結構手冊 或者開啟資料庫 可以找到_category欄目表可以輕易發現

每個欄目的文章模型 由modelid欄位定義

再查手冊可以確認modelid對應表model

所以請求參數在show()轉化為參數modelid=1&id=6

至此我們知道要擷取表news,news_data中=6的資訊

下面就是操作資料庫了

$tablename = $this->db->table_name = $this->db->db_tablepre.$MODEL[$modelid][‘tablename‘];$r = $this->db->get_one(array(‘id‘=>$id));if(!$r || $r[‘status‘] != 99) showmessage(L(‘info_does_not_exists‘),‘blank‘);$this->db->table_name = $tablename.‘_data‘;$r2 = $this->db->get_one(array(‘id‘=>$id));$rs = $r2 ? array_merge($r,$r2) : $r;

 取出主表內容和附表內容

其中get_one方法在 mysql.class.php 資料庫實作類別

 $content_output = new content_output($modelid,$catid,$CATEGORYS);
  $data = $content_output->get($rs);判斷是否有緩衝有的話讀取緩衝沒有輸出$rs
  extract($data);這個是php本身的函數將本函數用來將變數從數組中匯入到當前的符號表中

<?php/* 假定 $var_array 是 wddx_deserialize 返回的數組*/$size = "large";$var_array = array("color" => "blue",                   "size"  => "medium",                   "shape" => "sphere");extract($var_array, EXTR_PREFIX_SAME, "wddx");echo "$color, $size, $shape, $wddx_size\n";?>
blue, large, sphere, medium

 再去看模板檔案就比較簡單了

<div class="main">    <div class="col-left">        <div class="crumbs"><a href="{siteurl($siteid)}"><?php echo $title?>首頁</a><span> &gt; </span>{catpos($catid)} 本文</div>        <div id="Article">            <h1>{$title}<br /><span>{$inputtime}&nbsp;&nbsp;&nbsp;來源:{$copyfrom}&nbsp;&nbsp;&nbsp;評論:<a href="#comment_iframe" id="comment">0</a> 點擊:</span><span id="hits"></span></h1>            {if $description}<div class="summary" >{$description}</div>{/if}            <div class="content">            {if $allow_visitor==1}                {$content}

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.