原创typecho插件:markdown链接新开页面
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
话说,苏南大叔完成了第一个typecho的预约发布的插件后,今天就又写了个简单的小插件,非常简单。就是判断文章内的markdown链接的域名,如果是非本站的话,就给个target="_blank"属性。这个也是刚需吧?
bw
(非本文内容)
在bw博客里面,我也写了类似的功能。相对而已,还真心是typecho的插件机制好。非侵入式。
下面是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插件
在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里面,这种非侵入式的修改更加好一些。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。