From 350695cbe586a9a761a069aa3c6fe5838429bacf Mon Sep 17 00:00:00 2001 From: Eltrac Koalar Date: Sat, 26 Nov 2022 10:12:18 +0800 Subject: =?UTF-8?q?=E2=9A=A1=20Add:=20=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=20CDN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- change-log.md | 7 +- libs/Matcha.php | 203 +++++++++++++++++++++++++++++++++---------------------- libs/Options.php | 8 ++- 3 files changed, 135 insertions(+), 83 deletions(-) diff --git a/change-log.md b/change-log.md index f146182..08c6f24 100644 --- a/change-log.md +++ b/change-log.md @@ -1,6 +1,11 @@ ## 开发版更新(即 `main` 分支) -暂无 +- 新增:自定义 CDN +- 新增:适配字数统计插件(by @KurococLiu) +- 新增:留言页面模板 +- 优化:适配 ISO 639-3 标准(by @KurococLiu) +- 优化:使用 preconnect(by @KurococLiu) +- 优化:用 Cravatar 代替 Gravatar 源(by @KurococLiu) ## 1.2.0 diff --git a/libs/Matcha.php b/libs/Matcha.php index fd6135b..3d44de0 100644 --- a/libs/Matcha.php +++ b/libs/Matcha.php @@ -22,51 +22,69 @@ class Matcha * 输出 link 标签引用 css */ public static function linkCSS() { - if(isset(Helper::options()->StaticCDN) && Helper::options()->StaticCDN!='local'){ - if(Helper::options()->StaticCDN=='bytedance'){ - $src_link = array( - 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/normalize/8.0.1/normalize.min.css', - 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/bigfoot/2.1.4/bigfoot-default.min.css', - 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/prism/1.27.0/themes/prism.min.css', - 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/prism/1.27.0/plugins/toolbar/prism-toolbar.min.css', - 'https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/prism/1.27.0/plugins/line-numbers/prism-line-numbers.min.css', - 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/fluidbox/2.0.5/css/fluidbox.min.css', - 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/tocbot/4.18.2/tocbot.css' + if(isset(Helper::options()->StaticCDN) && Helper::options()->StaticCDN!='custom') { + //非自定义 CDN + if(Helper::options()->StaticCDN!='local'){ + if(Helper::options()->StaticCDN=='bytedance'){ + $src_link = array( + 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/normalize/8.0.1/normalize.min.css', + 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/bigfoot/2.1.4/bigfoot-default.min.css', + 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/prism/1.27.0/themes/prism.min.css', + 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/prism/1.27.0/plugins/toolbar/prism-toolbar.min.css', + 'https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/prism/1.27.0/plugins/line-numbers/prism-line-numbers.min.css', + 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/fluidbox/2.0.5/css/fluidbox.min.css', + 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/tocbot/4.18.2/tocbot.css' + ); + } + elseif(Helper::options()->StaticCDN=='cdnjs'){ + $src_link = array( + 'https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css', + 'https://cdnjs.cloudflare.com/ajax/libs/bigfoot/2.1.4/bigfoot-default.min.css', + 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.28.0/themes/prism.min.css', + 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.28.0/plugins/toolbar/prism-toolbar.min.css', + 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.28.0/plugins/line-numbers/prism-line-numbers.min.css', + 'https://cdnjs.cloudflare.com/ajax/libs/fluidbox/2.0.5/css/fluidbox.min.css', + 'https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.18.2/tocbot.css' + ); + } + + foreach($src_link as $value){ + echo ''; + } + + $local_includes=array();//没有额外的本地文件 + }else{ + //要引入的 css 文件名 + $local_includes=array( + "normalize", + "bigfoot/bigfoot", + "prism/prism", + "jquery/jquery.fluidbox.min", + "tocbot/tocbot" ); } - elseif(Helper::options()->StaticCDN=='cdnjs'){ - $src_link = array( - 'https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css', - 'https://cdnjs.cloudflare.com/ajax/libs/bigfoot/2.1.4/bigfoot-default.min.css', - 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.28.0/themes/prism.min.css', - 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.28.0/plugins/toolbar/prism-toolbar.min.css', - 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.28.0/plugins/line-numbers/prism-line-numbers.min.css', - 'https://cdnjs.cloudflare.com/ajax/libs/fluidbox/2.0.5/css/fluidbox.min.css', - 'https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.18.2/tocbot.css' - ); + //必须要在本地引入的文件 + array_push($local_includes,"toaster/toaster","matcha/matcha"); + foreach($local_includes as $value){ + echo ''; } - - foreach($src_link as $value){ - echo ''; - } - - $local_includes=array();//没有额外的本地文件 - }else{ - //要引入的 css 文件名 - $local_includes=array( + } else { + //自定义 CDN + $includes=array( "normalize", "bigfoot/bigfoot", "prism/prism", "jquery/jquery.fluidbox.min", - "tocbot/tocbot" + "tocbot/tocbot", + "toaster/toaster", + "matcha/matcha" ); - } - //必须要在本地引入的文件 - array_push($local_includes,"toaster/toaster","matcha/matcha"); - foreach($local_includes as $value){ - echo ''; + + foreach($includes as $value){ + echo ''; + } } } @@ -74,7 +92,7 @@ class Matcha * 输出 preconnect 标签 */ public static function preconnect() { - if(isset(Helper::options()->StaticCDN) && Helper::options()->StaticCDN!='local'){ + if(isset(Helper::options()->StaticCDN) && (Helper::options()->StaticCDN!=('local'||'custom'))){ if(Helper::options()->StaticCDN=='bytedance'){ $src_link = array( '//lf3-cdn-tos.bytecdntp.com/', @@ -136,59 +154,82 @@ class Matcha * 输出 js 引用 */ public static function script() { - if(isset(Helper::options()->StaticCDN) && Helper::options()->StaticCDN!='local'){ - if(Helper::options()->StaticCDN=='bytedance'){ - $src_link = array( - 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js', - 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery.pjax/2.0.1/jquery.pjax.min.js', - 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery.lazy/1.7.11/jquery.lazy.min.js', - 'https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/bigfoot/2.1.4/bigfoot.min.js', - 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery-throttle-debounce/1.1/jquery.ba-throttle-debounce.min.js', - 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/fluidbox/2.0.5/js/jquery.fluidbox.min.js', - 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/tocbot/4.18.2/tocbot.min.js' - ); - } - elseif(Helper::options()->StaticCDN=='cdnjs'){ - $src_link = array( - 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js', - 'https://cdnjs.cloudflare.com/ajax/libs/jquery.pjax/2.0.1/jquery.pjax.min.js', - 'https://cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.11/jquery.lazy.min.js', - 'https://cdnjs.cloudflare.com/ajax/libs/bigfoot/2.1.4/bigfoot.min.js', - 'https://cdnjs.cloudflare.com/ajax/libs/jquery-throttle-debounce/1.1/jquery.ba-throttle-debounce.min.js', - 'https://cdnjs.cloudflare.com/ajax/libs/fluidbox/2.0.5/js/jquery.fluidbox.min.js', - 'https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.18.2/tocbot.min.js' + if(isset(Helper::options()->StaticCDN) && Helper::options()->StaticCDN!='custom') { + //非自定义 CDN + if(Helper::options()->StaticCDN!='local'){ + if(Helper::options()->StaticCDN=='bytedance'){ + $src_link = array( + 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js', + 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery.pjax/2.0.1/jquery.pjax.min.js', + 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery.lazy/1.7.11/jquery.lazy.min.js', + 'https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/bigfoot/2.1.4/bigfoot.min.js', + 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery-throttle-debounce/1.1/jquery.ba-throttle-debounce.min.js', + 'https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/fluidbox/2.0.5/js/jquery.fluidbox.min.js', + 'https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/tocbot/4.18.2/tocbot.min.js' + ); + } + elseif(Helper::options()->StaticCDN=='cdnjs'){ + $src_link = array( + 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js', + 'https://cdnjs.cloudflare.com/ajax/libs/jquery.pjax/2.0.1/jquery.pjax.min.js', + 'https://cdnjs.cloudflare.com/ajax/libs/jquery.lazy/1.7.11/jquery.lazy.min.js', + 'https://cdnjs.cloudflare.com/ajax/libs/bigfoot/2.1.4/bigfoot.min.js', + 'https://cdnjs.cloudflare.com/ajax/libs/jquery-throttle-debounce/1.1/jquery.ba-throttle-debounce.min.js', + 'https://cdnjs.cloudflare.com/ajax/libs/fluidbox/2.0.5/js/jquery.fluidbox.min.js', + 'https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.18.2/tocbot.min.js' + ); + } + + foreach($src_link as $value){ + echo ''; + } + + $local_includes=array();//没有额外的本地文件 + }else{ + //要引入的 js 文件名 + $local_includes=array( + "jquery/jquery.min", + "jquery/jquery.pjax.min", + "jquery/jquery.lazy.min", + "jquery/jquery.fluidbox.min", + 'jquery/jquery.ba-throttle-debounce.min', + 'tocbot/tocbot.min', + "bigfoot/bigfoot" ); } - - foreach($src_link as $value){ - echo ''; + //必须要在本地引入的文件 + array_push($local_includes, + "prism/prism", + "toaster/toaster", + 'smoothscroll/smoothscroll' + ); + if(Helper::options()->EnableAjaxComment=='able') array_push($local_includes, 'matcha/matcha.comment'); + array_push($local_includes, 'matcha/matcha'); //主题核心文件在最后引入 + foreach($local_includes as $value){ + echo ''; } - - $local_includes=array();//没有额外的本地文件 - }else{ - //要引入的 js 文件名 - $local_includes=array( + } else { + //自定义 CDN + $includes=array( "jquery/jquery.min", "jquery/jquery.pjax.min", "jquery/jquery.lazy.min", "jquery/jquery.fluidbox.min", 'jquery/jquery.ba-throttle-debounce.min', 'tocbot/tocbot.min', - "bigfoot/bigfoot" + "bigfoot/bigfoot", + "prism/prism", + "toaster/toaster", + 'smoothscroll/smoothscroll' ); - } - //必须要在本地引入的文件 - array_push($local_includes, - "prism/prism", - "toaster/toaster" - ); - if(Helper::options()->EnableExtraSimple!='able') array_push($local_includes, 'smoothscroll/smoothscroll'); - if(Helper::options()->EnableAjaxComment=='able') array_push($local_includes, 'matcha/matcha.comment'); - array_push($local_includes, 'matcha/matcha'); //主题核心文件在最后引入 - foreach($local_includes as $value){ - echo ''; + if(Helper::options()->EnableAjaxComment=='able') array_push($includes, 'matcha/matcha.comment'); + array_push($includes, 'matcha/matcha'); //主题核心文件在最后引入 + + foreach($includes as $value){ + echo ''; + } } } diff --git a/libs/Options.php b/libs/Options.php index bfe0322..0d3a014 100644 --- a/libs/Options.php +++ b/libs/Options.php @@ -92,12 +92,18 @@ function themeConfig($form) { 'local' => _t('本地资源(不加速)'), 'bytedance' => _t('字节跳动资源库(推荐)'), 'cdnjs' => _t('CDNJS'), + 'custom'=> _t('自定义') ), 'local', _t('

附加功能

选择静态文件加速 CDN'), - _t('如果你的服务器速度较慢,可以选择一个 CDN 引用静态文件资源库,可以一定程度地提高页面加载速度。') + _t('如果你的服务器速度较慢,可以选择一个 CDN 引用静态文件资源库,可以一定程度地提高页面加载速度。若选择自定义,则需要填写下一项') ); $form->addInput($StaticCDN->addRule('required', _t('此处必须设置'))); + //自定义 CDN + $CustomCDN = new Typecho_Widget_Helper_Form_Element_Text('CustomCDN', NULL, NULL, _t('自定义 CDN'), _t(' +

上一个设置选择「自定义」,则通过此处设置的 CDN 引入主题所需的静态文件。

+

如果您拥有自己的储存服务,可以将主题的 assets 目录上传,选择「自定义」并在这里填写对应的 URL,以 “/” 结尾。

')); + $form->addInput($CustomCDN); //夜间模式设置 $DarkMode = new Typecho_Widget_Helper_Form_Element_Select('DarkMode', array( 'default' => _t('默认日间模式,自动+手动开关(默认)'), -- cgit v1.2.3