diff --git a/_config.yml b/_config.yml index 5800b1f22943cbf33abd4876cdb79fe70b7860ff..fcaeda80f3ece5b14b24fe481647dcfaaa31dd36 100644 --- a/_config.yml +++ b/_config.yml @@ -593,17 +593,107 @@ images: images # Set a CDN address for the vendor you want to customize. # --------------------------------------------------------------- -#! Do not edit the follow configs. -#! Unless you know what you are doing. +# !!! Do not edit the follow configs. +# !!! Unless you know what you are doing. # --------------------------------------------------------------- cdn: - css: - fontawesome: https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css - - js: - jquery: https://cdn.jsdelivr.net/npm/jquery@v3.4.1/dist/jquery.min.js - velocity: https://cdn.jsdelivr.net/npm/velocity-animate@1.5.2/velocity.min.js - velocity-ui: https://cdn.jsdelivr.net/npm/velocity-ui-pack@1.2.2/velocity.ui.min.js - - canvas_ribbon: https://cdn.jsdelivr.net/npm/ribbon.js@latest/dist/ribbon.min.js - canvas_nest: https://cdn.jsdelivr.net/gh/theme-next/theme-next-canvas-nest@1.0.0/canvas-nest.min.js + # Using version: 4.7.0 + # See: https://fontawesome.com/ + # Example: + # fontawesome: //cdn.jsdelivr.net/npm/font-awesome@4/css/font-awesome.min.css + # fontawesome: //cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css + fontawesome: + + # Using version: 3.4.1 + # Example: + # jquery: //cdn.jsdelivr.net/npm/jquery@v3.4.1/dist/jquery.min.js + # jquery: //cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js + jquery: + + # Using version: 1.5.2 + # See: http://velocityjs.org/ + # Example: + # velocity: //cdn.jsdelivr.net/npm/velocity-animate@1.5.2/velocity.min.js + # velocity: //cdnjs.cloudflare.com/ajax/libs/velocity/1.5.2/velocity.min.js + # velocity_ui: //cdn.jsdelivr.net/npm/velocity-animate@1.5.2/velocity.ui.min.js + # velocity_ui: //cdnjs.cloudflare.com/ajax/libs/velocity/1.5.2/velocity.ui.min.js + velocity: + velocity_ui: + + # gitalk & js-md5 + # Using version: latest & latest + # See: https://github.com/gitalk/gitalk/, https://github.com/emn178/js-md5/ + # Example: + # gitalk_js: //cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js + # gitalk_css: //cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.css + # md5: //cdn.jsdelivr.net/npm/js-md5@latest/src/md5.min.js + gitalk_js: + gitalk_css: + md5: + + # gitment & js-md5 + # Using version: latest & latest + # See: https://github.com/gitalk/gitalk/, https://github.com/emn178/js-md5/ + # Example: + # gitment_js: //cdn.jsdelivr.net/npm/gitment/dist/gitment.browser.min.js + # gitment_css: //cdn.jsdelivr.net/npm/gitment/style/default.min.css + # md5: //cdn.jsdelivr.net/npm/js-md5@latest/src/md5.min.js + gitment_js: + gitment_css: + md5: + + # valine & leancloud-storage + # Using version: latest & latest + # See: https://github.com/xCss/Valine/, https://www.npmjs.com/package/leancloud-storage/ + # Example: + # valine: //cdn.jsdelivr.net/npm/valine@latest/dist/Valine.min.js + # leancloud_storage: //cdn.jsdelivr.net/npm/leancloud-storage@latest/dist/av-min.js + valine: + leancloud_storage: + + # busuanzi + # Using version: latest + # See: https://busuanzi.ibruce.info/ + # Example: + # busuanzi: //cdn.jsdelivr.net/gh/sukkaw/busuanzi@latest/bsz.pure.mini.js + busuanzi: + + # Using version: 2.1.1 + # See: https://busuanzi.ibruce.info/ + # Example: + # instantsearch_js: //cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.js + # instantsearch_css: //cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.css + instantsearch_js: + instantsearch_css: + + # Using version: latest + # See: https://github.com/hustcc/ribbon.js + # Example: + # canvas_ribbon: //cdn.jsdelivr.net/npm/ribbon.js@latest/dist/ribbon.min.js + canvas_ribbon: + + # Using version: latest + # See: https://github.com/hustcc/canvas-nest.js + # Example: + # canvas_nest: //cdn.jsdelivr.net/gh/theme-next/theme-next-canvas-nest@latest/canvas-nest.min.js + canvas_nest: + + # Using version: 3.5.7 + # See: https://www.fancyapps.com/fancybox/3/ + # Example: + # fancybox_js: //cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js + # fancybox_css: //cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css + fancybox_js: + fancybox_css: + + # Using version: 4.2.2 + # See: https://masonry.desandro.com/ + # Example: + # masonry: //cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js + masonry: + + # Using version: 2.0.0-rc.2 + # See: https://github.com/tuupola/lazyload/ + # Example: + # lazyload: //cdn.jsdelivr.net/npm/lazyload@2.0.0-rc.2/lazyload.min.js + lazyload: diff --git a/layout/_common/head.pug b/layout/_common/head.pug index 96e9fd172e4b4c7dff39f45b4080961d12412d35..143775ce32b55769e620d350f663d4185478843e 100644 --- a/layout/_common/head.pug +++ b/layout/_common/head.pug @@ -41,13 +41,14 @@ if theme.favicon.small if theme.favicon.safari_pinned_tab link(rel="mask-icon" href=`${url_for(theme.favicon.safari_pinned_tab)}?v=${stun_env("version")}` color="#333") -if theme.cdn && theme.cdn.css - each url in theme.cdn.css - if url - link(rel="stylesheet" href=url_for(url)) +- var fontawesome_css = 'https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css' +- if (theme.cdn.fontawesome_css) fontawesome_css = theme.cdn.fontawesome_css +link(rel="stylesheet" href=fontawesome_css) if theme.fancybox - link(rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css") + - var fancybox_css = 'https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css' + - if (theme.cdn.fontawesome) fancybox_css = theme.cdn.fontawesome + link(rel="stylesheet" href=fancybox_css) link(rel="stylesheet" href=`${url_for(theme.css)}/index.css?v=${stun_env("version")}`) diff --git a/layout/_scripts/cdn.pug b/layout/_scripts/cdn.pug index d10ad13efc58b07889232453421fc7cea57e3a72..9f07784a36ed5fe058efa0ae07b15f6b0c00dc97 100644 --- a/layout/_scripts/cdn.pug +++ b/layout/_scripts/cdn.pug @@ -5,24 +5,40 @@ script. window.Promise = null; } -if theme.cdn && theme.cdn.js - each url in theme.cdn.js - if url - script(src=url_for(url)) +- var jquery_js = "https://cdn.jsdelivr.net/npm/jquery@v3.4.1/dist/jquery.min.js" +- var velocity_js = "https://cdn.jsdelivr.net/npm/velocity-animate@1.5.2/velocity.min.js" +- var velocity_ui_js = "https://cdn.jsdelivr.net/npm/velocity-animate@1.5.2/velocity.ui.min.js" +- if (theme.cdn.jquery) jquery_js = theme.cdn.jquery +- if (theme.cdn.velocity) velocity_js = theme.cdn.velocity +- if (theme.cdn.velocity_ui) velocity_ui_js = theme.cdn.velocity_ui -if theme.fancybox - script(src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js") - -if theme.gallery_waterfall - script(src="https://cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js") - -if theme.lazyload - script(src="https://cdn.jsdelivr.net/npm/lazyload@2.0.0-rc.2/lazyload.min.js") +script(src=jquery_js) +script(src=velocity_js) +script(src=velocity_ui_js) if theme.canvas_ribbon && theme.canvas_ribbon.enable - - var ribbon = theme.canvas_ribbon; - script(src=theme.cdn.canvas_ribbon size=ribbon.size alpha=ribbon.alpha zIndex=ribbon.zIndex) + - var ribbon_js = "https://cdn.jsdelivr.net/npm/ribbon.js@latest/dist/ribbon.min.js" + - var ribbon = theme.canvas_ribbon + - if (theme.cdn.canvas_ribbon) ribbon_js = theme.cdn.canvas_ribbon + script(src=ribbon_js size=ribbon.size alpha=ribbon.alpha zIndex=ribbon.zIndex) if theme.canvas_nest && theme.canvas_nest.enable + - var nest_js = "https://cdn.jsdelivr.net/gh/theme-next/theme-next-canvas-nest@latest/canvas-nest.min.js" - var nest = theme.canvas_nest; - script(src=theme.cdn.canvas_nest color=nest.color opacity=nest.opacity count=nest.count zIndex=nest.zIndex) + - if (theme.cdn.canvas_nest) nest_js = theme.cdn.canvas_nest + script(src=nest_js color=nest.color opacity=nest.opacity count=nest.count zIndex=nest.zIndex) + +if theme.fancybox + - var fancybox_js = "https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js" + - if (theme.cdn.fancybox_js) fancybox_js = theme.cdn.fancybox_js + script(src=fancybox_js) + +if theme.gallery_waterfall && theme.gallery_waterfall.enable + - var masonry_js = "https://cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js" + - if (theme.cdn.masonry) masonry_js = theme.cdn.masonry + script(src=masonry_js) + +if theme.lazyload && theme.lazyload.enable + - var lazyload_js = "https://cdn.jsdelivr.net/npm/lazyload@2.0.0-rc.2/lazyload.min.js" + - if (theme.cdn.lazyload) lazyload_js = theme.cdn.lazyload + script(src=lazyload_js) diff --git a/layout/_third-party/analytics/busuanzi.pug b/layout/_third-party/analytics/busuanzi.pug index e6b059d6b41d4211cfec55178c6c8a19cd0eae8e..3465ed7ef472e0b1afc31d7af13c828373fcae8f 100644 --- a/layout/_third-party/analytics/busuanzi.pug +++ b/layout/_third-party/analytics/busuanzi.pug @@ -1 +1,6 @@ -script(async src="https://cdn.jsdelivr.net/gh/sukkaw/busuanzi@2.3/bsz.pure.mini.js") +- + var busuanzi_js = "https://cdn.jsdelivr.net/gh/sukkaw/busuanzi@latest/bsz.pure.mini.js" + + if (theme.cdn.busuanzi) busuanzi_js = theme.cdn.busuanzi + +script(async src=busuanzi_js) diff --git a/layout/_third-party/comments/gitalk.pug b/layout/_third-party/comments/gitalk.pug index a7619c762d80801c02f880b289ee22691abbb6c5..1657b4c0c53fb0fdeff4ecc70e99c82210f66a48 100644 --- a/layout/_third-party/comments/gitalk.pug +++ b/layout/_third-party/comments/gitalk.pug @@ -1,6 +1,15 @@ -link(href="https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.css" rel="stylesheet" type="text/css") -script(src="https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js") -script(src="https://cdn.jsdelivr.net/npm/js-md5@latest/src/md5.min.js") +- + var gitalk_js = "https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js" + var gitalk_css = "https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.css" + var gitalk_md5 = "https://cdn.jsdelivr.net/npm/js-md5@latest/src/md5.min.js" + + if (theme.cdn.gitalk_js) gitalk_js = theme.cdn.gitalk_js + if (theme.cdn.gitalk_css) gitalk_css = theme.cdn.gitalk_css + if (theme.cdn.md5) gitalk_md5 = theme.cdn.md5 + +link(href=gitalk_css rel="stylesheet" type="text/css") +script(src=gitalk_js) +script(src=gitalk_md5) - var lang = _.get(theme, 'gitalk.language') diff --git a/layout/_third-party/comments/gitment.pug b/layout/_third-party/comments/gitment.pug index a917779eec622ee55e141430c1c7eeeee1dbaeb9..5488ee7101fa15914087349e7b8587cee14643e0 100644 --- a/layout/_third-party/comments/gitment.pug +++ b/layout/_third-party/comments/gitment.pug @@ -1,6 +1,15 @@ -link(href="https://cdn.jsdelivr.net/npm/gitment/style/default.min.css" rel="stylesheet" type="text/css") -script(src="https://cdn.jsdelivr.net/npm/gitment/dist/gitment.browser.min.js") -script(src="https://cdn.jsdelivr.net/npm/js-md5@latest/src/md5.min.js") +- + var gitment_js = "https://cdn.jsdelivr.net/npm/gitment/dist/gitment.browser.min.js" + var gitment_css = "https://cdn.jsdelivr.net/npm/gitment/style/default.min.css" + var gitment_md5 = "https://cdn.jsdelivr.net/npm/js-md5@latest/src/md5.min.js" + + if (theme.cdn.gitment_js) gitment_js = theme.cdn.gitment_js + if (theme.cdn.gitment_css) gitment_css = theme.cdn.gitment_css + if (theme.cdn.md5) gitment_md5 = theme.cdn.md5 + +link(href=gitment_css rel="stylesheet" type="text/css") +script(src=gitment_js) +script(src=gitment_md5) script. function renderGitment() { diff --git a/layout/_third-party/comments/valine.pug b/layout/_third-party/comments/valine.pug index f0c36b934bfe3ef533cb438a5ee4296267ae648f..c68db92578106b6040d40a3f45774006fc5c76ea 100644 --- a/layout/_third-party/comments/valine.pug +++ b/layout/_third-party/comments/valine.pug @@ -1,5 +1,12 @@ -script(src='https://cdn.jsdelivr.net/npm/leancloud-storage@latest/dist/av-min.js') -script(src='https://cdn.jsdelivr.net/npm/valine@latest/dist/Valine.min.js') +- + var leancloud_storage_js = "https://cdn.jsdelivr.net/npm/leancloud-storage@latest/dist/av-min.js" + var valine_js = "https://cdn.jsdelivr.net/npm/valine@latest/dist/Valine.min.js" + + if (theme.cdn.leancloud_storage) leancloud_storage_js = theme.cdn.leancloud_storage + if (theme.cdn.valine) valine_js = theme.cdn.valine + +script(src=leancloud_storage_js) +script(src=valine_js) script. window.onload = function() { diff --git a/layout/_third-party/search/algolia.pug b/layout/_third-party/search/algolia.pug index a4960e31d177dfbdbba7c80e81fb3c3461887e02..223d69ec255a602a5205493ca5308d678b250d5a 100644 --- a/layout/_third-party/search/algolia.pug +++ b/layout/_third-party/search/algolia.pug @@ -1,2 +1,9 @@ -link(href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.css" rel="stylesheet" type="text/css") -script(src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.js" defer) +- + var instantsearch_js = "https://cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.js" + var instantsearch_css = "https://cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.css" + + if (theme.cdn.instantsearch_js) instantsearch_js = theme.cdn.instantsearch_js + if (theme.cdn.instantsearch_css) instantsearch_css = theme.cdn.instantsearch_css + +link(href=instantsearch_css rel="stylesheet" type="text/css") +script(src=instantsearch_js defer) diff --git a/source/js/stun-boot.js b/source/js/stun-boot.js index 800ac8712b284128b335939008fe62b6a4efcbc5..09370e310fa7cabd1dd803a8816ae9e71250cff1 100644 --- a/source/js/stun-boot.js +++ b/source/js/stun-boot.js @@ -4,10 +4,10 @@ $(document).ready(function () { CONFIG.back2top && Stun.utils.back2top(); CONFIG.gallery_waterfall && Stun.utils.galleryWaterFall(); CONFIG.lazyload && Stun.utils.lazyLoadImages(); - + if (CONFIG.external_link) { var WRAPPER = '.archive-inner, .post-title, #footer'; - + Stun.utils.addIconToExternalLink(WRAPPER); } diff --git a/source/js/utils.js b/source/js/utils.js index 7cfa668f54cc25839f58f1de4f98b8b67be388c8..9bba7bd2a71e3e1ccebdb871a72f163a8ab9064d 100644 --- a/source/js/utils.js +++ b/source/js/utils.js @@ -227,7 +227,7 @@ Stun.utils = Stun.$u = { CONFIG.external_link.icon.name + '">' ); - + $(container) .find('a[target="_blank"]') .wrap($wrapper)