IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    LinkGo插件进行了小小的更新(V0.02),支持了评论内容外部链接跳转页确定

    52txr发表于 2024-05-15 20:29:00
    love 0

    对评论内容进行了跳转,目前对用户昵称的超链接跳转进行探索中。后续的更新应该是设置为可选项,后者添加白名单之类的。当然这也是小陶随便折腾着玩。纯业余选手。

    更新下载

    LinkGov0.0.2 - 蓝奏云下载

    Go页面文章没有发生改变。

    Go页面文件 - 蓝奏云下载

    关于这个插件的由来可以看看前面的链接:Typecho插件LinkGo:外链转内链,实现仿简书外链跳转确定页

    安装教程也在上面这篇文章中,这里就不赘述了。更新完记得重启一下插件。

    当然,图省事的话可以直接把下面的代码沾到LinkGo文件夹下的Plugin.php中进行替换即可:

    <?php
    /**
     * 外部链接自动跳转插件
     * 
     * @package LinkGo
     * @author 陶小桃Blog
     * @version 0.0.2
     * @link https://www.52txr.cn
     */
    class LinkGo_Plugin implements Typecho_Plugin_Interface
    {
        /**
         * 插件激活接口
         */
        public static function activate()
        {
            Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('LinkGo_Plugin', 'convertLinks');
            Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('LinkGo_Plugin', 'convertLinks');
            Typecho_Plugin::factory('Widget_Abstract_Comments')->contentEx = array('LinkGo_Plugin', 'convertCommentLinks');
            return '插件已激活';
        }
    
        /**
         * 插件禁用接口
         */
        public static function deactivate()
        {
            return '插件已禁用';
        }
    
        /**
         * 插件配置面板
         */
        public static function config(Typecho_Widget_Helper_Form $form) {}
    
        /**
         * 个人用户的配置面板
         */
        public static function personalConfig(Typecho_Widget_Helper_Form $form) {}
    
        /**
         * 替换内容中的外部链接
         */
        public static function convertLinks($content, $widget, $lastResult)
        {
            $content = empty($lastResult) ? $content : $lastResult;
            $siteUrl = Typecho_Widget::widget('Widget_Options')->siteUrl;
        
            return preg_replace_callback(
                '/<a\s+(.*?)href="([^"]+)"(.*?)>/i',
                function ($matches) use ($siteUrl) {
                    $url = $matches[2];
                    if (strpos($url, $siteUrl) === false) {
                        // 外部链接,修改为 go.php 跳转
                        return '<a ' . $matches[1] . 'href="' . $siteUrl .  'go?url=' . $url. '"' . $matches[3] . '>';
                    } else {
                        // 内部链接,保持不变
                        return '<a ' . $matches[1] . 'href="' . $url . '"' . $matches[3] . '>';
                    }
                },
                $content
            );
        }
    
        /**
         * 替换评论内容中的外部链接
         */
        public static function convertCommentLinks($content, $widget, $lastResult)
        {
            $content = empty($lastResult) ? $content : $lastResult;
            $siteUrl = Typecho_Widget::widget('Widget_Options')->siteUrl;
        
            return preg_replace_callback(
                '/<a\s+(.*?)href="([^"]+)"(.*?)>/i',
                function ($matches) use ($siteUrl) {
                    $url = $matches[2];
                    if (strpos($url, $siteUrl) === false) {
                        // 外部链接,修改为 go.php 跳转
                        return '<a ' . $matches[1] . 'href="' . $siteUrl .  'go?url=' . $url. '"' . $matches[3] . '>';
                    } else {
                        // 内部链接,保持不变
                        return '<a ' . $matches[1] . 'href="' . $url . '"' . $matches[3] . '>';
                    }
                },
                $content
            );
        }
      
    }

    使用说明

    以小陶网站的某个链接为例,会将外部链接跳转为指定的url。

    跳转的效果

    这个插件有必要吗?

    确实有点招人烦,但其实是有必要的。因为就有网友因为自己文章或者评论区有一些旧的链接跳菠菜了而导致被整改哦。

    虽然跳转到确定页不能直接治本,但是起码还是治标的。

    不良信息整改 - 揽星博客

    整改通知



沪ICP备19023445号-2号
友情链接