如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

话说,苏南大叔完成了第一个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插件:markdown链接新开页面 - typecho-plugin

原创typecho插件:markdown链接新开页面(图1-1)

在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里面,这种非侵入式的修改更加好一些。

  【typecho】秘籍文章入口,仅传授于有缘之人  typecho

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。