ASPCMS全标签速查与实战指南:站点信息、navlist嵌套、contentlist筛选、SEO模板与现代化迁移
ASPCMS 官方文档零散,标签速查抄来抄去且过时。本文系统整理 v2.x 至 v2.7 通用全部标签:基础站点信息、模板引用、navlist 三层嵌套、contentlist 高级筛选、幻灯片自定义、产品调用、SEO 头部、自定义字段,附性能优化(HTML 静态化、Access 转 SQL Server)与迁移到 Typecho/WordPress 的实战路径。
本文目录
- ASPCMS 整体技术架构
- 解析引擎
- 模板文件层次
- 基础站点信息标签
- 路径与 URL
- SEO 三件套
- 公司联系信息
- 统计与版本
- 用户与权限
- 模板引用标签
- 导航菜单标签 navlist
- 基础语法
- 多级菜单嵌套
- 当前菜单高亮
- 文章列表 contentlist
- 基础语法
- 常用属性
- 高级筛选
- 幻灯片 slidelist
- 内置 4 套样式
- 自定义样式(slidelist)
- 产品调用 productlist
- SEO 头部模板示例
- 首页 head
- 列表页 head
- 详情页 head
- 分页 pagelist
- 自定义字段 label
- 性能优化
- HTML 静态化
- 缓存数据库连接
- 压缩输出
- 迁移到现代 CMS
- 为什么应该迁移
- 迁移方案
- 数据迁移步骤
- 常见故障
- 故障 1:标签不解析(输出原文 {aspcms:xxx})
- 故障 2:navlist 嵌套层级超过 3 层不显示
- 故障 3:自定义字段 [news:lable=xxx] 输出空
- 故障 4:[contentlist:date] 格式错乱
- 故障 5:升级到 IIS 10 后所有页面 500
- 故障 6:Access 数据库被锁死
- 常见问题解答
- ASPCMS 还能用吗?
- navlist 与 contentlist 怎么选?
- 能做响应式设计吗?
- SEO 友好吗?
- 能否对接微信公众号或小程序?
- ASPCMS 怎么处理多语言?
- 幻灯片切换效果死板,能换库吗?
- 能否在标签里写条件判断?
- 怎么查询某文章是否被某菜单引用?
- ASPCMS 后台密码忘了怎么办?
ASPCMS 是 2010 年代国内中小企业站点最常见的 ASP 程序之一,凭借“绿色解压即用、模板易改、SEO 友好”的特点积累了大量站长。但 ASPCMS 官方文档零散,标签速查表网上抄来抄去且很多过时。本文系统整理 ASPCMS 在 v2.x 至 v2.7 版本通用的全部标签:基础站点信息、模板引用、栏目导航、文章列表、幻灯片、产品调用、SEO meta、页面分页、自定义字段,并补全每个标签的实战使用场景与排坑细节,配套与现代 PHP CMS(WordPress/PageAdmin)的对应迁移指南。
ASPCMS 整体技术架构
解析引擎
ASPCMS 用 ASP(VBScript)开发,模板文件后缀 .html,里面用 {aspcms:xxx} 占位符。请求进来时 ASP 引擎读模板文件,按内置规则替换占位符为真实数据,最后输出 HTML。
这套机制不能写复杂逻辑(不像 PHP/Smarty 能 if/for),所有计算都在标签内部完成。优点是模板编辑零门槛——会改 HTML 就会改模板。缺点是定制能力受限,复杂场景需要二次开发底层 ASP 类。
模板文件层次
典型 ASPCMS 模板目录结构:
templates/default/
├── images/ # 模板图片资源
├── css/ # 样式
├── js/ # 脚本
├── index.html # 首页模板
├── about.html # 单页模板(关于我们)
├── list.html # 列表页模板(栏目)
├── content.html # 内容页模板(文章详情)
├── product_list.html # 产品列表
├── product_content.html # 产品详情
├── top.html # 顶部公共模板
├── head.html # head 区域模板
├── foot.html # 底部模板
└── left.html # 左侧模板顶部、头部、底部用 {aspcms:top} {aspcms:head} {aspcms:foot} 在主模板里引入。这种“公共模板”机制让多个页面共享 header/footer,改一处全站生效。
基础站点信息标签
路径与 URL
| 标签 | 说明 |
|---|---|
| {aspcms:sitepath} | 网站根目录路径(多语言时不同语言放不同子目录) |
| {aspcms:languagepath} | 当前语言子目录路径 |
| {aspcms:siteurl} | 完整站点 URL(带 http:// 前缀) |
| {aspcms:sitelogo} | 站点 LOGO 图片 URL |
实战注意:siteurl 后面不带斜杠。如果你拼资源路径要小心:{aspcms:siteurl}/css/main.css 是对的,{aspcms:siteurl}css/main.css 会拼出 example.comcss/main.css 错误。
SEO 三件套
| 标签 | 说明 |
|---|---|
| {aspcms:sitetitle} | 站点主标题 |
| {aspcms:additiontitle} | 附加标题(多用于“- 公司名”后缀) |
| {aspcms:sitekeywords} | 站点 meta keywords |
| {aspcms:sitedesc} | 站点 meta description |
这四个标签来自后台“系统-基本设置”。注意 keywords 在 2024 年的 SEO 视角已经无意义(Google 多年前明确表示不参考 meta keywords),但保留无害。
公司联系信息
| 标签 | 说明 |
|---|---|
| {aspcms:companyname} | 公司名称 |
| {aspcms:companyaddress} | 地址 |
| {aspcms:companypostcode} | 邮编 |
| {aspcms:companycontact} | 联系人 |
| {aspcms:companyphone} | 固话 |
| {aspcms:companymobile} | 手机 |
| {aspcms:companyfax} | 传真 |
| {aspcms:companyemail} | 邮箱 |
| {aspcms:companyicp} | ICP 备案号 |
| {aspcms:copyright} | 版权信息 |
典型用法:底部 footer 模板里组合输出。这些字段后台填一次,全站统一显示,改公司电话时不用一个页面一个页面修改。
统计与版本
| 标签 | 说明 |
|---|---|
| {aspcms:statisticalcode} | 统计代码(百度统计、CNZZ 的 JS 片段) |
| {visits:today} | 今日访问量 |
| {visits:yesterday} | 昨日访问量 |
| {visits:month} | 本月访问量 |
| {visits:all} | 累计访问量 |
| {aspcms:version} | 程序版本字符串(带 ASPCMS 字样) |
| {aspcms:versionid} | 纯版本号(如 2.7.3) |
statisticalcode 字段可以填整段 <script>...</script> 代码,输出时不会被转义。版本标签生产环境建议不要露出(让攻击者更难知道你的程序版本针对性扫漏洞),把 {aspcms:version} 删除即可。
用户与权限
| 标签 | 说明 |
|---|---|
| {aspcms:username} | 当前登录用户名(未登录返回空) |
| {aspcms:userright} | 用户权限:0 超管、1 注册用户、2 游客 |
实战用法:根据 userright 显示不同的菜单项。但 ASPCMS 模板没有 if 语法,纯标签实现不出条件渲染。要实现“登录用户显示一组、未登录显示另一组”必须借助 JS 在前端按 cookie 判断,或者直接改底层 ASP 代码。
模板引用标签
| 标签 | 说明 |
|---|---|
| {aspcms:top} | 引入 top.html |
| {aspcms:head} | 引入 head.html |
| {aspcms:comm} | 引入 comm.html(公共组件) |
| {aspcms:left} | 引入 left.html |
| {aspcms:foot} | 引入 foot.html |
| {aspcms:template src=xxx.html} | 引入任意自定义模板片段 |
第六个动态引入很重要——可以建立一套组件化模板。例如把“最新产品”做成 widget_latest_products.html,多个页面引用:
{aspcms:template src=widget_latest_products.html}导航菜单标签 navlist
基础语法
{aspcms:navlist num=5}
<li><a href="[navlist:link]">[navlist:name]</a></li>
{/aspcms:navlist}num=5 限制最多 5 个一级栏目。导航菜单常用属性:
| 属性 | 说明 |
|---|---|
| [navlist:i] | 计数(从 1 开始) |
| [navlist:name] | 栏目中文名称 |
| [navlist:enname] | 栏目英文名称 |
| [navlist:link] | 栏目链接 |
| [navlist:sortid] | 栏目 ID |
| [navlist:subcount] | 子栏目数 |
| [navlist:num] | 栏目下文章数 |
| [navlist:desc] | 栏目描述 |
| [navlist:pic] | 栏目缩略图 |
| [navlist:ico] | 栏目图标 |
| [navlist:cursortid] | 当前栏目 ID(用于高亮当前菜单) |
多级菜单嵌套
{aspcms:navlist}
<li>
<a href="[navlist:link]">[navlist:name]</a>
{aspcms:1navlist type=[navlist:sortid]}
<ul>
<li><a href="[1navlist:link]">[1navlist:name]</a></li>
</ul>
{/aspcms:1navlist}
</li>
{/aspcms:navlist}嵌套层级用 1navlist、2navlist、3navlist 区分。子级标签用 type=[navlist:sortid] 把父级 ID 传下去。最多 3 层。
当前菜单高亮
用 [navlist:cursortid] 与 [navlist:sortid] 比较,但 ASPCMS 模板没有 if 语法。变通方案:用 JS 在页面加载后比较 URL 与菜单 link:
<script>
document.querySelectorAll('.nav a').forEach(function(a) {
if (a.href === location.href) a.classList.add('active');
});
</script>文章列表 contentlist
基础语法
{aspcms:contentlist sort=1 num=10}
<li>
<a href="[contentlist:link]">[contentlist:title]</a>
<span>[contentlist:date style="yyyy-MM-dd"]</span>
</li>
{/aspcms:contentlist}sort=1 表示从“ID 为 1 的栏目”拉数据,num=10 拉 10 条。
常用属性
| 属性 | 说明 |
|---|---|
| [contentlist:i] | 计数 |
| [contentlist:title] | 标题 |
| [contentlist:link] | 详情页链接 |
| [contentlist:author] | 作者 |
| [contentlist:date style="..."] | 发布日期(自定义格式) |
| [contentlist:pic] | 缩略图 |
| [contentlist:desc] | 简介 |
| [contentlist:tag] | 标签 |
| [contentlist:hits] | 点击量 |
| [contentlist:lable=*] | 调用自定义字段值 |
高级筛选
contentlist 支持多种过滤参数:
{aspcms:contentlist sort=1 num=10 order=hits sub=true istop=true}
...
{/aspcms:contentlist}- order=hits:按点击量排序(默认按发布时间倒序)
- sub=true:包含子栏目内容
- istop=true:仅置顶文章
- tag=促销:按标签筛选
- star=3:仅星级 3 的文章
幻灯片 slidelist
内置 4 套样式
{aspcms:slide} # 调用幻灯片 A,默认样式
{aspcms:slidea} # 同上
{aspcms:slideb} # 幻灯片 B
{aspcms:slidec} # 幻灯片 C
{aspcms:slided} # 幻灯片 D这四种内置样式在后台“广告管理-幻灯片”分别配置图片。
自定义样式(slidelist)
{aspcms:slidelist id=1}
<div class="slide-item">
<a href="[slidelist:link]">
<img src="[slidelist:pic]" alt="[slidelist:title]" />
<span>[slidelist:title]</span>
</a>
</div>
{/aspcms:slidelist}id=1/2/3/4 对应后台 4 套幻灯片配置。配合 swiper.js 或者 owl.carousel 这种现代轮播 JS 库实现各种效果。
产品调用 productlist
{aspcms:productlist sort=2 num=8}
<div class="product-card">
<a href="[productlist:link]">
<img src="[productlist:pic]" />
<h3>[productlist:title]</h3>
<p>[productlist:price] 元</p>
</a>
</div>
{/aspcms:productlist}productlist 是 contentlist 的产品类型变体,多了 [productlist:price]、[productlist:model](型号)、[productlist:spec](规格)等产品专属字段。
SEO 头部模板示例
首页 head
<title>{aspcms:sitetitle}{aspcms:additiontitle}</title>
<meta name="keywords" content="{aspcms:sitekeywords}" />
<meta name="description" content="{aspcms:sitedesc}" />列表页 head
<title>{aspcms:sorttitle}-{aspcms:sitetitle}</title>
<meta name="keywords" content="{aspcms:sortkeyword}" />
<meta name="description" content="{aspcms:sortdesc}" />详情页 head
<title>[news:title]-{aspcms:sortname}-{aspcms:sitetitle}</title>
<meta name="keywords" content="[news:keyword]" />
<meta name="description" content="[news:desc]" />
<link rel="canonical" href="{aspcms:siteurl}[news:link]" />canonical 标签 ASPCMS 不内置,需要手写。详情页的标题模式“文章名 - 栏目名 - 站名”是 SEO 经典格式,让搜索引擎一眼看清面包屑层级。
分页 pagelist
{aspcms:pagelist}
<div class="pagination">
[pagelist:firstpage]
[pagelist:prevpage]
[pagelist:numlist]
[pagelist:nextpage]
[pagelist:lastpage]
共 [pagelist:totalpage] 页
</div>
{/aspcms:pagelist}分页样式由 [pagelist:numlist] 自动生成数字按钮链接。CSS 控制视觉。
自定义字段 label
后台“自定义字段”可以增加任意字段(比如“实例链接”“客户案例图”),调用方式:
[news:lable=instance_url]注意是 lable 不是 label(ASPCMS 的拼写错误,沿用至今)。
性能优化
HTML 静态化
ASPCMS 后台“生成-生成 HTML”可以把整站文章生成静态 .html 文件。访问时直接发静态文件,不走 ASP 解析,性能极佳。
静态化的代价是发新文章后必须手动重新生成。可以配置“自动生成”让后台保存文章时自动生成对应静态页。
缓存数据库连接
ASPCMS 默认每次请求都新建数据库连接,用 ADODB 连接池模式提升性能。修改 config/AspCms_Config.asp(具体路径视版本):
conn.Open ConnString
conn.CacheSize = 100 ' 增加缓存条目
Application("conn") = conn ' 复用全局连接压缩输出
IIS 后台开启“HTTP 压缩”让 ASP 输出走 GZIP 压缩。模板 HTML 体积可降 70%。
迁移到现代 CMS
为什么应该迁移
ASPCMS 自 2017 年起官方维护停滞,安全漏洞不修。ASP(不是 .NET)作为运行时已经被微软定位为“legacy 不推荐”,新版 IIS 默认不安装 ASP 模块。继续维护 ASPCMS 的中长期成本远高于迁移。
迁移方案
- Typecho/WordPress:开源 PHP CMS,模板生态成熟,安全更新及时。适合大部分 ASPCMS 站点。
- PageAdmin:国产 .NET CMS,对 ASP 老站迁移友好(同样 Windows 服务器环境)。
- Hugo/Jekyll 静态生成器:内容不频繁更新的企业站可以转纯静态。
数据迁移步骤
导出 ASPCMS 数据库(access .mdb 或 SQL Server),编写脚本把文章、产品、栏目数据 ETL 到目标 CMS 的数据表结构。URL 映射用 nginx/IIS rewrite 做 301 跳转,保留 SEO 权重。
常见故障
故障 1:标签不解析(输出原文 {aspcms:xxx})
三种可能:标签拼写错;ASP 引擎没启用(IIS 配置问题);模板文件被 BOM 污染(用 Notepad++ 转 UTF-8 无 BOM)。
故障 2:navlist 嵌套层级超过 3 层不显示
ASPCMS 模板引擎硬编码支持 1navlist/2navlist/3navlist 三层,第 4 层不识别。需要二开扩展模板引擎,或者扁平化导航结构。
故障 3:自定义字段 [news:lable=xxx] 输出空
三个排查:自定义字段是否在该栏目下启用;字段名拼写(区分大小写);后台填了字段值吗。
故障 4:[contentlist:date] 格式错乱
必须用 style 参数指定格式:[contentlist:date style="yyyy-MM-dd"]。不指定默认是 ASP 系统区域格式,可能拿到“2024/1/15 上午 10:30:00”这种丑陋字符串。
故障 5:升级到 IIS 10 后所有页面 500
IIS 10 默认禁用 ASP。开启:服务器管理器 - 添加角色和功能 - Web 服务器(IIS)- 应用程序开发 - ASP,勾选安装。
故障 6:Access 数据库被锁死
Access 单文件并发数低,PV 上千就会偶尔被锁死。换 SQL Server Express(免费,最大库 10GB),ASPCMS 配置文件改连接字符串即可。
常见问题解答
ASPCMS 还能用吗?
能跑但不建议新项目用。官方停更让漏洞累积,IIS 新版兼容性差。已有站点维护得当能继续,新站建议直接选 Typecho/WordPress。
navlist 与 contentlist 怎么选?
navlist 调栏目(菜单),contentlist 调文章。导航菜单永远用 navlist,列表区域永远用 contentlist。
能做响应式设计吗?
能。模板本身是 HTML/CSS/JS,加 viewport meta + Bootstrap/Tailwind 等响应式框架照常生效。ASPCMS 标签输出的内容与响应式设计无冲突。
SEO 友好吗?
静态化后是友好的。HTML 干净、URL 可重写、可加 canonical 与结构化数据。但缺乏现代 SEO 插件(自动 sitemap、自动 schema),需要手写或者通过 IIS 模块补全。
能否对接微信公众号或小程序?
能但要二开。ASPCMS 没原生 API,需要自己写 ASP 接口。中小项目不建议这么做,工作量大于迁移到带 REST API 的 CMS。
ASPCMS 怎么处理多语言?
多语言通过子目录(/en/)部署独立站点。后台分别配置每个语言的栏目与内容。模板文件可以共用(标签自动按当前语言取数据)。
幻灯片切换效果死板,能换库吗?
能。把 {aspcms:slide} 默认实现替换为 {aspcms:slidelist} 自定义语法,循环输出 HTML 后用 swiper.js / glide.js / splide 等现代轮播库初始化。
能否在标签里写条件判断?
不能。ASPCMS 标签是简单替换不支持 if/else。变通:JS 前端按 cookie 或 dataset 显示不同内容;或者改底层 ASP 类用 Application 变量传递条件。
怎么查询某文章是否被某菜单引用?
没有内置工具。需要 SQL 直接查 articles 表的 sortid 字段(栏目 ID),与 sorts 表关联看路径。
ASPCMS 后台密码忘了怎么办?
用数据库工具直接改 manage 表的 password 字段为 MD5 哈希。MD5("新密码") 用任意在线工具生成。注意 ASPCMS 早期版本用纯 MD5 没加 salt,现代安全标准下应该升级到 bcrypt。
FAQPage + Article AI 引用友好版
ASPCMS 官方文档零散,标签速查抄来抄去且过时。本文系统整理 v2.x 至 v2.7 通用全部标签:基础站点信息、模板引用、navlist 三层嵌套、contentlist 高级筛选、幻灯片自定义、产品调用、SEO 头部、自定义字段,附性能优化(HTML 静态化、Access 转 SQL Server)与迁移到 Typecho/WordPress 的实战路径。
- ASPCMS标签
- ASPCMS模板
- ASPCMS菜单
- ASPCMS
- 网站标签
- navlist
- contentlist
- ASP CMS
- 跨境物流
- ASPCMS教程
title: ASPCMS全标签速查与实战指南:站点信息、navlist嵌套、contentlist筛选、SEO模板与现代化迁移 author: 张文保 (Paul Zhang) — PatPat SEO 经理 url: https://zhangwenbao.com/aspcms-site-common-label.html published: 2017-01-16 modified: 2026-05-16 source-type: First-hand expert commentary language: zh-CN license: CC BY-NC-SA 4.0 (要求保留原文链接与作者归属)
本文标题:《ASPCMS全标签速查与实战指南:站点信息、navlist嵌套、contentlist筛选、SEO模板与现代化迁移》
本文链接:https://zhangwenbao.com/aspcms-site-common-label.html
版权声明:本文原创,转载请注明出处和链接。许可协议: CC BY-NC-SA 4.0