hexo點(diǎn)滴

如果刪除hexo-generator-index插件

如果沒(méi)有hexo-generator-index插件(hexo自帶)显熏,那么你就必須自己在source中創(chuàng)建一個(gè)index,這樣編譯后hexo才會(huì)生成index文件恕稠,讀取localhost:4000時(shí),才能讀取到index樊诺,不然就沒(méi)有l(wèi)ocalhost:4000這個(gè)路徑了


hexo文章類(lèi)型略說(shuō)

  • hexo的所有內(nèi)容管理其實(shí)說(shuō)白了就兩種類(lèi)型 post和page仗考,這兩種類(lèi)型的區(qū)別,邏輯上的就是post是可以列表的啄骇,page是單頁(yè)痴鳄,如about這樣的,具體表現(xiàn)就是生成的post都是在_post文件夾中缸夹,page都是在外層根目錄下自建文件夾的

  • 可以將config中archive_dir:news痪寻,permalink: news/:year/:month/:day/:title/ 這樣就會(huì)把所有post編譯到archive中,節(jié)省一個(gè)文件夾

  • 無(wú)論是index tag category archive虽惭,都不過(guò)是文章集合的再編輯形式而已橡类,他們的形式基本為:

--- index
--- page(這里面是index的分頁(yè)頁(yè)面文件夾)

--- tag
------ tagName
--------- page(這里面是tag的分頁(yè)頁(yè)面文件夾)
------------ 02(從第二頁(yè)開(kāi)始)
--------------- index.html(分頁(yè)頁(yè)面)
--------- index.html(分頁(yè)頁(yè)面)
------ index.html(匯總頁(yè)面)


image.png

--- categories
------ categorieName
--------- page(這里面是tag的分頁(yè)頁(yè)面文件夾)
------------ 02(從第二頁(yè)開(kāi)始)
--------------- index.html(分頁(yè)頁(yè)面)
--------- index.html(tag匯總頁(yè)面)


image.png

--- archive
------ 2019(這里面是年份頁(yè)面文件夾)
--------- 01
------ index.html(匯總頁(yè)面)

生成結(jié)構(gòu)基本就是這個(gè)樣子的


生成器中name的用途

hexo.extend.generator.register(name, function(locals){
});
這個(gè)里面的 name 是做什么的呢?
其實(shí)這是注冊(cè)了后面運(yùn)行函數(shù)的代號(hào)
按照package.json里面加載插件的順序
會(huì)依次運(yùn)行代號(hào)里面的函數(shù)
如果重名
那么在最后面的插件就會(huì)把前面的同名函數(shù)取代掉
就是覆蓋啦~
如:
hexo-generator-tag/index.js

hexo.extend.generator.register('tag', require('./lib/generator'));

注冊(cè)了名為tag的生成器
我們自己定義一個(gè)插件
hexo-generator-tag-myself/index.js

hexo.extend.generator.register('tag', require('./lib/generator-tag'));

名字一樣
那么就看在package.json中 哪一個(gè)后加載
哪個(gè)在后面 就用哪個(gè)生成器

通過(guò)上面的邏輯 再結(jié)合hexo源代碼

hexo/lib/plugins/generator/index.js

'use strict';

module.exports = ctx => {
  const { generator } = ctx.extend;

  generator.register('asset', require('./asset'));
  generator.register('page', require('./page'));
  generator.register('post', require('./post'));
};

其實(shí) asset page post 全部都是利用generator生成的芽唇,所以
我們可以通過(guò)重寫(xiě)asset page post的編譯內(nèi)容 更改其路徑和內(nèi)容
如:

hexo.extend.generator.register('post', function(locals){
    return locals.posts.map(function(post){
      return {
        path: "book/"+post.path,
        data: post,
        layout: 'post'
      };
    });
  });

這樣就重寫(xiě)了post生成器


生成頁(yè)面的path的規(guī)律

hexo.extend.generator.register('generator-name', function(locals){
    return {
      1) path: 'demo',  //根目錄生成demo無(wú)格式文件
      2) path: 'demo.html', //根目錄生成demo.html
      3) path: 'aaa/demo.html', //生成aaa文件夾下demo.html
      4) path: 'aaa/bbb/demo.html', //生成aaa/bbb文件夾下demo.html
      5) path: 'aaa/bbb/demo', //生成aaa/bbb文件夾下demo無(wú)格式文件
      6) path: 'aaa/bbb/demo/', //生成aaa/bbb/demo文件夾下index.html文件
      data: locals.posts,
      layout: ['duan']
    }
  });

注意:第六個(gè)規(guī)則最重要顾画,只需要在后面加“/”,那么就會(huì)自動(dòng)生成index.html

