本文作者:心月

phpcmsv9中tags標簽頁面純靜態化分頁實現步驟

心月IT博客 12-23
phpcmsv9中tags標簽頁面純靜態化分頁實現步驟摘要:之前分享過在phpcmsv9中實現tags標簽頁面的純靜態化實現方法,不過當初沒有把分頁處理,在phpcmsv9中的全局函數中有分頁導航生成函數所以就沒寫分頁的實現方法了?!酒鋵嵎猪摵筒环猪摬煌袃商帯?、頁面數據量的不同;2、有無分頁導航。

        之前分享過在phpcmsv9中實現tags標簽頁面的純靜態化實現方法,不過當初沒有把分頁處理,在phpcmsv9中的全局函數中有分頁導航生成函數所以就沒寫分頁的實現方法了。不過前段時間有不少網友來問我,tags頁面純靜態頁面分頁怎么處理。所以,博主我覺得還是有必要分享把分頁的實現方法也寫除來吧。

(其實有了分頁導航函數,分頁的實現是非常簡單,只不過現在很多年輕人太懶了,心月博主只好辛苦一點,把分頁的實現也一起分享出來吧)

        在之前分享的tags標簽頁面的純靜態化實現方法,主要以功能實現為主,所以在界面顯示上有些瑕疵,這次隨便把之前的界面顯示問題一起解決了吧。

tags頁面靜態化

修改后的效如同批量生產文章內容頁


【分頁和不分頁不同有兩處】

1、頁面數據量的不同

2、有無分頁導航


把分頁和改造后的代碼一起放上來吧:

(phpcms/modules/content/create_html.php)

