头像
论坛管理员

主题作者

论坛管理员
引用
可下载插件 外链监控插件
一、插件介绍

Typecho外链监控插件:LinkCare 插件提供外链的全方位控制和监管,添加 rel 属性、添加/移除UTM 参数、中转页、黑名单、添加CSS类名、添加标题属性、referer控制、添加svg后缀、取消链接显示纯文本、添加自定义参数以及可视化监控统计等功能。

GitHub
TGU-HansJack/typecho-linkcare-plugin
点击查看项目 · 在新窗口打开
StarsForks


目前使用的是图形规则引擎,很方便添加配置,可以提取JSON和导入配置文件。
图片

由于本人对外链相关知识薄弱,很多设置也都是通过AI进行,咨询需要实现的基础功能 -> 界面样式和基础功能 -> 扩展功能咨询和实现。

比如目前通过 IF / ELSE / ELSE IF / 嵌套规则引擎,实现对目标域名、完整URL、Rel属性、URL路径、查询参数进行匹配值设置(包含/不包含、等于/不等于...)

可以修改Rel属性、添加UTM参数、新窗口打开/强制HTTPS、添加悬停提示、添加svg图标、添加黑名单、跳转转页、移除跟踪参数/自定义移除参数、移除UTM参数等等。


二、测试预览

1、插件设置

规则通过JSON配置,支持导入配置和导出

你可以:
图片

2、结果如下
图片


三、安装说明

1. 下载插件并解压到 Typecho 插件目录 /usr/plugins/,确保文件夹名为 LinkCare
2. 登录 Typecho 后台,进入「控制台」-「插件」页面
3. 启用 LinkCare 插件
4. 在主题模板适当位置添加调用代码:

代码: 全选

<?php $this->content = LinkCare_Plugin::LinkCare($this->content); echo $this->content; ?>
或者在主题的 functions.php 中添加(不建议):

代码: 全选

Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('LinkCare_Plugin', 'LinkCare');
详细调用方法看:添加文章/页面渲染

1、插件启用自行设置参数

1. 添加规则引擎:见 参数说明
2. 添加跳转页链接、缓存时间、日志记录(已弃用)

2、添加文章渲染

修改主题 post.php 中关于文章内容的输出:

代码: 全选

<?php 
// Step1: 获取文章内容
$content = $this->content;

// Step2: 交给 LinkCare 插件先处理外链 (重要)
$content = LinkCare_Plugin::LinkCare($content);

// Step3: LabelMark 处理 (其他插件,比如我的LabelMark)
$content = Typecho_Plugin::factory('Content')->LabelMark($content);

// Step4: 其他处理(表情、短代码)
echo reEmoPost(
    ShortCode(
        $content, 
        $this, 
        $this->user->hasLogin(), 
        $this->fields->ArticleType
    )
); 
?>
为了确保插件卸载的时候不会报错:

代码: 全选

<?php 
// Step1: 获取文章内容
$content = $this->content;

// Step2: 判断 LinkCare 插件是否启用并处理外链
$plugins = Typecho_Plugin::export();
if (isset($plugins['activated']['LinkCare'])) {
    $content = LinkCare_Plugin::LinkCare($content);
}
// Step3: LabelMark 处理
$content = Typecho_Plugin::factory('Content')->LabelMark($content);

// 然后应用你原有的其他处理函数
echo reEmoPost(ShortCode($content, $this, $this->user->hasLogin(), $this->fields->ArticleType)); 
?>

详细渲染教程

1. 检查插件是否激活并处理内容:

代码: 全选

// 检查 LinkCare 插件是否激活
$plugins = Typecho_Plugin::export();
if (isset($plugins['activated']['LinkCare'])) {
    // 使用 LinkCare 处理内容中的链接
    $content = LinkCare_Plugin::LinkCare($content);
}

2. 处理单个链接:

代码: 全选

function processLinkWithLinkCare($url, $text = '') {
    $plugins = Typecho_Plugin::export();
    if (isset($plugins['activated']['LinkCare'])) {
        $linkHtml = '<a href="' . $url . '">' . $text . '</a>';  
        $processedHtml = LinkCare_Plugin::LinkCare($linkHtml);
        return $processedHtml;
    }
    return '<a href="' . $url . '">' . $text . '</a>';
}

代码: 全选

// 使用示例
$link = processLinkWithLinkCare('https://example.com', '示例链接');
echo $link;

3. 在模板中的完整应用示例:

代码: 全选

<?php
function processLinkWithLinkCare($url, $text = '') {
    $plugins = Typecho_Plugin::export();
    if (isset($plugins['activated']['LinkCare'])) {
        $linkHtml = '<a href="' . $url . '">' . $text . '</a>';
        return LinkCare_Plugin::LinkCare($linkHtml);
    }
    return '<a href="' . $url . '">' . $text . '</a>';
}
?>

代码: 全选

<?php 
$processedLink = processLinkWithLinkCare($link['url'], $link['name']);
preg_match('/<a\s+([^>]+)>(.*?)<\/a>/i', $processedLink, $linkMatches);
$linkAttrs = isset($linkMatches[1]) ? $linkMatches[1] : 'href="' . $link['url'] . '"';
$linkText = isset($linkMatches[2]) ? $linkMatches[2] : $link['name'];
?>
<a <?php echo $linkAttrs; ?>><?php echo $linkText; ?></a>

4. 处理文章内容中的链接:

代码: 全选

<?php 
$content = $this->content;
$plugins = Typecho_Plugin::export();
if (isset($plugins['activated']['LinkCare'])) {
    $content = LinkCare_Plugin::LinkCare($content);
}
if (array_key_exists('LabelMark', $plugins['activated'])) {
    $content = Typecho_Plugin::factory('Content')->LabelMark($content);
}
echo $content;
?>

具体示例
图片
图片

备注:使用 BearSimple 主题的直接替换下面的代码即可:
► 显示剧情透露
感谢论坛管理团队
引用
Re: 外链监控插件
高质量插件 这个挺不错的
头像
论坛管理员

主题作者

论坛管理员
引用
Re: 外链监控插件
Jason 写了: 2025年 10月 22日 21:41

高质量插件 这个挺不错的

已经停止维护了,因为写的排版太乱,功能有点不兼容很多主题。如果喜欢可以Fork到自己仓库

感谢论坛管理团队
回复

创建账户或登录以参与讨论

您需要成为会员才能发表回复

创建账户

还不是会员?注册以加入我们的社区

会员可以发起自己的主题并订阅主题

免费注册,只需一分钟

注册

登录