用jekyll制作高大上的網站(二)——實際應用

最近公司要制作個文檔庫,直接就可以將jekyll應用到實際中。

模版使用了Jekyll Clean,這么模版相對內部簡單一點,學習成本不會很大,而復雜的Minimal Mistakes就當作參考。

模版使用的CSS是Bootstrap v3.2.0版本的。為了省時點,我就直接將Bootstrap官網中的CSS和JS拉了下來。

?

一、全局配置

_config.yml文件中可以有多種設置,包括全局配置、編譯選項等。

#網站根目錄
baseurl: /docs# 生成的文件路徑
destination: ../../dist/docs# 分頁
permalink: /:year/:month/:day/:title.html
paginate: 1
paginate_path: "article/:num"# 轉換
markdown: kramdown
highlighter: rouge
excerpt_separator: <!--excerpt-->gems: ['jekyll-paginate']exclude: ['open.bat','Gemfile','Gemfile.lock','Guardfile', 'gulpfile.js']# Collections
collections:common:output: truepermalink: /:collection/:titleui:output: truepermalink: /:collection/:title

1)你網站可能會放在域名的某個文件夾下面,那么根目錄就要帶著那個文件夾,有了“baseurl”的配置,就能方便拼接了。

2)生成的文件路徑“destination”,默認是在_site文件夾中,現在放到了我自定義的文件夾下面。

3)分頁中為了方便演示,每頁僅顯示1條記錄,文章保存方式是年月日+標題,分頁的目錄會在“article”,分頁比較特殊,下面會詳解。

4)markdown就是文章編輯語言,使用了kramdown,kramdown是markdown的超級。highlighter就是代碼高亮的方式,使用了rouge

5)excerpt_separator與文章摘要相關,后面也會詳解。

6)collections就是定義一種新的文檔類型,例如上面定義了“common”,那么在最終生成的文件中,會專門有一個文件夾,這個后面也會說明下。

??

?

?

二、集合(Collections)

1)與文章的區別

在結構中有一個_post文件夾,這個文件夾內放的就是文章列表,文件名就是按年月日+標題的方式起的,最終生成的將是年月日的文件夾。

??

如果把所有各種類型的文章都放在這個里面,管理會比較混亂,例如我有隨筆、UI庫、工具庫等要放在網站展示。

隨筆的話就可以都放在_post文件夾里,但是UI庫等其他類型的文章展示的格式與其不一樣、展示的方式也與其不一樣。

下圖是一張UI庫的頁面,左邊放的是分類,右邊放的內容。如果單獨放在文件夾中,那么就可以很方便的編輯分類鏈接。

<h1>基礎樣式</h1>
<ul><li><a href="{{ site.baseurl }}/ui/typeface.html">文本</a></li><li><a href="{{ site.baseurl }}/ui/icon.html">圖標</a></li><li><a href="{{ site.baseurl }}/ui/grid.html">網格</a></li><li><a href="{{ site.baseurl }}/ui/border.html">邊框</a></li><li><a href="{{ site.baseurl }}/ui/layout.html">布局</a></li>
</ul>

?

2)_data

在上圖的右邊,還有個頁面內容導航,順便說明下:

kramdown會給h1等自動加上ID,上圖中的“h1-h6”就被自動加了ID,里面有英文就用此英文,如果沒有就自動生成。

原先我是將這些內容放在_include文件夾下面,_include內放的都是些頁面通用部分,后面發現頁面越來越多,但是內容都差不多,僅僅是數據不一樣,每次都是在復制黏貼。

?

后面發現jekyll提供了個_data,可以將數據放入此處,再用for循環來輸出,此文件夾內可以使用 .yml、.yaml、.json、csv 擴展名。

- id: "const"name: "普通常量"children:- id: "cookie"name: "cookie"- id: "menu"name: "menu"- id: "to"name: "分享回調中設置的TO"- id: "jsbridge"name: "JSBridge"

在sidenav.html中輸出:

<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix-top"><ul class="nav bs-docs-sidenav">{% for data in site.data[page.sidebar][page.sidenav] %}{% if forloop.first %}<li class="active">{% else %}<li>{% endif %}<a href="#{{ data.id }}">{{ data.name }}</a>{% if data.children %}<ul class="nav">{% for sub in data.children %}<li><a href="#{{ sub.id }}">{{ sub.name }}</a></li>{% endfor %}</ul>{% endif %}</li>{% endfor %}</ul><a href="#top" class="back-to-top">返回頂部</a>
</nav>

jekyll用的是liquid模版引擎,有自己的語法,基本常規的都有。

?

三、文章

1)分類

現在的文章都會有分類,做了區分后,文章能更有調理,下圖是博客園的自定義文章分類。

jekyll的文章中要做分類,可以在頭信息中設置category或categories。

---
layout: article-detail
title: demo
date: 2016-05-09 08:25:06
sidebar: article
category: tool
author: strick
---

在上圖中會顯示這個分類的名字,并且會輸出這個分類下面文章的個數,點擊這個分類名,能夠跳轉到相應的分類下的文章列表。

要實現這幾個功能,可以通過categories的相關屬性獲取。

