在构建网站时,列表页调用标签(tag)是一种常见需求。实现这一功能的方法主要有两种:一种是通过切割副表的 infotags 字段,另一种是从 phome_enewstagsdata 表中提取数据。如果需要使用 tagid 或者进行 tag 静态化处理,那么推荐第二种方法,因为它效率更高。而如果采用 tagname 的动态链接方式,则可以考虑第一种方法。

以下是这两种方法的具体实现步骤:

第一种方法:切割 infotags 字段

这种方法通过解析 infotags 字段来生成标签链接。以下是具体代码实现:


/* 列表页显示tag 开始 */
$tagstr = '';
$infotags_r = explode(',', $r['infotags']);
$tagscount = count($infotags_r);

for ($i = 0; $i < $tagscount; $i++) {
    $tagname = $infotags_r[$i];
    if (empty($tagname)) {
        continue;
    }

    // 如果采用 tagname 的动态或伪静态链接
    /* $tagslink = eReturnRewriteTagsUrl(0, $tagname); */

    // 如果采用 tagid 式的动态链接
    $tt = $empire->fetch1("select * from {$dbtbpre}enewstags where tagname='" . $tagname . "' limit 1");
    if (!$tt['tagid']) {
        continue;
    } else {
        $tagslink = $public_r['newsurl'] . 'e/tags/?tagid=' . $tagid;
    }

    // 如果采用东坡网静态化插件
    /* $tagslink = user_HtmlTagLink($tt['tagid']); */

    // 返回单独一个 tag 的代码
    $tagstr .= '' . $tagname . '';
}

/* 结束 */
$listtemp = '其它代码' . $tagstr . '其它代码';
    

第二种方法:从 phome_enewstagsdata 表中提取

这种方法直接从数据库中的 phome_enewstagsdata 表中提取数据,适用于更复杂的场景。以下是具体代码:


/* 列表页显示tag 开始 */
$tagstr = '';
$tsql = $empire->query("select tagid from {$dbtbpre}enewstagsdata where id='$r[id]' and classid='$r[classid]' ");

while ($tr = $empire->fetch($tsql)) {
    $tt = $empire->fetch1("select * from {$dbtbpre}enewstags where tagid=" . $tr['tagid'] . " limit 1");

    if (!$tt['tagid']) {
        continue;
    } else {
        // 如果采用 tagname 的动态或伪静态链接
        /* $tagslink = eReturnRewriteTagsUrl(0, $tt['tagname'], 1); */

        // 如果采用 tagid 式的动态链接
        $tagslink = $public_r['newsurl'] . 'e/tags/?tagid=' . $tt['tagid'];

        // 如果采用东坡网静态化插件
        /* $tagslink = user_HtmlTagLink($tt['tagid']); */
    }

    $tagstr .= '' . $tt['tagname'] . '';
}

/* 结束 */
$listtemp = '其它代码' . $tagstr . '其它代码';
    

说明:

  • 代码中的 tag 链接有三种方式,可以根据实际需求选择合适的方式。
  • 以上代码需要放入列表内容模板(list.var),并且必须开启“使用程序代码”选项。

通过上述两种方法,您可以根据项目需求灵活选择适合的 tag 调用方式,从而提升网站的功能性和用户体验。