1.1版本typecho博客文章链接在新窗口打开
前两天发现我博客文章内插入的超链接没办法在新页面打开,这让我难以忍受。于是尝试了一下百度介绍了几种方法,大部分是针对1.0版本的,而我使用的是1.1,好不容易找了几个能用的,但实际体验并不好,
- 在
header.php
页面插入<base target="_blank"/>
。
体验:这个方法太暴力了,会给首页的导航栏也加_blank
。不行。 - 用 ShortLinks 插件。
体验:不知道别人效果怎样,我每次用浏览器第一次进入博客时,文章内的链接并没有被加上_blank
,而是变成了`/go/ifblog.cn/。不行。 - 修改 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\"
赞( 3 )
最后更新 2021-11-10
学到了
确实有这个问题,Typecho应该加上这个功能的
我用了 Beblank 这个插件实现的新窗口打开
学到了,这就下载试试看。
可以在header做个判断
hhh,这可太为难我了。
我用的正则~
$content = preg_replace("/<a href=\"([^\"]*)\">/i", "<a href=\"\\1\" target=\"_blank\">", $content);
优秀,又学到了。