Typecho ShortCode 短代码插件

[TOC]

Typecho ShortCode 是一款用于自定义短代码的Typecho插件
GitHub 地址 | GitHub 下载

注意:
由于Typecho目前自带的MarkDown解析不支持许多HTML标签(比如 voide audio 标签等等),可能影响你使用ShortCode短代码
建议使用其他的MarkDown解析,例如:Parsedown插件)等等

函数说明

使用以下函数来自定义短代码,均为公开静态

ShortCode::set

注册短代码,返回一个ShortCode实例

参数名类型说明
namesmixed短代码名称,可以一个字符串或字符串数组
callbacksmixed短代码对应回调函数,可以一个回调函数或回调函数数组
overriedbool覆盖已存在的短代码设置
可选,默认false

ShortCode::get

获取已注册短代码列表,返回数组,格式例如:

array{
    [短代码名称] => 回调函数或回调函数名
    ...
}

ShortCode::remove

移除已注册的短代码,返回一个ShortCode实例

参数名类型说明
namesstring短代码名称
callbackscallback只有回调函数相同,短代码才会被移除
可选,默认null

ShortCode::removeAll

移除所有已注册短的代码,返回一个ShortCode实例

ShortCode::isForce

是否强制处理内容,返回布尔值,当前设置
使用此插件后Markdown或AutoP失效,使用此函数,并传入true

参数名类型说明
boolbool可选,默认null

ShortCode::handle

字符串处理,返回字符串

参数名类型说明
contentstring要处理的字符串

短代码回调函数参数说明

参数名类型说明
namestring短代码名称
attrstring短代码属性
textstring短代码内容
codestring整条短代码内容

注册短代码栗子

\#1 一个对一个

ShortCode::set('video',function ShorCode($name,$attr,$text,$code){
    return '<video controls="controls"'.$attr.'><source src="'.$text.'"></video>';
});

\#2 多个对一个

ShortCode::set(['video','audio'],'ShorCode');
function ShorCode($name,$attr,$text,$code){
    switch($name){
        case 'video':
            return '<video controls="controls"'.$attr.'><source src="'.$text.'"></video>';
        case 'audio':
            return '<audio controls="controls"'.$attr.'><source src="'.$text.'"></audio>';
    }
    return $code;
}

[TOC]自动生成目录说明

上下不要有文本,自己占一行,与<!--import-->写法一样
在文章列表里不显示也不生成目录

举个栗子

MarkDown:

[TOC]
# 文章大标题
## 文章中标题
### 文章小标题
...

HTML:

<div class="TOC">
    <span>目录</span>
    <ol>
        <li>
            <a href="#TOC0">文章大标题</a>
            <ol>
                <li>
                    <a href="#TOC1">文章中标题</a>
                    <ol>
                        <li>
                            <a href="#TOC2">文章小标题</a>
                        </li>
                    </ol>
                </li>
            </ol>
        </li>
    </ol>
</div>
<h1 id="TOC0">文章大标题</h1>
<h2 id="TOC1">文章中标题</h2>
<h3 id="TOC2">文章小标题</h3>
<p>...</p>

更新

2018.03.24

  • 添加[TOC]自动生成目录功能
  • 支持短代码转义(在短代码前加上反斜杠)

标签: php, typecho

