原创typecho插件:markdown链接新开页面
发布于 作者:苏南大叔 来源:程序如此灵动~话说,苏南大叔完成了第一个typecho的预约发布的插件后,今天就又写了个简单的小插件,非常简单。就是判断文章内的markdown链接的域名,如果是非本站的话,就给个target="_blank"属性。这个也是刚需吧?哈哈。markdown天生据说不足,就有这一条。当然了,在bw博客里面,我也写了类似的功能。相对而已,还真心是typecho的插件机制好。非侵入式。这一点bw博客要学习老前辈啊。
下面是bw里面,我的写法:
(当然了,也许是我不会写bw的插件。知道的朋友可以告诉我)
在inc/script/parsedown/Parsedown.php中的inlineLink函数的最后,return之前:
$tempu=parse_url($Element['attributes']['href']);
if($tempu['host']!=$_SERVER['HTTP_HOST']){
$Element['attributes']['target'] = "_blank";
}
在typecho里面,我是这样写了个类似功能的插件,大家可以看看。
代码是按着“文章内容隐藏”功能的插件,进行改写的。所以代码贴下面了,大家愿意的可以拿走哦。
/usr/plugins/MyMarkdown/Plugin.php
<?php
if (!defined('__TYPECHO_ROOT_DIR__'))
exit;
/**
* 解决markdown格式的一些天生的问题
*
* @package MyMarkdown
* @author sunan
* @version 0.0.1
* @dependence
* @link http://newsn.net
*/
class MyMarkdown_Plugin implements Typecho_Plugin_Interface {
public static function activate() {
Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('MyMarkdown_Plugin', 'dealContent');
}
public static function deactivate() {
}
public static function config(Typecho_Widget_Helper_Form $form) {
}
public static function personalConfig(Typecho_Widget_Helper_Form $form) {
}
public static function dealContent($content, $widget) {
$preg = '/<a .*?href="(.*?)".*?>/is';
preg_match_all($preg, $content, $match);
$domain = @trim($_SERVER['HTTP_HOST']);
foreach ($match[1] as $key => $val) {
if (stripos($val, $domain) === FALSE) {
$content = str_replace($match[0][$key], "<a href='$val' target='_blank'>", $content);
}
}
return $content;
}
}
显然在typecho里面,这种非侵入式的修改更加好一些。



本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
《程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
《程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。
本站的忠实读者小伙伴,正在阅读下面这些文章: