织梦默认的文章上一篇/下一篇链接是纯文本链接,没有 alt 属性,要解决这个问题,你有以下几种方法,从推荐到备选排列:

修改核心文件(最直接、最彻底)
这是最直接的方法,可以让你完全控制链接的HTML结构,但请注意,修改核心文件意味着在下次织梦升级时,你需要重新修改这些文件。
操作步骤:
-
找到核心文件 打开织梦的根目录,找到并编辑以下文件:
include/arc.archives.class.php -
定位函数 在这个文件中,搜索
GetPreNext函数,这个函数就是用来生成上一篇/下一篇链接的。
(图片来源网络,侵删) -
修改代码 你会找到类似下面这样的代码块(版本不同,代码行号可能略有差异):
// 上一篇 if($preRow) { $this->PreNext['pre'] = "上一篇:<a href='".$preRow['filename']."'>".$preRow['title']."</a> "; } // 下一篇 if($nextRow) { $this->PreNext['next'] = "下一篇:<a href='".$nextRow['filename']."'>".$nextRow['title']."</a> "; } -
添加 alt 属性 修改上述代码,为
<a>标签添加alt属性。alt的内容通常使用文章的标题,这有助于SEO。修改后的代码示例:
// 上一篇 if($preRow) { // 为链接添加 alt 属性,值为上一篇文章的标题 $this->PreNext['pre'] = "上一篇:<a href='".$preRow['filename']."' alt='".$preRow['title']."'>".$preRow['title']."</a> "; } // 下一篇 if($nextRow) { // 为链接添加 alt 属性,值为下一篇文章的标题 $this->PreNext['next'] = "下一篇:<a href='".$nextRow['filename']."' alt='".$nextRow['title']."'>".$nextRow['title']."</a> "; } -
保存文件 保存
arc.archives.class.php文件。 -
更新网站缓存 登录你的织梦后台,进入“系统” -> “更新缓存”,点击“开始更新缓存”,这一步非常重要,否则修改可能不会立即生效。
刷新你的文章页面,查看源代码,你会发现上一篇/下一篇的链接已经成功添加了 alt 属性。
使用JavaScript动态添加(非侵入式)
如果你不想修改核心文件,可以使用JavaScript在页面加载时为这些链接动态添加 alt 属性,这种方法的好处是升级织梦时无需改动。
操作步骤:
-
在文章模板中添加JS代码 打开你的文章内容页模板文件,通常位于
templets/default/article_article.htm(根据你的模板路径可能不同)。 -
在底部添加JS脚本 在
</body>标签之前,添加以下<script>代码:<script> document.addEventListener('DOMContentLoaded', function() { // 获取所有class为"prenext"的元素下的a标签 // 注意:请根据你实际的HTML结构调整选择器 var preLink = document.querySelector('.prenext a.prenexta'); var nextLink = document.querySelector('.prenext a.next'); // 为上一篇链接添加alt属性 if (preLink) { preLink.setAttribute('alt', '查看上一篇:' + preLink.innerText); } // 为下一篇链接添加alt属性 if (nextLink) { nextLink.setAttribute('alt', '查看下一篇:' + nextLink.innerText); } }); </script>说明:
document.querySelector是用来查找元素的,你需要根据你模板中实际的HTML结构来修改选择器(如.prenext a.prenexta)。preLink.innerText获取链接的文本内容(即文章标题),并将其作为alt属性的值。
-
保存模板文件 保存模板文件并重新生成文章页面。
修改模板文件(如果模板结构允许)
有些模板可能会将上一篇/下一篇的调用封装在自定义的标签里,或者其HTML结构比较清晰,你可以尝试直接修改模板文件。
操作步骤:
-
打开文章模板 同样,打开
templets/default/article_article.htm。 -
查找调用代码 查找调用上一篇/下一篇的代码块,它看起来可能像这样:
<div class="prenext"> {dede:prenext get='pre'/} {dede:prenext get='next'/} </div>或者更直接的形式:
<div class="prenext"> 上一篇:{dede:field name='pretitle' /}<br /> 下一篇:{dede:field name='nexttitle' /} </div> -
修改为自定义形式 如果模板使用的是
{dede:prenext/}标签,直接修改它来添加alt属性比较困难,因为它最终也是由arc.archives.class.php里的GetPreNext函数生成的,所以这种方法更适用于第二种情况。对于类似第三种情况的代码,你可以手动将其修改为:
<div class="prenext"> <?php $pretitle = $pre['title']; // 获取上一篇标题 $nexttitle = $next['title']; // 获取下一篇标题 if($pretitle) echo "上一篇:<a href='".$pre['filename']."' alt='".$pretitle."'>".$pretitle."</a><br />"; if($nexttitle) echo "下一篇:<a href='".$next['filename']."' alt='".$nexttitle."'>".$nexttitle."</a>"; ?> </div>这种方法需要你有一定的PHP基础,并且确保
$pre和$next这两个变量在你的模板作用域内是可用的。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 修改核心文件 | 效果最好,最彻底,对SEO最友好 | 升级织梦时需重新修改 | ★★★★★ |
| 使用JavaScript | 非侵入式,不修改核心文件,升级无忧 | 依赖JS,可能被禁用,对SEO帮助不如直接HTML | ★★★★☆ |
| 修改模板文件 | 可控性强,不修改核心文件 | 依赖模板结构,需要PHP知识,通用性差 | ★★☆☆☆ |
对于绝大多数用户,强烈推荐使用方法一,虽然修改了核心文件,但这是最规范、最有效的方法,只要你做好记录,在升级时重新修改一下,就能一劳永逸地解决这个问题。
