如果不理解可以直接查看产品汇的标签页面。前段时间把discuz原本的标签聚合页修改了一下,原本的标签聚合页只显示100条最新的标签,把它修改成了所有标签都显示,并加上分页。
修改方法:
1、修改/source/module/misc/misc_tag.php文件。
查找$navtitle = $metakeywords = $metadescription = $taglang;
其后面一直到以下代码的重合部分整体替换掉:
$viewthreadtags = 500;
//获取tag总数
$total = $query = C::t('common_tag')->fetch_all_by_status(0);
$total = count($total);
//获取分页总数
$totalPageNum = ceil($total/$viewthreadtags);
//获取当前页
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
//显示前5页
$minPage = $page - 5;
if($minPage < 1){
$minPage = 1;
}
$pageStyle = '';
for($i=$minPage;$i<$page;$i++){
$pageStyle .= "<a href=\"/misc.php?mod=tag&page={$i}\">{$i}</a>";
}
//显示后6页
$maxPage = $page + 5;
if($maxPage > $totalPageNum){
$maxPage = $totalPageNum;
}
for($i=$page;$i<=$maxPage;$i++){
if($i == $page){
$pageStyle .= "<strong>{$i}</strong>";
}else{
$pageStyle .= "<a href=\"/misc.php?mod=tag&page={$i}\">{$i}</a>";
}
}
$tagarray = array();
$skipNum = ($page - 1)*$viewthreadtags;
$query = C::t('common_tag')->fetch_all_by_status(0, '', $skipNum, $viewthreadtags, 0, 'DESC');
foreach($query as $result) {
$tagarray[] = $result;
}
include_once template('tag/tag');
}
2、修改template/default/tag/tag.htm文件
<div class="taglist mtm mbm">
<!--{if $tagarray}-->
<!--{loop $tagarray $tag}-->
<a href="tag-$tag[tagid].html" title="$tag[tagname]" target="_blank" class="xi2">$tag[tagname]</a>
<!--{/loop}-->
<!--{else}-->
<p class="emp">{lang no_tag}</p>
<!--{/if}-->
</div>
在其后添加<div class="pg" style="margin:20px 0;">{$pageStyle}</div>
作用是显示分页码按钮。
这样就可以把网站所有的标签按照分页显示,但是自己觉得还是有点问题,就是有些标签并没有文章,后续在优化一些,只读取哪些有文章关联的标签。