(下面這些方法是我自己加上去的,所以你們自己的這個文件中是沒有的,加到create_html.php 文件下面的最后一個方法后面)

    /**
     * 批量生成標簽頁(tag與文章關聯的頁面)
     */
	public function tag()
    {
        if(isset($_POST['dosubmit'])){
			$keyword_db = pc_base::load_model('keyword_model');
            extract($_POST,EXTR_SKIP);
            $page = max(intval($page), 1);
            $offset = $pagesize*($page-1);
            $message = L('start_update');
            $forward = "?m=content&c=create_html&a=tag&pagesize=$pagesize&dosubmit=1&page=$page";
			if(!isset($total)) {
				$total = $keyword_db->count('videonum>2');
				$pages = ceil($total/$pagesize);
			}
            //獲取tag
            $this->html = pc_base::load_app_class('html');
            $keyword_db = pc_base::load_model('keyword_model');
            // $t = $keyword_db->select("videonum>2","*","$offset,$pagesize");
            $t = $keyword_db->select("","*","$offset,$pagesize");
			if (!$t || empty($t)) showmessage(L('create_update_success'),'?m=content&c=create_html&a=tag',200);
  
            foreach ($t as $tags){
                $tag = $tags['keyword'];
                $datas = $this->getTagList($tag);
                if (!empty($datas)) {
                	//$tag = iconv('utf-8', 'gbk', $tag);
                	$this->html->tag('tag', $tag, $datas);
                }else{
                	continue;
                }
             
            }
			$page++;
			$creatednum = $offset + count($data);
			$percent = round($creatednum/$total, 2)*100;
			$message = '【批量更新tags頁面】 '.L('have_update_items',array('total'=>$total,'creatednum'=>$creatednum,'percent'=>$percent));
			$forward = "?m=content&c=create_html&a=tag&dosubmit=1&pagesize=$pagesize&page=$page&pages=$pages&total=$total";
			showmessage($message,$forward,200);
        }else{
            include $this->admin_tpl('create_html_tag');
        }
    }

    //tags列表 有分頁
    public function tagsIndex()
    {
    	if (isset($_POST['dosubmit'])) {
    		$keyword_db = pc_base::load_model('keyword_model');
	    	$this->html = pc_base::load_app_class('html');
	    	$keyword_db = pc_base::load_model('keyword_model');
	    	if (!empty($_POST['total'])) {
	    		$total = intval($_POST['total']);
	    	}else{
	    		$total = $keyword_db->count();
	    	}
	    	
	    	$pagesize = !empty($_POST['pagesize']) && $_POST['pagesize']>1 ? intval($_POST['pagesize']) : 20;
	    	$now = $page = !empty($_POST['page']) && $_POST['page']>0 ? intval($_POST['page']) : 1;
	    	$offset = ($page-1)*$pagesize;
	    	$pages = ceil($total/$pagesize);
	    	$urlrule = '/tag/index.html~/tag/tag_{$page}.html';
	    	//分頁導航
	    	$pageNav = pages($total, $page, $pagesize, $urlrule);
	    	$t = $keyword_db->select("","*","$offset, $pagesize");
	    	if (!empty($t)) {
	    		$size = $this->html->tag_index('tag', 'tag標簽列表', $t, $page, $pageNav);
	    		$page += 1;
		    	$forward = "?m=content&c=create_html&a=tagsIndex&dosubmit=1&pagesize=$pagesize&page=$page&total=$total";
		    	showmessage("共{$total}個標簽/{$pages}頁,已更新{$now}頁",$forward,200);
	    	}else{
	    		$forward = "?m=content&c=create_html&a=tagsIndex";
	    		showmessage("tags列表更新完成",$forward,200);
	    	}

    	}else{
			include $this->admin_tpl('create_html_tag_index');
    	}

    	
    }
    
    //tags列表 不分頁
    public function tagsIndex2()
    {
    	$keyword_db = pc_base::load_model('keyword_model');
    	$this->html = pc_base::load_app_class('html');
    	$keyword_db = pc_base::load_model('keyword_model');
    	$t = $keyword_db->select("","*");
    	$size = $this->html->tag_index('tag', 'tag標簽列表', $t);
    	showmessage('標簽列表頁更新成功,大?。?#39;.sizecount($size));
    }
    
    /**
     * 獲取關鍵詞關聯文章數據
     * @param $tagName
     * @return mixed
     */
    public function getTagList($tagName)
    {
        $tag = $tagName;
        $keyword_db = pc_base::load_model('keyword_model');
        $keyword_data_db = pc_base::load_model('keyword_data_model');
        //獲取標簽id
        $r = $keyword_db->get_one(array('keyword'=>$tag, 'siteid'=>$this->siteid), 'id');
        if (!$r['id']) showmessage('不存在此關鍵字!');
        $tagid = intval($r['id']);
        $page = max($_GET['page'], 1);
        $pagesize = 20;
        $where = '`tagid`=\''.$tagid.'\' AND `siteid`='.$this->siteid.' group by contentid';
        $infos = $keyword_data_db->listinfo($where, '`id` DESC');
        $arrRes['total'] = count($infos);
		if ($arrRes['total']<3) {
        	return null;
        }
        if (is_array($infos)) {
            $datas = array();
            foreach ($infos as $info) {
                list($contentid, $modelid) = explode('-', $info['contentid']);
                $this->db->set_model($modelid);
                $res = $this->db->get_one(array('id'=>$contentid), 'id, title, description, url, inputtime, style', '', 'inputtime desc',' title');
                $res['title'] = str_replace($tag, '<font color="#f00">'.$tag.'</font>', $res['title']);
                $res['description'] = str_replace($tag, '<font color="#f00">'.$tag.'</font>', $res['description']);
                $datas[] = $res;
            }
        }
        $arrRes['info'] = $datas;
        return $arrRes;
    }


(phpcms/modules/content/classes/html.class.php)

    /**
     * 生成tag 文章關聯頁面 有分頁
     * @param $file
     * @param $tagName
     * @param string $data
     * @return bool|int|void
     */
    public function tag($file, $tagName, $data='', $pagesize = 10)
    {
        // $file = PHPCMS_PATH.safe_replace($file).'/'.$tagName.'.html';
        $datas = $data['info'];
        $total = $data['total'];
        $SEO = seo($this->siteid);
        $siteid = $this->siteid;
        $style = $this->sitelist[$siteid]['default_style'];
        $tag = $tagName;
        if (!$total || !trim($tagName)) {
            return false;
        }

        //分頁 array_chunk(input, size)
        //tag與文章關聯的列表分頁在這里處理
        // 通過 array_chunk() 數組函數把與tag關聯的所有文章按照每頁顯示的數量進行拆分
        $pagesize = 1;
        $urlrule = '/tag/'.$tagName.'.html~/tag/'.$tagName.'_{$page}.html';
        $tagDatas = array_chunk($datas, $pagesize);
        $pageNow = 1;
        
        //數據被分組拆分后循環生成頁面
        foreach ($tagDatas as $key => $value) {
        	if ($pageNow>1) {
        		$htmlfile = PHPCMS_PATH.safe_replace($file).'/'.$tagName.'_'.$pageNow.'.html';

        	}else{
        		$htmlfile = PHPCMS_PATH.safe_replace($file).'/'.$tagName.'.html';
        	}
        	$tagData = $value;
        	
        	//分頁導航
	    	$pages = pages($total, $pageNow, $pagesize, $urlrule);
	        
	        ob_start();
	        include template('content','tag_list',$style);
	        $this->createhtml($htmlfile);
	        ob_clean();
	        $pageNow += 1;
        }
        
        return true;
    }
    
    /**
     * 生成tag 文章關聯頁面 沒有分頁
     * @param $file
     * @param $tagName
     * @param string $data
     * @return bool|int|void
     */
    public function tag2($file, $tagName, $data='', $pagesize = 10)
    {
        $file = PHPCMS_PATH.safe_replace($file).'/'.$tagName.'.html';
        $datas = $data['info'];
        $total = $data['total'];
        $SEO = seo($this->siteid);
        $siteid = $this->siteid;
        $style = $this->sitelist[$siteid]['default_style'];
        $tag = $tagName;
        if (!$total || !trim($tagName)) {
            return false;
        }

        //不分頁
        ob_start();
        include template('content','tag',$style);
        return $this->createhtml($file);
      
    }
    
    /**
    * tags列表
    */
    public function tag_index($file, $tagName, $data='',$page=1,$pageNav='')
    {
    	if ($page>1) {
    		$file = PHPCMS_PATH.safe_replace($file).'/tag_'.$page.'.html';
    	}else{
    		$file = PHPCMS_PATH.safe_replace($file).'/index.html';
    	}
        $SEO = seo($this->siteid);
		$tagDatas = $data;
        $siteid = $this->siteid;
        $pages = $pageNav;

        $style = $this->sitelist[$siteid]['default_style'];
        if (empty($tagDatas)) {
            return false;
        }
		$CATEGORYS = $this->categorys;
        ob_start();
        include template('content','tag',$style);
        return $this->createhtml($file);
    }


另外還需要在content模塊里添加兩個后臺模板文件:

文件內容

1、create_html_tag.tpl.php ( 文件位置:phpcms/modules/content/templates/)

<?php
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header','admin');?>
<div class="pad-10">
<div class="explain-col">
<?php echo L('html_notice');?>
</div>
<div class="bk10"></div>
<div class="table-list">
<table width="100%" cellspacing="0">
<form action="?m=content&c=create_html&a=tag" method="post" name="myform">
  <input type="hidden" name="dosubmit" value="1">
  <input type="hidden" name="type" value="lastinput">
<thead>
<tr>
<th align="center" width="150"></th>
<th align="center" width="386"></th>
<th align="center"></th>
</tr>
</thead>
<tbody  height="200" class="nHover td-line">
	<tr>
      <td align="center" rowspan="6">
	</td>
    </tr>
	<tr>
      <td align="center" rowspan="6"></td>
      <td><font color="red"><?php echo L('every_time');?> <input type="text" name="pagesize" value="10" size="4"> <?php echo L('information_items');?></font></td>
    </tr>
	<tr>
      <td><?php echo L('update_all');?> <input type="button" name="dosubmit1" value=" <?php echo L('submit_start_update');?> " class="button" onclick="myform.type.value='all';myform.submit();"></td>
    </tr>
	<?php if($modelid) { ?>
	<tr>
      <td><?php echo L('last_information');?> <input type="text" name="number" value="100" size="5"> <?php echo L('information_items');?><input type="button" class="button" name="dosubmit2" value=" <?php echo L('submit_start_update');?> " onclick="myform.type.value='lastinput';myform.submit();"></td>
    </tr>
	<tr>
      <td><?php echo L('update_time_from');?> <?php echo form::date('fromdate');?> <?php echo L('to');?> <?php echo form::date('todate');?><?php echo L('in_information');?> <input type="button" name="dosubmit3" value=" <?php echo L('submit_start_update');?> " class="button" onclick="myform.type.value='date';myform.submit();"></td>
    </tr>
	<tr>
      <td><?php echo L('update_id_from');?> <input type="text" name="fromid" value="0" size="8"> <?php echo L('to');?> <input type="text" name="toid" size="8"> <?php echo L('in_information');?> <input type="button" class="button" name="dosubmit4" value=" <?php echo L('submit_start_update');?> " onclick="myform.type.value='id';myform.submit();"></td>
    </tr>
	<?php } ?>
	<tr>
      <td></td>
    </tr>
	</tbody>
	</form>
</table>
</div>
</div>
<script language="JavaScript">
<!--
	window.top.$('#display_center_id').css('display','none');
	function change_model(modelid) {
		window.location.href='?m=content&c=create_html&a=show&modelid='+modelid+'&pc_hash='+pc_hash;
	}
//-->
</script>


2、create_html_tag——index.tpl.php ( 文件位置:phpcms/modules/content/templates/)(如果不做tags列表分頁的話可以不用加這個文件)

<?php
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header','admin');?>
<div class="pad-10">
<div class="explain-col">
<?php echo L('html_notice');?>
</div>
<div class="bk10"></div>
<div class="table-list">
<table width="100%" cellspacing="0">
<form action="?m=content&c=create_html&a=tagsIndex" method="post" name="myform">
  <input type="hidden" name="dosubmit" value="1">
  <input type="hidden" name="type" value="lastinput">
<thead>
<tr>
<th align="center" width="150"></th>
<th align="center" width="386"></th>
<th align="center"></th>
</tr>
</thead>
<tbody  height="200" class="nHover td-line">
	<tr>
      <td align="center" rowspan="6">
	</td>
    </tr>
	<tr>
      <td align="center" rowspan="6"></td>
      <td><font color="red">每頁tag數量 <input type="text" name="pagesize" value="20" size="4"> </font></td>
    </tr>
	<tr>
      <td><?php echo L('update_all');?> <input type="button" name="dosubmit1" value=" <?php echo L('submit_start_update');?> " class="button" onclick="myform.type.value='all';myform.submit();"></td>
    </tr>
	<?php if($modelid) { ?>
	<tr>
      <td><?php echo L('last_information');?> <input type="text" name="number" value="100" size="5"> <?php echo L('information_items');?><input type="button" class="button" name="dosubmit2" value=" <?php echo L('submit_start_update');?> " onclick="myform.type.value='lastinput';myform.submit();"></td>
    </tr>
	<tr>
      <td><?php echo L('update_time_from');?> <?php echo form::date('fromdate');?> <?php echo L('to');?> <?php echo form::date('todate');?><?php echo L('in_information');?> <input type="button" name="dosubmit3" value=" <?php echo L('submit_start_update');?> " class="button" onclick="myform.type.value='date';myform.submit();"></td>
    </tr>
	<tr>
      <td><?php echo L('update_id_from');?> <input type="text" name="fromid" value="0" size="8"> <?php echo L('to');?> <input type="text" name="toid" size="8"> <?php echo L('in_information');?> <input type="button" class="button" name="dosubmit4" value=" <?php echo L('submit_start_update');?> " onclick="myform.type.value='id';myform.submit();"></td>
    </tr>
	<?php } ?>
	<tr>
      <td></td>
    </tr>
	</tbody>
	</form>
</table>
</div>
</div>
<script language="JavaScript">
<!--
	window.top.$('#display_center_id').css('display','none');
	function change_model(modelid) {
		window.location.href='?m=content&c=create_html&a=show&modelid='+modelid+'&pc_hash='+pc_hash;
	}
//-->
</script>

分頁效果:

tags標簽純靜態頁面分頁效果


        phpcmsv9 tags頁面純靜態化分頁就分享到這里,有什么不同的可以文章后面留言或者或者返回意見留言。

文章版權及轉載聲明:

本文由 心月IT技術博客 博主整理于 12-23
若轉載請注明原文及出處:http://www.sae4.cn/cms/570.html

分享到:
贊(
發表評論
快捷輸入:

驗證碼

    評論列表 (有 1 條評論,人圍觀)參與討論
    網友昵稱:心月IT博客網友
    心月IT博客網友游客01-16回復
    你好 ,這個代碼我是按查看元素,復制了一上午,結果還是不行,這個代碼分頁好像有問題,可以發一份源碼給我郵箱嗎1051553999@qq.com,謝謝 另外 $where = '`tagid`=\''.$tagid.'\' AND `siteid`='.$this->siteid.' group by contentid'; 這個語法有問題 。$where = '`tagid`=\''.$tagid.'\' AND `siteid`='.$this->siteid; 要這樣 建議 字段keyword 換成字段 pinyin 生成比較好