first commit

This commit is contained in:
Jerry
2019-06-04 22:37:36 +08:00
Unverified
commit 1357f218e5
102 changed files with 7015 additions and 0 deletions

View File

@@ -0,0 +1,132 @@
if (theme.algolia_search.enable)
script(async src=url_for('/js/search/algolia.js'))
if (theme.mathjax && theme.mathjax.enable)
if(!is_tag() && !is_category() && !is_archive())
include ./third-party/mathjax.pug
if (theme.katex && theme.katex.enable)
if(!is_tag() && !is_category() && !is_archive())
include ./third-party/katex.pug
if (theme.local_search && theme.local_search.enable)
script(async src=url_for('/js/search/local-search.js'))
if theme.translate && theme.translate.enable
script(src=url_for('/js/tw_cn.js'))
script.
$(document).ready(function() {
initializeChineseConversion();
});
function simplifyTextInPage(simplified) {
if (simplified) {
$(document.body).t2s();
$('#translateLink').addClass('simplified');
$('#translateLink').text('繁');
} else {
$(document.body).s2t();
$('#translateLink').removeClass('simplified');
$('#translateLink').text('簡');
}
}
function initializeChineseConversion() {
var simplified = +Cookies.get('simplified');
// ?lang=zh-Hans, ?lang=zh-Hant
var scriptCode = /[?&;]lang=[^&;]*(Han[st])/i.exec(window.location.search);
if (scriptCode) {
simplified = +(scriptCode[1].match(/Hans/i) != null);
Cookies.set('simplified', simplified, {expires: 7, path: '/'});
}
simplifyTextInPage(simplified);
$('#translateLink').click(function() {
simplified = +!simplified;
Cookies.set('simplified', simplified, {expires: 7, path: '/'});
simplifyTextInPage(simplified);
$(this).blur();
});
}
if theme.nightshift.enable
script(src=url_for('js/nightshift.js'))
if (theme.canvas_ribbon && theme.canvas_ribbon.enable)
include ./third-party/canvas-ribbon.pug
if (theme.canvas_ribbon_piao && theme.canvas_ribbon_piao.enable)
include ./third-party/canvas-ribbon-piao.pug
if theme.activate_power_mode.enable
script(src=url_for('js/activate-power-mode.js'))
script.
POWERMODE.colorful = true; // make power mode colorful
POWERMODE.shake = true; // turn off shake
document.body.addEventListener('input', POWERMODE);
//- script(src="https://unpkg.com/aos@next/dist/aos.js")
//- script.
//- $(".recent-post-item,.card_widget,#archive,.tag-cloud,#tag,.category-content,#category,#page,.flink").attr("data-aos","slide-up");
//- AOS.init();
script(src="https://cdn.jsdelivr.net/npm/instant.page@1.2.2/instantpage.min.js" type="module")
//- if is_post()
//- script(src="https://cdn.jsdelivr.net/npm/typed.js@2.0.9")
//- script.
//- var typed = new Typed("#typed", {
//- stringsElement: '#post-title-effects',
//- typeSpeed: 150,
//- loop: true,
//- backSpeed: 100
//- });
if is_home()
script(src="https://cdn.jsdelivr.net/npm/typed.js@2.0.9")
script.
var typed = new Typed(".subtitle", {
strings: ["今日事,今日畢", "Never put off till tomorrow what you can do today"],
startDelay: 300,
typeSpeed: 100,
loop: true,
backSpeed: 50
});
script.
//首頁fullpage
function alignContent() {
for (var n = $(window).height(), e = document.querySelectorAll(".full_page"), i = 0; i < e.length; i++)
e[i].style.height = n + "px";
$("#site-info").each(function () {
var x = $(this).height();
$(this).css("top", (n-x)/2)
})
}
function recent_post_padding() {
$(".recent-post-info").each(function () {
var k = $(".recent-post-item").height();
var e = $(this).height();
$(this).css({"padding-top": (k-e)/2 , "padding-bottom": (k-e)/2 })
})
}
alignContent();
//recent-post-item垂直置中
if ($(window).width() > 768) {
recent_post_padding();
}
$(window).bind("resize", function () {
alignContent()
if ($(window).width() > 768) {
recent_post_padding();
}
})
script(async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js")

121
layout/includes/aside.pug Normal file
View File

@@ -0,0 +1,121 @@
.card_widget.card-author
.card-content
.post_data
.data-item.text-center
img.lozad(data-src=theme.avatar || url_for('/img/avatar.png') onerror=`onerror=null;src='${theme.lodding_bg.flink}'`)
p.author-info__name.text-center= config.author
p.author-info__description.text-center= config.description
.post_data.data_config
if site.posts.length
.data-item.text-center
.data_link
a(href=url_for(config.archive_dir) + '/')
p.headline= _p('aside.articles')
p.length_num= site.posts.length
if site.tags.length
.data-item.text-center
.data_link
a(href=url_for(config.tag_dir) + '/' )
p.headline= _p('aside.tags')
p.length_num= site.tags.length
if site.categories.length
.data-item.text-center
.data_link
a(href=url_for(config.category_dir) + '/')
p.headline= _p('aside.categories')
p.length_num= site.categories.length
.post_data.text-center
a#bookmark-it.data-item.bookmark.bookmarke--primary.bookmark--animated(href="javascript:;" title= _p('aside.card_bookmark') )= _p('aside.card_bookmark') || 'Follow Me'
if(theme.social)
.post_data.data_config
#aside-social-icons
each url, icon in theme.social
a.social-icon.data-item(href=url target="_blank")
i(class=icon)
.card_widget.card-announcement
.card-content
.item_headline
i.fa.fa-bullhorn.card-announcement-animation(aria-hidden="true")
span= _p('aside.card_announcement')
.announcement_content= theme.announcement.content
.card_widget.card-recent-post
.card-content
.item_headline
i.fa.fa-history(aria-hidden="true")
span= _p('aside.card_recent_post')
.aside_recent_item
- site.posts.sort('date', -1).limit(5).each(function(article){
.aside_recent_post
- var link = article.link || article.path
a(href=url_for(link))
- var post_cover = article.cover
- var default_post_cover = theme.default_cover
.aside_post_cover
if (post_cover)
img.aside_post_bg.lozad(data-src=`${post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` title=article.title || _p('no_title'))
else
img.aside_post_bg.lozad(data-src=`${default_post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` title=article.title || _p('no_title'))
div#aside_title
.aside_post_title(href=url_for(link) title=article.title || _p('no_title'))= article.title || _p('no_title')
if (theme.post_meta.date_type)
- var date_type = theme.post_meta.date_type == 'updated' ? 'updated' : 'date'
time.aside_post_meta.post-meta__date #[=date(article[date_type], config.date_format)]
- })
.card_widget.card-categories
.card-content
.item_headline
i.fa.fa-folder-open(aria-hidden="true")
span= _p('aside.card_categories')
ul.aside_category_item
- site.categories.sort('name').each(function(category){
li.aside_category_list
a.aside_category_list_link(href='/' + `${category.path}`)
span.aside_category_list_name= category.name
span.aside_category_list_length= category.length
- })
.card_widget.card-tags
.card-content
.item_headline
i.fa.fa-tags(aria-hidden="true")
span= _p('aside.card_tags')
.card-tag-cloud!= tagcloud({min_font: 16, max_font: 24, amount: 200, color: true, start_color: '#999', end_color: '#000'})
.card_widget.card-archives
.card-content
.item_headline
i.fa.fa-archive(aria-hidden="true")
span= _p('aside.card_archives')
div.archives_item!= list_archives({type:'monthly',format: 'YYYY年MM月'})
.card_widget.card-webinfo
.card-content
.item_headline
i.fa.fa-line-chart(aria-hidden="true")
span= _p('aside.card_webinfo.headline')
.webinfo
.webinfo_item
.webinfo_article_name= _p('aside.card_webinfo.article_name') + " :"
.webinfo_article_count= site.posts.length
.webinfo_item
.webinfo_runtime_name= _p('aside.card_webinfo.runtime_name') + " :"
#webinfo_runtime_count.webinfo_runtime_count
script(src=url_for('js/runtimeshow.js'))
.webinfo_item
.webinfo_site_uv_name= _p('aside.card_webinfo.site_uv_name') + " :"
.webinfo_site_uv_count#busuanzi_value_site_uv
.webinfo_item
.webinfo_site_name= _p('aside.card_webinfo.site_pv_name') + " :"
.webinfo_site_pv_count#busuanzi_value_site_pv

View File

@@ -0,0 +1,15 @@
if theme.disqus.enable
#disqus_thread
script.
var unused = null;
var disqus_config = function () {
this.page.url = '!{ page.permalink }';
this.page.identifier = '!{ page.path }';
this.page.title = '!{ page.title }';
}
var d = document, s = d.createElement('script');
s.src = "https://" + '!{theme.disqus.shortname}' +".disqus.com/embed.js";
s.setAttribute('data-timestamp', '' + +new Date());
(d.head || d.body).appendChild(s);
if theme.disqus.count
script#dsq-count-scr(src="https://" + theme.disqus.shortname + ".disqus.com/count.js" async)

View File

@@ -0,0 +1,13 @@
if theme.gitment && theme.gitment.enable
#gitment-container
script.
var gitment = new Gitment({
id: md5(decodeURI(location.pathname)),
owner: '!{theme.gitment.owner}',
repo: '!{theme.gitment.repo}',
oauth: {
client_id: '!{theme.gitment.client_id}',
client_secret: '!{theme.gitment.client_secret}'
}
})
gitment.render('gitment-container')

View File

@@ -0,0 +1,12 @@
if theme.gitment && theme.gitment.enable
#gitment-container
script.
var gitment = new Gitment({
owner: '!{theme.gitment.owner}',
repo: '!{theme.gitment.repo}',
oauth: {
client_id: '!{theme.gitment.client_id}',
client_secret: '!{theme.gitment.client_secret}'
}
})
gitment.render('gitment-container')

View File

@@ -0,0 +1,17 @@
hr
#post-comment
.comment_headling
i.fa.fa-comments.fa-fw(aria-hidden="true")
=" "
span= _p('comment')
if theme.disqus.enable
include ./disqus.pug
else if theme.laibili && theme.laibili.enable
include ./laibili.pug
else if theme.gitment && theme.gitment.enable
include ./gitment.pug
else if theme.gitalk && theme.gitalk.enable
include ./gitalk.pug
else if theme.valine && theme.valine.enable
include ./valine.pug

View File

@@ -0,0 +1,11 @@
if theme.laibili && theme.laibili.enable
#lv-container(data-id="city" data-uid=theme.laibili.uid)
script.
(function(d, s) {
var j, e = d.getElementsByTagName(s)[0];
if (typeof LivereTower === 'function') { return; }
j = d.createElement(s);
j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
j.async = true;
e.parentNode.insertBefore(j, e);
})(document, 'script');

View File

@@ -0,0 +1,69 @@
if theme.valine && theme.valine.enable
#vcomment.vcomment
script(src='https://cdn1.lncld.net/static/js/3.0.4/av-min.js')
script(src='https://cdn.jsdelivr.net/npm/valine/dist/Valine.min.js')
script.
var notify = '#{ theme.valine.notify }' == true ? true : false;
var verify = '#{ theme.valine.verify }' == true ? true : false;
var GUEST_INFO = ['nick','mail','link'];
var guest_info = '#{ theme.valine.guest_info }'.split(',').filter(function(item){
return GUEST_INFO.indexOf(item) > -1
});
guest_info = guest_info.length == 0 ? GUEST_INFO :guest_info;
var localeName = 'tw',
localeMode = {
head: {
nick: '暱稱(必填)',
mail: '郵箱(必填,可以收到回復提醒)',
link: '網址(選填)',
},
tips: {
comments: '評論',
sofa: '快來做第一個評論的人吧~',
busy: '還在提交中,請稍候...',
again: '這麼簡單也能錯,也是沒誰了.'
},
ctrl: {
reply: '回覆',
ok: '好的',
sure: '確認',
cancel: '取消',
confirm: '確認',
continue: '繼續',
more: '查看更多...',
try: '再試試?',
preview: '預覽',
emoji: '表情'
},
error: {
99: '初始化失敗請檢查init中的`el`元素.',
100: '初始化失敗請檢查你的AppId和AppKey.',
401: '未經授權的操作請檢查你的AppId和AppKey.',
403: '訪問被api域名白名單拒絕請檢查你的安全域名設置.',
},
timeago: {
seconds: '秒前',
minutes: '分鐘前',
hours: '小時前',
days: '天前',
now: '剛剛'
}
};
window.valine = new Valine();
valine.installLocale(localeName,localeMode);
valine.init({
el:'#vcomment',
notify:notify,
verify:verify,
appId:'#{theme.valine.appId}',
appKey:'#{theme.valine.appKey}',
placeholder:'#{theme.valine.placeholder}',
avatar:'#{theme.valine.avatar}',
guest_info:guest_info,
pageSize:'#{theme.valine.pageSize}',
lang:'#{theme.valine.lang}',
visitor: true
});

View File

@@ -0,0 +1,39 @@
-
var algolia = 'undefined';
var env = process.env;
if (theme.algolia_search.enable) {
algolia = JSON.stringify({
appId: env.ALGOLIA_APP_ID || config.algolia.appId || config.algolia.applicationID,
apiKey: env.ALGOLIA_API_KEY || config.algolia.apiKey,
indexName: env.ALGOLIA_INDEX_NAME || config.algolia.indexName,
hits: theme.algolia_search.hits,
// search languages
languages: {
input_placeholder: _p("algolia_search.input_placeholder"),
hits_empty: _p("algolia_search.hits_empty"),
hits_stats: _p("algolia_search.hits_stats")
}
})
}
var localSearch = 'undefined';
if (theme.local_search && theme.local_search.enable) {
localSearch = JSON.stringify({
path: config.search.path,
languages: {
// search languages
hits_empty: _p("local_search.hits_empty")
}
})
}
script.
var GLOBAL_CONFIG = {
root: '!{config.root}',
algolia: !{algolia},
localSearch: !{localSearch},
copy: {
success: '!{_p("copy.success")}',
error: '!{_p("copy.error")}',
noSupport: '!{_p("copy.noSupport")}'
}
}

View File

@@ -0,0 +1,29 @@
.busuanzi
script(async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js")
if(!is_post())
if(theme.busuanzi.site_uv)
span#busuanzi_container_site_uv!= theme.busuanzi.site_uv_header
span#busuanzi_value_site_uv
span!=theme.busuanzi.site_uv_footer
if(theme.busuanzi.site_pv)
if(theme.busuanzi.site_pv)
span.footer-separator |
span#busuanzi_container_site_pv!= theme.busuanzi.site_pv_header
span#busuanzi_value_site_pv
span!=theme.busuanzi.site_pv_footer
else
if(theme.busuanzi.page_pv)
span#busuanzi_container_page_pv!= theme.busuanzi.page_pv_header
span#busuanzi_value_page_pv
span!=theme.busuanzi.page_pv_footer
else
if(theme.busuanzi.site_uv)
span#busuanzi_container_site_uv!= theme.busuanzi.site_uv_header
span#busuanzi_value_site_uv
span!=theme.busuanzi.site_uv_footer
if(theme.busuanzi.site_pv)
if(theme.busuanzi.site_pv)
span.footer-separator |
span#busuanzi_container_site_pv!= theme.busuanzi.site_pv_header
span#busuanzi_value_site_pv
span!=theme.busuanzi.site_pv_footer

View File

@@ -0,0 +1,27 @@
#footer.layout
- var now = new Date()
- var nowYear = now.getFullYear()
if theme.since && theme.since != nowYear
.copyright!= `&copy;${theme.since} - ${nowYear} By ${config.author}`
else
.copyright!= `&copy;${nowYear} By ${config.author}`
if theme.footer_copyright.enable
.framework-info
span= _p('footer.driven') + ' '
a(href='http://hexo.io')
span Hexo
span.footer-separator |
span= _p('footer.theme') + ' '
a(href='https://github.com/Molunerfinn/hexo-theme-melody')
span Melody
//- if theme.runtimeshow.enable
//- script(src=url_for('js/runtimeshow.js'))
//- div#span_dt_dt
if theme.footer_custom_text
.footer_custom_text!=`${theme.footer_custom_text}`
if theme.ICP.enable
.icp
a(href=theme.ICP.url)
span=theme.ICP.text
//- if theme.busuanzi.enable
//- include ./count/busuanzi.pug

View File

@@ -0,0 +1 @@
#gallery!= page.content

View File

115
layout/includes/head.pug Normal file
View File

@@ -0,0 +1,115 @@
- var without_index = url.replace('index.html', '')
- var without_html = without_index.replace('.html', '')
meta(http-equiv="x-dns-prefetch-control" content="on")
if theme.canonical
link(rel="canonical" href=without_html)
if theme.twitter_meta
meta(name="twitter:card" content="summary_large_image")
meta(name="twitter:title" content=pageTitle_no_include_blog_name)
meta(name="twitter:description" content=pageDescription)
meta(name="twitter:image" content= page.cover|| theme.avatar)
if theme.Open_Graph_meta
if is_post()
meta(property="og:type" content="article")
else
meta(property="og:type" content="website")
meta(property="og:title" content=pageTitle_no_include_blog_name)
meta(property="og:url" content=without_html)
meta(property="og:site_name" content=config.title)
meta(property="og:description" content=pageDescription)
meta(property="og:image" content= page.cover|| theme.avatar)
if theme.disable_baidu_transformation
meta(http-equiv="Cache-Control" content="no-transform")
meta(http-equiv="Cache-Control" content="no-siteapp")
if is_post()
if(page.prev)
link(rel="prev" title=page.prev.title href=url_for(page.prev.permalink) )
if(page.next)
link(rel="next" title=page.next.title href=url_for(page.next.permalink) )
if theme.algolia_search.enable
link(rel="dns-prefetch" href="https://cdn.jsdelivr.net")
link(rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.css")
script(src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.1.1/dist/instantsearch.min.js" defer)
if (theme.gitment && theme.gitment.enable)
link(rel="dns-prefetch" href="https://unpkg.com")
link(rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/gitment/style/default.min.css")
script(src="https://cdn.jsdelivr.net/npm/gitment/dist/gitment.browser.min.js")
script(src="https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js")
if (theme.gitalk && theme.gitalk.enable)
link(rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.css")
if(theme.gitalk.js)
script(src=theme.gitalk.js)
else
script(src="https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js")
script(src="https://cdn.jsdelivr.net/npm/blueimp-md5@2.10.0/js/md5.min.js")
//- if (theme.pwa && theme.pwa.enable)
//- link(rel="manifest" href=theme.pwa.manifest)
if (theme.pwa && theme.pwa.enable)
link(rel="manifest" href=theme.pwa.manifest)
if(theme.pwa.theme_color)
meta(name="theme-color" content=theme.pwa.theme_color)
if(theme.pwa.theme_color)
meta(name="msapplication-TileColor" content=theme.pwa.theme_color)
if(theme.pwa.apple_touch_icon)
link(rel="apple-touch-icon" sizes="180x180" href=theme.pwa.apple_touch_icon)
if(theme.pwa.favicon_32_32)
link(rel="icon" type="image/png" sizes="32x32" href=theme.pwa.favicon_32_32)
if(theme.pwa.favicon_16_16)
link(rel="icon" type="image/png" sizes="16x16" href=theme.pwa.favicon_16_16)
if(theme.pwa.mask_icon)
link(rel="mask-icon" href=theme.pwa.mask_icon color="#5bbad5")
if(theme.pwa.shortcut_icon)
link(rel="shortcut icon", href=theme.pwa.shortcut_icon)
if theme.baidu_analytics
link(rel="dns-prefetch" href="https://hm.baidu.com")
script.
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?!{theme.baidu_analytics}";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
if theme.google_analytics
link(rel="dns-prefetch" href="https://www.google-analytics.com")
script.
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '!{theme.google_analytics}', 'auto');
ga('send', 'pageview');
if theme.google_site_verification
meta(name="google-site-verification" content=theme.google_site_verification)
if theme.bing_site_verification
meta(name="msvalidate.01" content=theme.bing_site_verification)
if theme.baidu_site_verification
meta(name="baidu-site-verification" content=theme.baidu_site_verification)
if theme.qihu_site_verification
meta(name="360-site-verification" content=theme.qihu_site_verification)
if (is_archive())
- var preload_img = theme.archive_img ||theme.top_img || config.top_img
link(rel="preload" href=preload_img as="image" )
else if (!is_post())
- var preload_img = page.top_img||theme.top_img || config.top_img
link(rel="preload" href=preload_img as="image" )

View File

@@ -0,0 +1,21 @@
#page-header
span.pull-left
a#site-name(href=url_for('/')) #[=config.title]
//- i.fa.fa-bars.toggle-menu.pull-right(aria-hidden="true")
.open.toggle-menu.pull-right
.menu-icon-first
.menu-icon-second
.menu-icon-third
span.pull-right.menus
each value, label in theme.menu
a.site-page(href=value.split('||')[0])
i.fa-fw(class=value.split('||')[1])
span=' '+label
script.
document.body.addEventListener('touchstart', function(){ });
span.pull-right
if (theme.algolia_search.enable || theme.local_search && theme.local_search.enable)
a.site-page.social-icon.search
i.fa.fa-search.fa-fw
span=' '+_p('search')

View File

@@ -0,0 +1,83 @@
- var pageTitle = page.title || config.subtitle || ''
- if (is_archive()) pageTitle = _p('page.archives')
- if (is_tag()) pageTitle = _p('page.tag') + ': ' + page.tag
- if (is_category()) pageTitle = _p('page.category') + ': ' + page.category
- if (is_month()) pageTitle += ': ' + page.month + '/' + page.year
- if (is_year()) pageTitle += ': ' + page.year
- var pageTitle_saved //- 暂时存储pageTitle
- var pageTitle_no_include_blog_name //- 存储pageTitle 不带 " | "meta用
//- home时显示config.title (JerryC),其他显示 pageTitle。meta用
- is_home() ? pageTitle_no_include_blog_name = config.title : pageTitle_no_include_blog_name = pageTitle
//- 暂时存储pageTitle
- pageTitle ? pageTitle_saved = pageTitle + ' | ' + config.title : pageTitle_saved = config.title
//- home时pageTitle显示 JerryC - subtitle其他显示 pageTitle | JerryC
- is_home() ? pageTitle = config.title + ' - ' + config.subtitle : pageTitle = pageTitle_saved
- var pageDescription = page.description || page.title || config.description || ''
- var pageKeywords = (config.keywords || []).join(',')
- if (page.tags && page.tags.data) pageKeywords = page.tags.data.map(function(tag) {return tag.name;}).join(',')
- var pageAuthor = config.email ? config.author + ',' + config.email : config.author
- var pageCopyright = config.copyright || config.author
doctype html
html(lang=config.language)
head
meta(charset='UTF-8')
meta(http-equiv="X-UA-Compatible" content="IE=edge")
meta(name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1")
title= pageTitle
meta(name="description" content=pageDescription)
meta(name="keywords" content=pageKeywords)
meta(name="author" content=pageAuthor)
meta(name="copyright" content=pageCopyright)
meta(name ="format-detection" content="telephone=no")
//- !=favicon_tag(config.favicon || theme.favicon || '/favicon.ico')
if theme.stylesheets !== undefined && theme.stylesheets.length > 0
each url in theme.stylesheets
link(rel='stylesheet', href=url_for(url))
each item in theme.cdn.css
if item !== undefined
link(rel='stylesheet', href=item)
include ./head.pug
include ./config.pug
body
if (is_post() && page.toc != false && theme.toc.enable)
i.fa.fa-arrow-right#toggle-sidebar(aria-hidden="true")
include ./sidebar.pug
if (!is_post())
include ./nav.pug
#content-outer
block top_img
if (!is_post())
#content-inner.layout_page
if body
div!= body
else
block content
else
#content-inner.layout.layout_post
if body
div!= body
else
block content
//- - var top_img = page.top_img || theme.post_meta.top_img || theme.top_img || config.top_img || true
//- - var bg_img = top_img !== true ? `background-image: url(${top_img})` : ''
//- - var footer_bg_class= bg_img ? 'footer-bg' : ''
//- footer(style=bg_img class=footer_bg_class)
footer
include ./footer.pug
i.fa.fa-arrow-up#go-up(aria-hidden="true")
include ./rightside.pug
each item in theme.cdn.js
if item !== undefined
script(src=url_for(item))
if theme.scripts !== undefined && theme.scripts.length > 0
//- scripts list from config.yml
each url in theme.scripts
script(src=url_for(url))
include ./additional-js.pug
include ./search/index.pug

View File

@@ -0,0 +1,12 @@
mixin articleSort(posts)
.article-sort
- var year
- posts.each(function (article) {
- var tempYear = date(article.date, 'YYYY')
if tempYear !== year
- year = tempYear
.article-sort-item.year= year
.article-sort-item
time.article-sort-item__time= date(article.date)
a.article-sort-item__title(href=url_for(article.path))= article.title || 'No Title'
- })

36
layout/includes/nav.pug Normal file
View File

@@ -0,0 +1,36 @@
if (is_archive())
- var top_img = theme.archive_img ||theme.top_img || config.top_img
else
- var top_img = page.top_img||theme.top_img || config.top_img
- var bg_img = top_img && top_img !== true ? `background-image: url(${top_img})` : ''
- var flag = top_img === true ? 'no-bg' : ''
if is_home()
nav#nav.full_page(style=bg_img class=flag)
include ./header.pug
#site-info
#site-title
span.blogtitle= page.title || page.tag || page.category || config.title
#site-sub-title
span.subtitle
if(theme.social)
#site-social-icons
each url, icon in theme.social
a.social-icon(href=url target="_blank")
i(class=icon)
.scroll-down
i.fa.fa-angle-down.scroll-down-effects
else
nav#nav.bg_local(style=bg_img class=flag)
include ./header.pug
#page_site-info
#site-title
if (is_archive())
span.blogtitle= _p('archives')
else
span.blogtitle= page.title || page.tag || page.category || config.title

View File

@@ -0,0 +1,56 @@
-
var options = {
prev_text: '<i class="fa fa-chevron-left"></i>',
next_text: '<i class="fa fa-chevron-right"></i>',
mid_size: 1
}
if(!is_post())
nav#pagination
div.pagination
!=paginator(options)
else
nav#pagination.pagination_post
if(page.prev)
if(page.next)
.prev-post.pull-left
- var pagination_cover = page.prev.cover || theme.default_cover
a(href=url_for(page.prev.path))
img.prev_cover.lozad(data-src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` )
.label=_p('pagination.prev')
.prev_info
//- i.fa.fa-chevron-left
span=page.prev.title
else
.prev-post.pull-full
- var pagination_cover = page.prev.cover || theme.default_cover
a(href=url_for(page.prev.path))
img.prev_cover.lozad(data-src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
.label=_p('pagination.prev')
.prev_info
//- i.fa.fa-chevron-left
span=page.prev.title
if(page.next)
if(page.prev)
.next-post.pull-right
- var pagination_cover = page.next.cover || theme.default_cover
a(href=url_for(page.next.path))
img.next_cover.lozad(data-src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
.label=_p('pagination.next')
.next_info
span=page.next.title
//- i.fa.fa-chevron-right
else
.next-post.pull-full
- var pagination_cover = page.next.cover || theme.default_cover
a(href=url_for(page.next.path))
img.next_cover.lozad(data-src=`${pagination_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'`)
.label=_p('pagination.next')
.next_info
span=page.next.title
//- i.fa.fa-chevron-right

View File

@@ -0,0 +1,59 @@
each article , index in page.posts.data
.recent-post-item.article-container
- var link = article.link || article.path
if index%2 == 0
.post_cover.is_left
a(href=url_for(link))
- var post_cover = article.cover
- var default_post_cover = theme.default_cover
if (post_cover)
img.post_bg.lozad(data-src=`${post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` title=article.title || _p('no_title'))
else
img.post_bg.lozad(data-src=`${default_post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` title=article.title || _p('no_title'))
else
.post_cover.is_right
a(href=url_for(link))
- var post_cover = article.cover
- var default_post_cover = theme.default_cover
if (post_cover)
img.post_bg.lozad(data-src=`${post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` title=article.title || _p('no_title'))
else
img.post_bg.lozad(data-src=`${default_post_cover}` onerror=`onerror=null;src='${theme.lodding_bg.post_page}'` title=article.title || _p('no_title'))
.recent-post-info
a.article-title(href=url_for(link) title=article.title || _p('no_title'))= article.title || _p('no_title')
if (article.top)
span.article-meta
i.fa.fa-thumb-tack.article-meta__icon.sticky
span.sticky= _p('sticky')
span.article-meta__separator(style="margin-right: 0.3rem") |
if (theme.post_meta.date_type)
- var date_type = theme.post_meta.date_type == 'updated' ? 'updated' : 'date'
time.post-meta__date #[i.fa.fa-calendar(aria-hidden="true")] #[=date(article[date_type], config.date_format)]
if (theme.post_meta.categories && article.categories.data.length > 0)
span.article-meta
span.article-meta__separator |
each item, index in article.categories.data
i.fa.fa-inbox.article-meta__icon(aria-hidden="true")
a(href=url_for(item.path)).article-meta__categories #[=item.name]
if (index < article.categories.data.length - 1)
i.fa.fa-angle-right(aria-hidden="true")
//- if (theme.post_meta.tags && article.tags.data.length > 0)
//- span.article-meta.tags
//- span.article-meta__separator |
//- each item, index in article.tags.data
//- i.fa.fa-tag.article-meta__icon(aria-hidden="true")
//- a(href=url_for(item.path)).article-meta__tags #[=item.name]
//- if (index < article.tags.data.length - 1)
//- span.article-meta__link -
if theme.auto_excerpt && theme.auto_excerpt.enable
- const content = strip_html(article.content)
- let expert = content.substring(0, theme.auto_excerpt.length)
- content.length > theme.auto_excerpt.length ? expert += ' ...' : ''
.content!= expert
.more_setting
a.more.more--border.more--primary.more--animated(href=url_for(link) + '#more' style="margin-top: 14px")= _p('read_more')
else
.content!= post_description

View File

@@ -0,0 +1,65 @@
.post-reward
a.reward-buttom
i.fa.fa-qrcode
= ' ' + _p('donate')
.reward-main
ul.reward-all
each item in theme.reward.QR_code
li.reward-item
img.lozad.post-qr-code__img(data-src=(item.itemlist||item).img)
.post-qr-code__desc=(item.itemlist||item).text
//- donate-share样式1
//- .post-reward-share
//- .post-reward
//- a.reward-buttom
//- i.fa.fa-qrcode
//- = ' ' + _p('donate')
//- .reward-main
//- ul.reward-all
//- each item in theme.QR_code
//- li.reward-item
//- img.lozad.post-qr-code__img(data-src=(item.itemlist||item).img)
//- .post-qr-code__desc=(item.itemlist||item).text
//- .post-share
//- include share/index.pug
//- a.share-buttom
//- i.fa.fa-share-alt
//- = ' ' + _p('share')
//- donate-share样式1
//- #social
//- .social-main
//- span.social-donate
//- a#social-donate
//- i.fa.fa-qrcode
//- = _p('donate')
//- .circle
//- .circle-empty
//- span
//- span.circle_item
//- a(style="cursor:pointer")
//- .social-sharebutton
//- span.share-s
//- a(href="javascript:void(0)" id="share-s" title=_p('share'))
//- i.fa.fa-share-alt
//- = _p('share')
//- include share/index.pug
//- if (theme.QR_code)
//- if (theme.QR_code.length > 0)
//- .post-qr-code
//- each item in theme.QR_code
//- .post-qr-code-item
//- img.lozad.post-qr-code__img(data-src=(item.itemlist||item).img)
//- .post-qr-code__desc=(item.itemlist||item).text

View File

@@ -0,0 +1,7 @@
section#rightside.rightside
if page.comments !== false && !is_home() && !is_archive()
i#to_comment.fa.fa-comments-o
if theme.translate && theme.translate.enable
a#translateLink.translate_chn_to_cht=theme.translate.show
if theme.nightshift.enable
i#nightshift.fa.fa-moon-o.nightshift

View File

@@ -0,0 +1,12 @@
#algolia-search.search-dialog
#algolia-search-title.search-dialog__title Algolia
#algolia-input-panel
#algolia-search-input
hr
#algolia-search-results
#algolia-hits
#algolia-pagination
#algolia-stats
span.search-close-button
i.fa.fa-times
.search-mask

View File

@@ -0,0 +1,5 @@
if (theme.algolia_search.enable)
include ./algolia.pug
if (theme.local_search)
if (!theme.algolia_search.enable && theme.local_search.enable)
include ./local-search.pug

View File

@@ -0,0 +1,23 @@
#local-search.search-dialog
#local-search-title.search-dialog__title=_p("local_search.label")
#local-input-panel
#local-search-input
.local-search-box
input(placeholder=_p("local_search.input_placeholder")).local-search-box--input
hr
#local-search-results
#local-hits
#local-stats
#hr.local-search-stats__hr
case config.language
when "zh-Hans"
span=_p("local_search.by")
| #[a(href="https://github.com/wzpan/hexo-generator-search" style={'color': '#49B1F5'}) hexo-generator-search]
| #[span=_p("local_search.powered")]
when "en"
default
span=_p("local_search.powered_by")
| #[a(href="https://github.com/wzpan/hexo-generator-search" style={'color': '#49B1F5'}) hexo-generator-search]
span.search-close-button
i.fa.fa-times
.search-mask

View File

@@ -0,0 +1,2 @@
.addthis_inline_share_toolbox.pull-right
script(src=`//s7.addthis.com/js/300/addthis_widget.js#pubid=${theme.addThis.pubid}` async)

View File

@@ -0,0 +1,13 @@
.addtoany
.a2a_kit.a2a_kit_size_32.a2a_default_style
a.a2a_button_facebook
a.a2a_button_twitter
a.a2a_button_wechat
a.a2a_button_sina_weibo
a.a2a_button_facebook_messenger
a.a2a_button_email
a.a2a_button_copy_link
a.a2a_dd(href="https://www.addtoany.com/share")
script(async src="https://static.addtoany.com/menu/page.js")

View File

@@ -0,0 +1,7 @@
.post_share
if theme.addThis.enable
include ./add-this.pug
else if theme.sharejs && theme.sharejs.enable
include ./share-js.pug
else if theme.addtoany.enable
include ./addtoany.pug

View File

@@ -0,0 +1,4 @@
if (theme.sharejs && theme.sharejs.enable)
.social-share(data-image= page.cover|| theme.avatar data-sites= theme.sharejs.sites)
link(rel="stylesheet" href="https://cdn.jsdelivr.net/npm/social-share.js@1.0.16/dist/css/share.min.css")
script(src="https://cdn.jsdelivr.net/npm/social-share.js@1.0.16/dist/js/social-share.min.js")

View File

@@ -0,0 +1,17 @@
#sidebar
- const showToc = is_post() && page.toc != false && theme.toc.enable
-
let tocNumber
if (page.toc_number !== undefined) tocNumber = page.toc_number
else if (theme.toc.number !== undefined) tocNumber = theme.toc.number
else tocNumber = true
-
if(showToc)
.sidebar-toc
div.sidebar-toc__title= _p('sidebar.catalog')
div.sidebar-toc__progress
span.progress-notice= _p('sidebar.have_read')
span.progress-num 0
span.progress-percentage %
div.sidebar-toc__progress-bar
div.sidebar-toc__content!=toc(page.content, {list_number: tocNumber})

View File

@@ -0,0 +1 @@
script(id="ribbon" src=url_for('https://cdn.jsdelivr.net/gh/jerryc127/CDN@latest/js/piao.js'))

View File

@@ -0,0 +1,3 @@
script(id="ribbon" src=url_for('/js/third-party/canvas-ribbon.js') size=theme.canvas_ribbon.size
alpha=theme.canvas_ribbon.alpha zIndex=theme.canvas_ribbon.zIndex data-click=`${theme.canvas_ribbon.click_to_change}`)

7
layout/includes/third-party/katex.pug vendored Normal file
View File

@@ -0,0 +1,7 @@
link(rel="stylesheet" type="text/css" href=theme.katex.cdn.css)
script(src='https://cdn.jsdelivr.net/npm/katex-copytex@latest/dist/katex-copytex.min.js')
link(rel="stylesheet" type="text/css" href='https://cdn.jsdelivr.net/npm/katex-copytex@latest/dist/katex-copytex.min.css')
script.
$(function () {
$('span.katex-display').wrap('<div class="katex-wrap"></div>')
})

27
layout/includes/third-party/mathjax.pug vendored Normal file
View File

@@ -0,0 +1,27 @@
script(type="text/x-mathjax-config").
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
processEscapes: true,
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
},
CommonHTML: {
linebreaks: { automatic: true, width: "90% container" }
},
"HTML-CSS": {
linebreaks: { automatic: true, width: "90% container" }
},
"SVG": {
linebreaks: { automatic: true, width: "90% container" }
}
});
script(type="text/x-mathjax-config").
MathJax.Hub.Queue(function() {
var all = MathJax.Hub.getAllJax(), i;
for (i=0; i < all.length; i += 1) {
all[i].SourceElement().parentNode.className += ' has-jax';
}
});
script(src=theme.mathjax.cdn)