以下都是帝国CMS专属的系统变量 / 标签:
$class_r$GLOBALS['navclassid']
[!--news.url--]
$bqsr
[e:loop]
目前为止 换到任何其他有名的网站CMS 都会失效。
classpath 和 classurl 是帝国网站管理系统两个完全不同的字段,用法完全不一样,很多人容易搞混。下面来区别它们的用法:
一、主要区别
1. classpath → 栏目相对路径(目录名)
取值:<?=$class_r[$GLOBALS[navclassid]][classpath]?>输出:不带域名、不带后缀,只返回栏目目录,如 life/baike,/pc/ruanjian/
适用:静态页、需要拼接完整 URL 时用
必须加网站前缀才能用:
<a href="[!--news.url--]<?=$class_r[$GLOBALS[navclassid]][classpath]?>/">
<?=$class_r[$GLOBALS[navclassid]][classname]?>
</a>
([!--news.url--] 是帝国默认的网站根地址,如 https://www.zhaozhishi.com/)
2. classurl → 栏目完整链接(系统自动生成)
取值:<?=$class_r[$GLOBALS[navclassid]][classurl]?>输出:完整 URL,含域名 + 路径 + 后缀,如 https://www.zhaozhishi.com/life/baike/
适用:动态页、伪静态、静态页通用,直接用,不用拼接
直接写:
<a href="<?=$class_r[$GLOBALS[navclassid]][classurl]?>">
<?=$class_r[$GLOBALS[navclassid]][classname]?>
</a>
3. 最稳妥万能写法(兼容静态 / 动态 / 伪静态)
用系统函数 sys_ReturnBqClassUrl,自动处理链接,不会错:<a href="<?=sys_ReturnBqClassUrl($class_r[$GLOBALS[navclassid]])?>">
<?=$class_r[$GLOBALS[navclassid]][classname]?>
</a>
二、不同场景的正确写法(直接复制)
1. 当前栏目(封面 / 列表 / 内容页,最常用)完整链接(推荐):
<?=$class_r[$GLOBALS[navclassid]][classurl]?>
相对路径(静态专用):
[!--news.url--]<?=$class_r[$GLOBALS[navclassid]][classpath]?>/
2. 循环内([e:loop] 里,取当前信息所属栏目)
<?=$bqsr[classurl]?> <!-- 完整链接 -->
<?=$bqsr[classpath]?> <!-- 相对路径 -->
3. 指定固定栏目 ID(如 ID=4)
<?=$class_r[4][classurl]?> <!-- 完整链接 -->
<?=$class_r[4][classpath]?> <!-- 相对路径 -->
三、常见坑(你之前可能踩的)
只用 classpath 不加 [!--news.url--] → 链接变成 /life/baike 【——除非你在后台参数设置将网站地址设为具体的网址】,相对路径失效、跳转 404动态 / 伪静态页用 classpath 拼接 → 容易多斜杠、链接错误
混淆 navclassid(当前栏目 ID)和 classid(信息所属栏目 ID)
四、小结
要完整可直接用的链接 → 用 classurl要纯目录路径、静态页拼接 → 用 classpath + [!--news.url--] ——【找知识示例:<a href="[!--news.url--]<?=$class_r[$GLOBALS[navclassid]][classpath]?>/">
<?=$class_r[$GLOBALS[navclassid]][classname]?> </a> 】
怕出错、兼容所有模式 → 用 sys_ReturnBqClassUrl——(它是帝国 CMS 系统自带的 PHP 函数,专门用来生成栏目链接,自动处理静态、动态、伪静态)
相关知识:
1、<?=$class_r[...]?> → 帝国专用变量
2、sys_ReturnBqClassUrl() → 帝国专用函数
3、[e:loop] → 帝国专用万能循环标签