当前位置:首页 > 行业动态 > 正文

dedecms如何实现tag标签伪静态

要在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页面。

0