本文最后更新于:2024年7月14日 上午
Hexo美化之一言添加出处
本人博客使用的是Fluid主题,Fluid主题首页Slogan可以选择显示一言,但是Fluid配置只能显示一言的内容,而不能显示一言的出处,因此本期博客将会对Fluid主题进行改造。
修改博客代码
typed.ejs
修改layout\_partial\plugins
目录下的typed.ejs
,此文件实现了通过api获取一言的功能,其中打印一言也在文件内实现,我们只需要稍微改造一下使其打印出出处即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <% if(theme.fun_features.typing.enable && in_scope(theme.fun_features.typing.scope) && page.subtitle !== false) { %> <%- js_ex(theme.static_prefix.typed, '/typed.min.js') %> <script> (function (window, document) { var typing = Fluid.plugins.typing; var subtitle = document.getElementById('subtitle'); if (!subtitle || !typing) { return; } var text = subtitle.getAttribute('data-typed-text'); <% if (is_home() && theme.index.slogan.api && theme.index.slogan.api.enable) { %> jQuery.ajax({ type: '<%= theme.index.slogan.api.method %>', url: '<%- theme.index.slogan.api.url %>', headers: <%- JSON.stringify(theme.index.slogan.api.headers || {}) %>, dataType: 'json', success: function(result) { var apiText; var apiFrom; if (result) { var text_keys = '<%= theme.index.slogan.api.text_keys %>'.split(','); var from_keys = '<%= theme.index.slogan.api.from_keys %>'.split(','); if (result instanceof Array) { result = result[0]; } data = result for (const k of text_keys) { var value = result[k]; if (typeof value === 'string') { apiText = '『' + value + '』'; break; } else if (value instanceof Object) { result = value; } } for (const k of from_keys) { var value = data[k]; if (typeof value === 'string') { apiText += '<br/><br/>'+ '——' + '「' + value + '」' ; break; } else if (value instanceof Object) { data = value; } } } apiText ? typing(apiText) : typing(text); }, error: function(xhr, status, error) { if (error) { console.error('Failed to request <%= theme.index.slogan.api.url %>:', error); } typing(text); } }) <% } else { %> typing(text); <% } %> })(window, document); </script> <% } %>
|
其基本原理就是,遍历theme.index.slogan.api.text_keys
和theme.index.slogan.api.text_keys
两个变量,提取json数据中对应的字段,theme.index.slogan.api.text_keys
即为_config.fluid.yml
配置的字段,这里重新修改了字段因此还要再_config.fluid.yml
修改相应的字段。
修改配置
_config.fluid.yml
定位到_config.fluid.yml
中的slogan
字段,修改为下面内容:
1 2 3 4 5 6 7 8 9 10 11 12
| index: slogan: enable: true api: enable: true url: "https://v1.hitokoto.cn/" method: "GET" headers: {} text_keys: ['hitokoto'] from_keys: ['from']
|