在构建网站时,列表页调用标签(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 调用方式,从而提升网站的功能性和用户体验。