1.phpcms-v9默認情況下只能根據catid獲取當前欄目及子欄目下的文章,但是有時候我們需要如何通過{pc}標簽來獲取全站文章內容的需求,應該怎么做呢?
第一步:在content_tag.class.php文件中添加如下方法:
- /**
- * 列表頁標簽:主要返回的是主表中數據與附表中數據
- * @param $data
- */
- public function lists_all($data) {
- $this->db->set_model(1);//將模型手動指定為文章模型,為什么?因為根據源代碼的套路,模型id的是根據catid來設置的,但是現在獲取的是所有的文章,而不局限于某個欄目,所以只能手動將其設置為文章模型1 //根據模型id獲取當前模型所對應的模型表和數據表 1:文檔模型-news 3:圖片模型-picture 2:下載模型-download
- if(isset($data['where'])) { //如果pc標簽中設置了where屬性,一般情況下不存在
- $sql = $data['where'];
- } else { //如果pc標簽中沒有設置where屬性
- $thumb = intval($data['thumb']) ? " AND thumb != ''" : ''; //如果有thumb屬性
- $sql = "status=99 ".$thumb;//去掉catid條件 //如果當前欄目下不存在子欄目
- }
- $order = $data['order']; //pc標簽中order屬性
- //$sql作為一個條件出現,調用的是model.calss.php文件中的select方法,返回結果集數組,并按照鍵名'id'排序
- $return = $this->db->select($sql, '*', $data['limit'], $order, '', 'id');//從數據庫中獲取主表數據,使用的也是sql語句查詢
- //如果需要在前臺顯示類別名稱,可添加如下代碼
- $TYPES = getcache('type_content','commons');//獲取類別緩存文件,此文件緩存了所有與類別信息相關的信息
- foreach ($return as $key=>$v) {
- $return[$key][typename]=$TYPES[$v['typeid']][name];//給$return中的每篇文章追加一個類別字段
- }
- //echo "<pre>";
- //print_r($return);
- //調用副表的數據
- if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) { //如果pc標簽中設置了moreinfo屬性:是否調用附表數據
- $ids = array();
- //$return為返回的主表數據
- foreach ($return as $v) { //循環主表中的記錄信息:$v-主表中的每條記錄
- if (isset($v['id']) && !emptyempty($v['id'])) {
- $ids[] = $v['id']; //ids[]是主表中排序完成的文章id數組
- } else {
- continue;
- }
- }
- if (!emptyempty($ids)) {
- $this->db->table_name = $this->db->table_name.'_data'; //副表名
- $ids = implode('/',/'', $ids); //以逗號拼接成一個字符串
- $r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');//查詢與主表中數據有關的副表中的數據
- if (!emptyempty($r)) {
- foreach ($r as $k=>$v) { //副表中的數據
- //$return:返回的主表中的數據,主表中的id字段值與附表中的id字段值是對應的,也就是說一篇文章在主表中存儲的id跟在附表中存儲的id的值是相等的
- if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);//主表中數據與副表中數據合并
- } //開源軟件:Vevb.com
- }
- }
- }
- return $return;
- }
第二步:在模板文件中調用:
- {pc:content action="lists_all" num="15" order="id DESC" page="$page"}
- {loop $data $r $val}
- <a href="{$val[url]}">
- <dl class="wenzhangliebiao">
- <dt><img src="{$val[thumb]}" width="132" height="97" alt="盤點蘋果公司的生財之道"></dt>
- <dd>
- <h3>{$val[title]}</h3>
- <p>{str_cut($val[description],220,'...')} </p>
- <div><span>{date('Y年m月d日 H:i:s',$val[inputtime])}</span> <span>{date('H:i',$val[updatetime])}更新</span></div>
- </dd>
- </dl>
- </a>
- {/loop}
- {/pc}
新聞熱點
疑難解答