已有 26 条评论

  1. 广树 广树 访客 Chrome Windows 10 回复

    这个站已经变成typecho教程站了么

    1. 小さな手は 小さな手は 博主 Chrome Android 7.0 回复

      回复 @广树

      不不不,只是前段时间又在折腾Typecho(肯定不是水)

  2. ⑨BIE ⑨BIE 访客 Chrome Android 7.1.1 回复

    我用了快三年typecho,才记起来还有插件这个功能qwq

  3. 葛一速 葛一速 访客 Firefox Windows XP 回复

    Typecho越来越多人使用,只是技术方面资源欠缺,有你这种爱好者相信Typecho会更强大

  4. ZD ZD 访客 Chrome Windows 10 回复

    大佬,想问一下这个插件具体怎么用

    1. 小さな手は 小さな手は 博主 Chrome Windows 10 回复

      回复 @ZD

      下面不是有栗子么

  5. 枫叶 枫叶 访客 Chrome Windows 10 回复

    你这个栗子我都不知道加到哪里,悲剧。

    1. 小さな手は 小さな手は 博主 Chrome Windows 10 回复

      回复 @枫叶

      抱歉哈,文章写得有点久,忘记自己举了两个栗子,上次回复时只记得有个“[TOC]自动生成目录”的栗子,就说只要写在 Markdown 里。

      注册短代码是写在 PHP 文件里,比如主题下的 functions.php。

  6. masy masy 访客 Chrome Windows 7 回复

    博主你好,能说下插件具体怎么使用吗?比如说自定义短代码需要在哪个文件里添加代码。是在插件文件里改还是在博客程序文件里改,我看你回复说在MarkDown里改,是哪个文件呢?刚玩Typecho很不熟悉

    1. 小さな手は 小さな手は 博主 Chrome Windows 10 回复

      回复 @masy

      注册短代码是写在 PHP 文件里,比如主题下的 functions.php。
      Markdown 是一种语法,是写文章用的,Typecho 默认启用,在 【控制台】-【个人设置】-【撰写设置】-【使用 Markdown 语法编辑和解析内容】。

      文章写得有点久,忘记自己举了两个栗子,上次回复时只记得有个“[TOC]自动生成目录”的栗子,就说只要写在 Markdown 里。

      1. masy masy 访客 Chrome Windows 7 回复

        回复 @小さな手は

        谢谢了,使用的话是类似[vidoe]链接地址[/video],这样用吗

        1. 小さな手は 小さな手は 博主 Chrome Windows 10 回复

          回复 @masy

          嗯嗯,如果是用上面注册短代码的栗子

  7. 倪殇秋雨 倪殇秋雨 访客 Chrome Windows 10 回复

    能注册那种标签卡嘛

    1. 小さな手は 小さな手は 博主 Chrome Windows 10 回复

      回复 @倪殇秋雨

      什么标签卡呢?

      1. 倪殇秋雨 倪殇秋雨 访客 Chrome Windows 10 回复

        回复 @小さな手は

        类似这里面的https://get233.com/archives/mirages-shortcode-docs.html

      2. 倪殇秋雨 倪殇秋雨 访客 Chrome Windows 10 回复

        回复 @小さな手は

        那个标签卡,我特想要那个功能,放视频时候可以分类

        1. 小さな手は 小さな手は 博主 Chrome Windows 10 回复

          回复 @倪殇秋雨

          抱歉哈,没有哦。以前也有人问过

          1. 倪殇秋雨 倪殇秋雨 访客 Chrome Windows 10 回复

            回复 @小さな手は

            好的,谢谢。我找了好久都没有找到插件

  8. 祈里 祈里 访客 Chrome Windows 10 回复

    短代码这部分非常迫切需要个详细的例子和具体步骤,代码小白一直没搞懂functions.php里面具体要怎么写QAQ

  9. 枫叶 枫叶 访客 Chrome Windows 10 回复

    2021年了,再来打个卡,你举个那例子。我试了下,至今报错。
    例子写了,但是没有编辑器里使用的例子。如何用短代码去使用你的注册短代码。。。哭了我

  10. 枫叶 枫叶 访客 Chrome Windows 10 回复

    报错语句如下:
    Class 'ShortCode' not found

    syntax error, unexpected 'ShorCode' (T_STRING), expecting '('

    1. MoeShin MoeShin 博主 Chrome Windows 10 回复

      回复 @枫叶

      我改了一下代码,应该没问题了

  11. 不吃猫的鱼 不吃猫的鱼 访客 Chrome Windows 10 回复

    博主你好,麻烦问下这个是怎么使用的呢,上传插件并启用后,在哪里能够设置短代码呢,求一份详细的食用说明。

    1. MoeShin MoeShin 博主 Chrome Windows 10 回复

      回复 @不吃猫的鱼

      插件只有 [video] [audio] [TOC],要自定义的话直接写在插件代码里

      1. 李 访客 Safari Iphone 回复

        回复 @MoeShin

        Class 'ShortCode' not found
        syntax error, unexpected 'ShorCode' (T_STRING), expecting '('
        出行错误,之前你说代码已改,好像没有什么作用
        1. MoeShin MoeShin 博主 Chrome Windows 10 回复

          回复 @李

          能具体到哪一行吗

添加新评论

注意:已开启评论过滤器,无中文无法评论!
泡泡表情