<h1>隨筆分類</h1>
{% for category in site.categories %}
<ul><li><a href="{{ site.baseurl}}/category/{{ category.first }}.html">{{category.first}}({{category.last.size}})</a></li>
</ul>
{% endfor %}

?

2)文章列表

上面的分類文章列表中,會多個判斷:

{% for category in site.categories %}{% if category.first == page.category %}{% for post in category.last %}
<div class="article"><div class="well"><h1 class="none"><a href="{{ site.baseurl}}{{ post.url }}">{{ post.title }} {{ post.date | date: "(%Y年%m月%d日)" }}</a></h1><div class="content">{{ post.excerpt | strip_html }}</div></div>
</div>{% endfor %}{% endif %}
{% endfor %}

“{{ post.excerpt | strip_html }}”就是在做文章摘要,strip_html是將HTML標簽去除。

“{{ post.date | date: "(%Y年%m月%d日)" }}”是在做格式化時間,上面的頭信息中設置了“date: 2016-05-09 08:25:06”。

?

3)分頁

jekyll的分頁只能在index.html中執行,只能這個文件,其他文件是不能執行,“paginator”對象中的屬性都將為空。

在上面的_config.yml中設置了兩個關于分頁的屬性,一個是每頁顯示的數量,一個是分頁文件輸出的方式。

paginate: 1
paginate_path: "article/:num"

沒有把頁碼1給輸出,我在做分頁的時候,就每次都得多做個判斷。

頁面的樣式就直接用了Bootstrap的分頁

<ul class="pagination"><li><a href="{{ site.baseurl}}/article/"><span>首頁</span></a></li><li>{% if paginator.page == 1 %}<span>&laquo;</span>{% else %}{% if paginator.previous_page == 1 %}<a href="{{ site.baseurl}}/article/">{% else %}<a href="{{ site.baseurl}}/article/{{ paginator.previous_page }}">{% endif %}<span>&laquo;</span></a>{% endif %}</li>{% for i in (1..paginator.total_pages) limit:9 offset:{{paginator.page-1}} %}{% if paginator.page == i %}<li class="active">{% else %}<li>{% endif %}{% if i == 1 %}<a href="{{site.baseurl}}/article">{{i}}</a>{% else %}<a href="{{site.baseurl}}/article/{{i}}">{{i}}</a>{% endif %}</li>{% endfor %}<li>{% if paginator.page == paginator.total_pages %}<span>&raquo;</span>{% else %}<a href="{{ site.baseurl}}/article/{{ paginator.next_page }}"><span>&raquo;</span></a>{% endif %}</li><li><a href="{{ site.baseurl}}/article/{{paginator.total_pages}}"><span>末頁</span></a></li><li class="disabled"><span>第{{paginator.page}}頁 / 共{{paginator.total_pages}}頁</span></li>
</ul>

?

demo下載:

http://download.csdn.net/download/loneleaf1/9518315

?

參考資料:

Syntax Highlighting in Jekyll With Rouge?

Rouge支持的語言

kramdown語法

Kramdown 語法文檔翻譯

文章分類索引

為Jekyll增加不完美的分頁和文章摘要



? ? 本文轉自 咖啡機(K.F.J) ? 博客園博客,原文鏈接:http://www.cnblogs.com/strick/p/5484779.html,如需轉載請自行聯系原作者



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285339.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285339.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285339.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python腳本模擬登錄網頁之CSDN篇

1. 通過Firefox配合插件Tamper Date獲取登錄時客戶端向服務器端提交的數據, 并且發現lt和execution這兩個字段每次登錄時都不一樣. POSTDATAusernameyour_id&passwordyour_pwd&ltLT-239317-XyzqoketZ2AhHE5BSIKLwW7gNyb4sP&executione2s1&_eventIdsubmit 2. 于…

