要在DedeCMS中实现tag标签的伪静态,可以按照以下步骤操作:
1. 修改系统配置文件
需要修改DedeCMS的系统配置文件,开启URL重写功能。
打开/include/common.inc.php
文件,找到以下代码:
//是否使用文件缓存,默认为0不使用.设置为1将使用后台参数设置进行缓存
$cfg_use_cache = 0;
将其修改为:
//是否使用文件缓存,默认为0不使用.设置为1将使用后台参数设置进行缓存
$cfg_use_cache = 1;
2. 修改核心函数库
接下来,需要修改DedeCMS的核心函数库,以支持tag标签的伪静态。
打开/include/arc.archives.class.php
文件,找到GetArcList
函数,然后在该函数内部添加如下代码:
if(!empty($row['tag']))
{
$row['typelink'] = '<a href="'.$GLOBALS['cfg_basedir'].'tag/'.$row['tag'].'.html">'.$row['tag'].'</a>';
}
这段代码的作用是在文章列表中显示tag标签,并为其生成一个指向对应tag页面的链接。
3. 创建tag控制器
为了实现tag标签的伪静态,需要创建一个用于处理tag页面请求的控制器。
在/plus
目录下创建一个名为tag
的文件夹,然后在该文件夹内创建一个名为index.php
的文件。
在index.php
文件中添加如下代码:
<?php
defined('IN_DEDECMS') or exit('Access Denied');
require_once(DEDEINC.'/arc.listview.class.php');
$tid = isset($_GET['tid']) ? intval($_GET['tid']) : 0;
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$row = 10;
$totalRow = '';
$totalPage = ceil($totalRow / $row);
$page = min($page, $totalPage);
$page = max($page, 1);
$offset = ($page 1) * $row;
$dsql = new DedeSql("#__archives");
$where = " where (type='arc' or type='soft') and state=1 ";
$where .= " and tag like '%".$tid."%'";
$orderby = " order by id desc ";
$join = '';
$field = "id,title,arcrank,senddate,sortrank,litpic,type,tag,description,ismake,isreprint,iscommend,ischange,iscopy,islink,hits,pubdate,mid";
$archivesArr = $dsql>SetQuery($field);
$archivesArr = $dsql>ExecuteNoQuery($where, $join, $orderby, $page, $row, $offset);
$arclists = array();
while ($row = $archivesArr>FetchRow()) {
$row['typelink'] = '<a href="'.$GLOBALS['cfg_basedir'].'arc'.$row['id'].'.html">'.$row['title'].'</a>';
$arclists[] = $row;
}
header("ContentType:text/html; charset=utf8");
include DedeTemplate().'/templets/default/tag.htm';
exit();
?>
这段代码的作用是接收传入的tid
参数(即tag ID),然后根据该参数查询包含该tag的文章,并将查询结果渲染到模板中。
4. 创建tag模板
需要创建一个用于展示tag页面的模板。
在/templets/default
目录下创建一个名为tag.htm
的文件,然后编辑该文件,添加以下内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF8">
<title>Tag {$tid}</title>
</head>
<body>
<h1>Tag: {$tid}</h1>
<ul>
{dede:arclist row='10'}
<li><a href="[field:typelink/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
</body>
</html>
这段HTML代码的作用是展示当前tag下的文章列表。
至此,DedeCMS的tag标签伪静态功能已经实现,现在访问http://yourdomain.com/tag/tagid.html
(其中yourdomain.com
是你的域名,tagid
是具体的tag ID)即可看到对应的tag页面。