在 DedeCMS 中,手机模板和电脑模板是分开的,因此链接的处理也需要特别注意,以确保用户在手机端访问时,所有链接都正确指向手机版的页面,而不是跳转到电脑版。
核心问题:为什么需要特殊处理?
默认情况下,DedeCMS 的标签(如 {dede:arclist})生成的链接是电脑版的,如果你的网站开启了 “手机端自动跳转” 功能,当用户用手机访问电脑版链接时,系统会自动重定向到对应的手机版页面,但这种方式存在两个问题:
- 用户体验不佳:会经历一次页面跳转,加载速度变慢,且 URL 地址栏可能会先显示电脑版地址,然后才跳转到手机版地址。
- 不利于 SEO:搜索引擎在抓取时可能会认为这是两个重复的内容,不利于权重集中。
最佳实践是在手机模板中直接生成手机版的链接,避免不必要的跳转。
解决方案:使用手机专用标签
DedeCMS 从 V5.7 版本开始,引入了专门用于手机模板的标签,其核心是在普通标签后加上 mobile 参数。
文章/列表页链接 ({dede:arclist} 和 {dede:list})
这是最常用的情况,在手机模板中,你需要使用 mobile='yes' 参数。
电脑版模板中的写法:
{dede:arclist titlelen='30' row='5'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
这里的 [field:arcurl/] 会生成类似 https://www.yoursite.com/a/2025/1234.html 的电脑版链接。
手机版模板中的正确写法:
{dede:arclist titlelen='30' row='5' mobile='yes'}
<li>
<!-- 使用 [field:mobileurl/] 来获取手机版链接 -->
<a href="[field:mobileurl/]">[field:title/]</a>
</li>
{/dede:arclist}
这里的 [field:mobileurl/] 会直接生成类似 https://www.yoursite.com/m/a/2025/1234.html 的手机版链接。
标签解析:
{dede:arclist mobile='yes'}: 声明这是一个手机端的列表标签。[field:mobileurl/]: 这是关键,它专门用于获取当前文章在手机版的 URL,如果文章没有对应的手机版页面,它可能会回退到电脑版链接或为空,具体取决于系统配置。
页链接 ({dede:field name='arcurl'})
页(article_article_m.htm),获取当前文章链接也需要使用手机版专用标签。
电脑版模板中的写法:
<a href="{dede:field name='arcurl'/}">分享本文</a>
手机版模板中的正确写法:
<a href="{dede:field name='mobileurl'/}">分享本文</a>
同样,{dede:field name='mobileurl'/} 用于获取当前手机文章页面的链接。
栏目链接 ({dede:type})
在栏目列表页或文章内容页,调用栏目链接时也需要使用手机版标签。
电脑版模板中的写法:
{dede:type}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:type}
手机版模板中的正确写法:
{dede:type mobile='yes'}
<!-- 使用 [field:mobiletypelink/] 来获取手机版栏目链接 -->
<a href="[field:mobiletypelink/]">[field:typename/]</a>
{/dede:type}
分页链接 ({dede:pagelist})
列表页的分页也需要是手机版的。
电脑版模板中的写法:
{dede:pagelist listsize='4'/}
手机版模板中的正确写法:
{dede:pagelist listsize='4' mobile='yes'/}
加上 mobile='yes' 后,分页链接会自动指向手机版的列表页。
实际操作步骤
假设你已经配置好了手机模板(在后台“模板” -> “手机模板”中设置),现在需要修改你的手机模板文件(如 index_m.htm, list_article_m.htm, article_article_m.htm 等)。
- 打开手机模板文件:使用 FTP 或后台文件管理器,打开你需要修改的手机模板文件。
- 查找并替换链接标签:
- 找到所有
{dede:arclist}标签,在其中添加mobile='yes'属性,并将[field:arcurl/]替换为[field:mobileurl/]。 - 找到所有
{dede:list}标签,在其中添加mobile='yes'属性。 - 找到所有
{dede:field name='arcurl'},将其替换为{dede:field name='mobileurl'}。 - 找到所有
{dede:type}标签,在其中添加mobile='yes'属性,并将[field:typelink/]替换为[field:mobiletypelink/]。 - 找到所有
{dede:pagelist}标签,在其中添加mobile='yes'属性。
- 找到所有
- 保存文件:保存修改后的手机模板文件。
- 更新缓存:登录 DedeCMS 后台,点击“系统” -> “一键更新网站” -> “更新HTML”,然后选择“更新手机主页”或“更新所有手机页面”,生成新的手机页面。
重要前提:确保手机端目录正确
为了让上述标签正常工作,你的 DedeCMS 必须正确配置了手机端目录。
-
后台设置:
- 登录 DedeCMS 后台。
- 进入“系统” -> “系统基本参数” -> “核心设置”。
- 找到 “手机版访问地址” 选项。
- 确保它被正确设置,通常有两种格式:
- 子目录形式(推荐):
https://www.yoursite.com/m/ - 二级域名形式:
https://m.yoursite.com/
- 子目录形式(推荐):
- 保存设置。
-
伪静态规则:
- 为了手机端有更好的 URL,通常会为手机目录(如
/m/)配置伪静态规则。 - Nginx 伪静态规则示例:
location ~* ^/m { if (!-e $request_filename) { rewrite ^/m/(.*)$ /m/index.php?$1 last; } } - Apache 伪静态规则示例 (
.htaccess):RewriteEngine On # 手机端伪静态规则 RewriteBase / RewriteRule ^m/(.*)$ /m/index.php?$1 [L,QSA]
- 为了手机端有更好的 URL,通常会为手机目录(如
| 需求 | 电脑版标签 | 手机版标签 |
|---|---|---|
| 文章列表链接 | [field:arcurl/] |
[field:mobileurl/] (需在 {dede:arclist mobile='yes'} 中使用) |
| 当前文章链接 | {dede:field name='arcurl'/} |
{dede:field name='mobileurl'/} |
| 栏目链接 | [field:typelink/] |
[field:mobiletypelink/] (需在 {dede:type mobile='yes'} 中使用) |
| 分页链接 | {dede:pagelist/} |
{dede:pagelist mobile='yes'/} |
记住这个核心原则:在手机模板文件中,凡是涉及到生成 URL 的地方,都要使用带 mobile 参数的标签和对应的 mobileurl 字段。 这样就能确保你的手机模板所有链接都直接指向手机版页面,提供流畅的用户体验和良好的 SEO 表现。
