1 前言
博主最近把帝国cms7.5做的美食网站 5VAR美食谷 升版到8.0,主要是想体验更安全的PHP8,但是升版后发现TAG调用失效,经过多方排查,发现是升级后模板未修改,以及PHP8模式下数组需要增加单引号的强制要求导致,经过一番折腾终于处理好了,顺便记录下。
2 操作步骤
2.1帝国CMS TAG设置
2.1.1 登录后台,单击【栏目】菜单【TAGS管理】【设置TAGS参数】子菜单,进入设置TAGS参数界面。
2.1.2 进入设置TAGS参数界面, 前台开启TAGS:设置前台/e/tags/页面是否开启使用。
默认使用的模板:选择tags的列表模板,这里建议选择和文章一样的列表模板;
每页显示信息:设置不指定line情况下默认的每页显示信息数。
2.2 帝国CMS TAGS标签调用
2.2.1 用帝国cms自带的自定义调用工具进行调用:
showtags分类ID,显示数量,每行显示数量,显示排序,只显示推荐,推荐TAGS属性,显示间隔符,是否显示信息数,链接附加参数,链接使用变量/showtags
具体参考:模板==》自动生成标签===》调用tags标签模板
2.2.2 帝国cms使用灵动标签调用当前文章内容tag标签
[e:loop={"SELECT infotags FROM {$dbtbpre}ecms_news WHERE id='$navinfor[id]' LIMIT 1",1,24,0}]
<?php
$tag = '';
$infotags = $bqr['infotags'];
// 统一中文逗号为英文逗号,避免分隔失败
$str = str_replace(',', ',', $infotags);
$t = explode(',', $str);
foreach ($t as $tagName) {
$tagName = trim($tagName);
if ($tagName !== '') {
// 对标签名进行URL编码和HTML实体转义
$encodedTag = urlencode($tagName);
$safeTag = htmlspecialchars($tagName, ENT_QUOTES, 'UTF-8');
$tagslink = $public_r['newsurl'] . "e/tags/?tagname=" . $encodedTag;
$tag .= '<a href="' . $tagslink . '" target="_blank" rel="tag">' . $safeTag . '</a> ';
}
}
echo $tag;
?>
[/e:loop]2.2.3 帝国CMS灵动标签调用TAGS
[e:loop={"SELECT tagid, tagname FROM {$dbtbpre}enewstags ORDER BY num DESC LIMIT 10",0,24,0}]
<li>
<a href="<?=$public_r['newsurl']?>e/tags/?tagid=<?=$bqr['tagid']?>"
target="_blank"
rel="tag noopener noreferrer">
<?=htmlspecialchars($bqr['tagname'], ENT_QUOTES, 'UTF-8')?>
</a>
</li>
[/e:loop]或是我们自己根据tagid来显示
[e:loop={"SELECT tagid, tagname FROM {$dbtbpre}enewstags ORDER BY tagid ASC",0,24,0}]
<li>
<a href="<?=$public_r['newsurl']?>e/tags/?tagid=<?=$bqr['tagid']?>"
target="_blank"
rel="tag noopener noreferrer">
<?=htmlspecialchars($bqr['tagname'], ENT_QUOTES, 'UTF-8')?>
</a>
</li>
[/e:loop]2.3 设置伪静态规则
如果我们采用的伪静态,则需要在Nginx或Apache配置文件中添加伪静态规则。
2.3.1 NGINX伪静态规则
rewrite ^/tags-(.+?)-([0-9]+).html$ /e/tags/index.php?tagname=$1&page=$2 last;2.3.2 apache 伪静态规则
#TAGS信息列表页
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^tags-(.+?)-(.+?)\.html$ /e/tags/index.php?tagname=$1&page=$2
评论 (0)