C語言試題129之求一個 3乘3 矩陣對角線元素之和

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:求一個 3乘3 矩陣對角線元素之和 分析:利用雙重 for 循環控制輸入二維數組,再將 a[…

ssh key生成

Mac電腦用終端生成SSH key 訪問自己的Github 字數684 閱讀427 評論4 喜歡15前言&#xff1a;最近有不少剛剛使用github管理代碼的開發者或者新手碼農在網上 問我如何關聯自己的github&#xff0c;今天就寫篇文章僅供參考。一、首先你要檢測自己電腦是否存在 SSH key 在終端輸出…

[轉]小白都能看懂的softmax詳解

1.softmax初探 在機器學習尤其是深度學習中&#xff0c;softmax是個非常常用而且比較重要的函數&#xff0c;尤其在多分類的場景中使用廣泛。他把一些輸入映射為0-1之間的實數&#xff0c;并且歸一化保證和為1&#xff0c;因此多分類的概率之和也剛好為1。 首先我們簡單來看看s…

MAUI 入門教程系列(5.XAML及頁面介紹)

前言作為微軟的UI框架&#xff0c;除了Winform以外&#xff0c;多數是以創建XAML文件的方式來編寫前端的頁面&#xff0c;盡管你也可以通過C#代碼來編寫你的用戶界面&#xff0c;與Xamarin.Forms相同&#xff0c;在MAUI上編寫XAML的聲明方式與其相同&#xff0c;重構了底層部分…

藍牙mesh網絡基礎

藍牙mesh網絡基礎轉載于:https://blog.51cto.com/11534544/2044130

Linux系統開機自啟流程

第一步&#xff1a;POST&#xff08;Power On Safe Test&#xff09;加電自檢當按下電源鍵以后&#xff0c;CPU因為有電流通過便開始對自身、I/O設備、內存等硬件進行檢驗。那么CPU如何得知這些自檢指令&#xff1f;我們知道指令存在于內存當中&#xff0c;尋找內存也需要指令。…

ArcGIS空間數據:矢量和柵格數據結構詳解

文章目錄 矢量數據結構矢量數據簡介Shapefile矢量格式柵格數據結構地理數據庫中的柵格柵格管理策略柵格數據的地理屬性柵格的地理屬性通常包括地理數據集中的柵格塊表實體柵格表示矢量數據結構 矢量數據簡介 基于矢量數據模型的數據結構簡稱矢量數據結構,是通過記錄實體坐標…

C語言試題130之有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中 分析:先判…

[轉]一文讀懂目標檢測:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 https://blog.csdn.net/kwame211/article/details/88016151 一、目標檢測常見算法 object detection&#xff0c;就是在給定的圖片中精確找到物體所在位置&#xff0c;并標注出物體的類別。所以&a…

在代碼中使用度量單位,從而生活更美好

在我們的應用軟件中&#xff0c;涉及到物理化學計算時&#xff0c;只有 Frink 、F#、Modelica 少數語言變量是自帶單位的&#xff0c;大部分語言變量僅包含數值&#xff0c;單位轉換需要在變量進行公式計算之前完成&#xff0c;計算后再把結果單位轉換為輸出單位&#xff0c;單…

C#(Sharp)進階篇:文件操作

文章目錄 8.1 文件系統概述8.2 驅動器、目錄和文件8.2.1 與IO操作相關的枚舉8.2.2 驅動器8.2.3 目錄8.2.4 文件8.3 文件流和數據流8.3.1 抽象類Stream8.3.2 文件流FileStream8.3.3 流的文本讀寫器8.3.4 流的二進制讀寫器8.3.5 常用的其他流對象8.4 應用實例8.1 文件系統概述

shell中字符串操作【轉】

轉自&#xff1a;http://blog.chinaunix.net/uid-29091195-id-3974751.html 我們所遇到的編程語言中(匯編除外)都少不了字符串處理函數吧&#xff0c; 當然shell編程也不例外咯&#xff0c;那么下面我們一起來看下shell中字符串 處理的相關操作吧。大概下面的字符串操作可以分為…

如何提高上傳帶寬

參考文章&#xff1a;http://jingyan.baidu.com/article/db55b609af631b4ba30a2f23.html 1、已管理員身份運行&#xff1a;netsh interface tcp set global autotuningdisabled 2、 打開注冊表 找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\A FD\Parameters 3、創建新…

[轉]神經網絡框架

Pytorch上手使用 近期學習了另一個深度學習框架庫Pytorch&#xff0c;對學習進行一些總結&#xff0c;方便自己回顧。 Pytorch是torch的python版本&#xff0c;是由Facebook開源的神經網絡框架。與Tensorflow的靜態計算圖不同&#xff0c;pytorch的計算圖是動態的&#xff0c;可…

Eclipse啟動時布局不合理調整

1. 關掉 啟動頁 2. 關掉InstSearch頁 3.修正InSearch布局 3.1 默認InstSearch不合理&#xff0c;影響使用。 3.2 Inst 搜索一次&#xff0c;然后最小化InstSearch框&#xff0c;再從右側點擊&#xff0c;即可。轉載于:https://www.cnblogs.com/jhj117/p/6121298.html

10分鐘實現dotnet程序在linux下的持續部署

背景 一直以來&#xff0c;程序署都是非常麻煩且無聊的事情&#xff0c;在公司一般都會有 devops 方案&#xff0c;整個 cicd 過程涉及的工具還是挺多的&#xff0c;搭建起來比較麻煩。那么對于一些自己的小型項目&#xff0c;又不想搭建一套這樣的環境&#xff0c;怎么辦呢。。…

C語言試題131之將一個數組逆序輸出。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:將一個數組逆序輸出。 分析:…

【錯誤異常大全】:無法加載 DLL“ArcGISVersion.dll”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。

文章目錄 錯誤異常解決方案錯誤異常 無法加載 DLL“ArcGISVersion.dll”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。 解決方案 將目標平臺改為x86,具體步驟如下: 點擊【配置管理器】。 下拉活動解決方案平臺,點擊【新建】。 選擇x86,點擊【確定】。

Go語言之反射

和Java語言一樣&#xff0c;Go也實現運行時反射&#xff0c;這為我們提供一種可以在運行時操作任意類型對象的能力。比如我們可以查看一個接口變量的具體類型&#xff0c;看看一個結構體有多少字段&#xff0c;如何修改某個字段的值等。TypeOf和ValueOf在Go的反射定義中&#x…