需更改文件的目录结构
shoka tree . . ├── _config.yml ├── languages │ ├── en.yml │ ├── ja.yml │ ├── zh-CN.yml │ ├── zh-HK.yml │ └── zh-TW.yml ├── layout │ └── _partials │ └── layout.njk ├── scripts │ └── generaters │ └── script.js └── source └── js └── _app ├── global.js └── pjax.js
添加到 source/js/_app/global.js
最后一行:
const isOutdated = function ( ) { if ( CONFIG . isOutdated. enable && LOCAL . isOutdated) { var times = document. getElementsByTagName ( 'time' ) ; if ( times. length === 0 ) { return ; } var posts = document. getElementsByClassName ( 'body md' ) ; if ( posts. length === 0 ) { return ; } var now = Date. now ( ) ; var pubTime = new Date ( times[ 0 ] . dateTime) ; if ( times. length === 1 ) { var updateTime = pubTime; } else { var updateTime = new Date ( times[ 1 ] . dateTime) ; } var interval = parseInt ( now - updateTime) ; var days = parseInt ( CONFIG . outime. days) || 30 ; if ( interval > ( days * 86400000 ) ) { var publish = parseInt ( ( now - pubTime) / 86400000 ) ; var updated = parseInt ( interval / 86400000 ) ; var template = LOCAL . template. replace ( '{{publish}}' , publish) . replace ( '{{updated}}' , updated) ; posts[ 0 ] . insertAdjacentHTML ( 'afterbegin' , template) ; } } }
添加到 source/js/_app/pjax.js
的 siteRefresh
函数的最后一行:
添加第 5 行 cardActive ( ) lazyload. observe ( ) isOutdated ( )
添加到 scripts/generaters/script.js
的 siteConfig
变量中(具体哪一行没要求,加进去就行):
添加第 3 行 loader : theme. loader, search : null , isOutdated : theme. isOutdated, valine : theme. valine,
添加到 layout/_partials/layout.njk
的 LOCAL
变量中(我是加到 ignores
的上一行):
{%- if page.isOutdated === false %} isOutdated: false,{%- else %} isOutdated: true,template: "{{ __('isOutdated.template') }}", {%- endif %}
国际化 i18n
设置,放到 YAML 文件最下面
en.yml isOutdated : template : "<div class=\"note warning\"><p><span class=\"label warning\">Article Timeliness Alert</span><br>This is an article published {{publish}} days ago and last updated {{updated}} days ago. Some information may have changed, so please be careful to screen it.</p></div>"
ja.yml isOutdated : template : "<div class=\"note warning\"><p><span class=\"label warning\">記事の適時性の警告</span><br> {{publish}} 日前に公開され、 {{updated}} 日前に最終更新された記事です。 一部情報が変更されている可能性がありますので、ご了承ください。</p></div>"
zh-CN.yml isOutdated : template : "<div class=\"note warning\"><p><span class=\"label warning\">文章时效性提示</span><br>这是一篇发布于 {{publish}} 天前,最后一次更新在 {{updated}} 天前的文章,部分信息可能已经发生改变,请注意甄别。</p></div>"
zh-HK.yml isOutdated : template : "<div class=\"note warning\"><p><span class=\"label warning\">文章時效性提示</span><br>這是一篇發佈於 {{publish}} 天前,最後一次更新在 {{updated}} 天前的文章,部分信息可能已經發生改變,請注意甄別。</p></div>"
zh-TW.yml isOutdated : template : "<div class=\"note warning\"><p><span class=\"label warning\">文章時效性提示</span><br>這是一篇發佈於 {{publish}} 天前,最後一次更新在 {{updated}} 天前的文章,部分信息可能已經發生改變,請注意甄別。</p></div>"
然后可以通过主题配置文件 _config.shoka.yml
控制:
isOutdated : enable : true days : 30
对于单篇文章可以用 Front-matter
控制:
--- isOutdated: false #关闭检查文章是否失效 ---
效果:
文章时效性提示 这是一篇发布于 100 天前,最后一次更新在 30 天前的文章,部分信息可能已经发生改变,请注意甄别。