如果用hexo-pagination匆笤,第一個(gè)參數(shù)path是可以不帶"/"的研侣,插件里面自己寫(xiě)了會(huì)自動(dòng)加上
也就是說(shuō)分頁(yè)只需要寫(xiě)路徑就會(huì)自動(dòng)生成index.html


插件的寫(xiě)法

node_modules 文件夾中建立文件夾,文件夾名稱(chēng)開(kāi)頭必須為 hexo-

.
├── index.js
└── package.json

package.json 中至少要包含 name, version, main 屬性炮捧,例如:

package.json
{
  "name": "hexo-my-plugin",
  "version": "0.0.1",
  "main": "index"
}

注意:最重要的一步庶诡,需要將此插件添加都package.json的dependencies中即可

  "dependencies": {
    "hexo": "^3.7.0",
    "hexo-generator-archive": "^0.1.5",
    "hexo-generator-category": "^0.1.3",
    "hexo-generator-tag": "^0.2.0",
    "hexo-generator-basic-set": "^0.1.1",
    "hexo-renderer-ejs": "^0.3.1",
    "hexo-renderer-marked": "^0.3.2",
    "hexo-renderer-stylus": "^0.3.3",
    "hexo-server": "^0.3.1",
    "hexo-my-plugin": "0.0.1"  // 這是我們自己的插件
  }

var localizedPath = ['docs', 'api'];
~localizedPath.indexOf(title)
查找數(shù)組中的 "Apple" 元素:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
a 結(jié)果輸出:

2
以上輸出結(jié)果意味著 "Apple" 元素位于數(shù)組中的第 3 個(gè)位置。

取反的用法是咆课,是因?yàn)?1的取反操作等于0末誓,而其他數(shù)的取反操作不等于0。所以用indexOf操作符可以用操作來(lái)判斷某個(gè)字符串里是否有某個(gè)字符书蚪。

var str = '123456'
if(~str.indexOf(0)){
  console.log('因?yàn)槿》粗蟛粸榱憷瑁f(shuō)明indexOf的結(jié)果不等于-1,所以表示str字符串里包含了對(duì)應(yīng)字符')
} else {
  console.log('說(shuō)明取反之后為零殊校,說(shuō)明indexOf的結(jié)果等于-1晴玖,所以表示str字符串里不包含了對(duì)應(yīng)字符')
}

凡是在_post文件夾下的文件,都是用的post模板
凡是不在_post文件夾下的为流,全部都用page窜醉,除非指定了布局文件


多語(yǔ)言文件是和url的多語(yǔ)言一一對(duì)應(yīng)的 page.lang也會(huì)隨之變化

/index.html => en
/archives/index.html => en
/zh-tw/index.html => zh-tw

如果想缺省狀態(tài)下是en
需要先聲明

language: en

如果一個(gè)國(guó)際化頁(yè)面的url為localhost:4000/zh/ ,那么只有監(jiān)測(cè)到在語(yǔ)言文件夾下有zh.yml文件時(shí)艺谆,page.lang才會(huì)變?yōu)椤皕h”


<%- partial('_partial/header', null, {cache: !config.relative_link}) %>

這是個(gè)大坑
緩存如果是true,那么helper函數(shù)就只運(yùn)行一次 這樣的話 我們生成的頁(yè)面就用的第一次生成的頁(yè)面 很糟糕

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拜英,一起剝皮案震驚了整個(gè)濱河市静汤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖虫给,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藤抡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抹估,警方通過(guò)查閱死者的電腦和手機(jī)缠黍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)药蜻,“玉大人瓷式,你說(shuō)我怎么就攤上這事∮镌螅” “怎么了贸典?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)踱卵。 經(jīng)常有香客問(wèn)我廊驼,道長(zhǎng),這世上最難降的妖魔是什么惋砂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任妒挎,我火速辦了婚禮,結(jié)果婚禮上西饵,老公的妹妹穿的比我還像新娘酝掩。我一直安慰自己,他們只是感情好罗标,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布庸队。 她就那樣靜靜地躺著,像睡著了一般闯割。 火紅的嫁衣襯著肌膚如雪彻消。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天宙拉,我揣著相機(jī)與錄音宾尚,去河邊找鬼。 笑死谢澈,一個(gè)胖子當(dāng)著我的面吹牛煌贴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锥忿,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼牛郑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了敬鬓?” 一聲冷哼從身側(cè)響起淹朋,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤笙各,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后础芍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體杈抢,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年仑性,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惶楼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诊杆,死狀恐怖歼捐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刽辙,我是刑警寧澤窥岩,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宰缤,受9級(jí)特大地震影響颂翼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜慨灭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一朦乏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧氧骤,春花似錦呻疹、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至朦佩,卻和暖如春并思,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背语稠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工宋彼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仙畦。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓输涕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親慨畸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子莱坎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容