MENU

Typecho 开启外链自动转内链,带跳转页

August 13, 2020 • Read: 206 • 代码笔记

把博客中的外部链接转换为网站内链,据说有利于搜索引擎收录。同时支持转换文章和评论中的链接。

上传插件

下载Master Branch Code后上传Typecho根目录/usr/plugins/并解压,随后修改文件夹名称为ShortLinks,最后修改权限为0755。如下命令仅供参考,你可使用宝塔面板等操作。

cd Typecho根目录/usr/plugins/
git clone https://github.com/benzBrake/ShortLinks.git
chown -R www:www ShortLinks
chmod -R 0755 ShortLinks

启用插件

依次进入控制台 - 插件 - 禁用的插件,找到ShortLinks,点击启用。现在刷新文章,查看外链是否转换成功。

修复冲突

实测插件与本主题冲突,需做如下修改,当然若链接可正常转换则无需操作。打开Typecho根目录/usr/plugins/ShortLinks/Plugin.php,分别搜索如下内容并做相应修改,最后禁用再启用插件

搜索

Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx

更改为

Typecho_Plugin::factory('Mirages_Plugin')->excerptEx
搜索

Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx

更改为

Typecho_Plugin::factory('Mirages_Plugin')->excerptEx

修改模板

四套跳转模板,可直接到插件设置选择,效果如下。

新页打开

插件设置里有新标签页打开文章外链的选项,实测评论区并不可以,临时方法是打个 JS 补丁。将以下代码加入到<head>标签中。对于本主题,依次进入控制台 - 外观 - 设置外观 - 主题自定义扩展,将代码加入到自定义 HTML 元素拓展 - 标签: head 头部 (meta 元素后),也可直接加入到主题对应header.php 中的</head>标签前。

<script>
// 评论区外链在新窗口打开
document.addEventListener('DOMContentLoaded', initOuterLinkInComment);
function initOuterLinkInComment() {
    document.querySelectorAll('.comment-list a[href*="/go/"]').forEach(a => a.target = '_blank');
}
</script>

如果你开启了PJAX,可能需要单独加入回调函数。对于本主题,依次进入控制台 - 外观 - 设置外观 - PJAX(BETA) - PJAX RELOAD,将initOuterLinkInComment();3添加进入即可。

Last Modified: October 9, 2020
Archives QR Code
QR Code for this page
Tipping QR Code
0:00