1.1版本typecho博客文章链接在新窗口打开

折腾 316 字 967 阅 8 评

前两天发现我博客文章内插入的超链接没办法在新页面打开,这让我难以忍受。于是尝试了一下百度介绍了几种方法,大部分是针对1.0版本的,而我使用的是1.1,好不容易找了几个能用的,但实际体验并不好,

  1. header.php页面插入<base target="_blank"/>
    体验:这个方法太暴力了,会给首页的导航栏也加 _blank 。不行。
  2. 用 ShortLinks 插件。
    体验:不知道别人效果怎样,我每次用浏览器第一次进入博客时,文章内的链接并没有被加上 _blank,而是变成了`/go/www.guanhaodong.com/。不行。
  3. 修改 Markdown 语法解析
    体验:百度上大部分是说找到Markdown.php这个文件,然后在 self::$parser->hook('afterParseCode', array('Markdown', 'transerCodeClass'));后面添加 self::$parser->hook('afterParseInline', array('Markdown', 'addLinkTargetBlank')); ,实际上,根!本!就!没!有!self::$parser->hook('afterParseCode', array('Markdown', 'transerCodeClass'));这!行!代!码!

所以基本上搜索出现频率高的方法都不行。

后来我也放弃了,干脆自己一个文件一个文件 ctrl+f 慢慢找,反正就那几个关键字,找类似 <a href = "">的字眼就可以了,这还真被我找到了。

步骤如下:

  • 在typecho源码中找到如下文件

    /var/HyperDown.php
  • 在文件中找到386行的如下代码

    <a href=\"{$url}\">{$escaped}</a>
    
  • 修改为

    <a target=\"_blank\" href=\"{$url}\">{$escaped}</a>
    
  • 在文件中找到398行的代码

    <a href=\"{$self->_definitions[$matches[2]]}\">{$escaped}</a>
    
  • 修改为

    <a target=\"_blank\" href=\"{$self->_definitions[$matches[2]]}\">{$escaped}</a>
    

有需要可以在加上rel=\"nofollow\"

THE END
( 0 )
最后更新 2022-08-05
评论 ( 8 )
OωO
隐私评论
  1. 黑桃三

    学到了

    2021年11月13日 回复
  2. 小彦

    确实有这个问题,Typecho应该加上这个功能的

    2021年11月12日 回复
  3. 呆哥

    我用了 Beblank 这个插件实现的新窗口打开

    2021年11月11日 回复
    1. 若非
      若非 博主大人
      @呆哥

      学到了,这就下载试试看。

      2021年11月11日 回复
  4. 2BROEAR

    可以在header做个判断

    2021年11月11日 回复
    1. 若非
      若非 博主大人
      @2BROEAR

      hhh,这可太为难我了。

      2021年11月11日 回复
  5. 若志奕鑫

    我用的正则~
    $content = preg_replace("/<a href=\"([^\"]*)\" rel="nofollow ugc">/i", "<a href=\"\\1\" target=\"_blank\" rel="nofollow ugc">", $content);

    2021年11月11日 回复
    1. 若非
      若非 博主大人
      @若志奕鑫

      优秀,又学到了。

      2021年11月11日 回复