這裡簡單紀錄一下pelican設定步驟,紀錄的很隨便,主要是給自己看的,因為整個主題跟功能大多是自己刻的,所以過程會相對複雜一點
- 先做venv
python3.5 -m venv VENV
source VENV/bin/activate
安裝套件
pip install pelican
pip install Markdown
pip install ghp-import
快速設定
pelican-quickstart
建一個repository,這裡用gp-pages的方式,所以名稱自訂
初始化一個git
git init
git remote add origin {你的專案.git}
之後使用sh develop_server.sh start
就可以執行
喜好設定
開啟Makefile:
改GITHUB_PAGES_BRANCH=gh-pages
在github: publish
後面加入:
pelican content -o output -s publishconf.py
這樣每次只要make github
,就會自動產生publish版本的到content,之後再推到github上
設定檔
裝theme:
pelican-themes --install {theme_path}
-l
:list theme installed
pelicanconf.py:
THEME = '{theme-name}'
markdown中使用extension
pip install markdown_checklist
MARKDOWN = {
'extension_configs': {
'markdown.extensions.codehilite': {'css_class': 'highlight'},
'markdown.extensions.extra': {},
'markdown.extensions.meta': {},
'markdown_checklist.extension':{},
'markdown.extensions.nl2br':{},
},
'output_format': 'html5',
}
增加參數在theme中可以直接使用
MENUITEMS = [
('Home', '/custom/about_me.html'),
('SoundCloud', '/custom/soundcloud.html'),
('Blog', '/'),
]
之後template中可以直接使用 {% for name,url in MENUITEMS %}
詳細參考
使用route53做DNS
在cropse.com上面設定A Type
Value:
192.30.252.153
192.30.252.154
在www.cropse.com裡面設定CNAME Type
Value:
cropse.github.io
之後在github增加一個CNAME檔
www.cropse.com
但是每次執行都會被覆蓋掉,所以在makefile
修改ghp-import,增加-c參數
-c CNAME Write a CNAME file with the given CNAME.
這裡用我的網址www.cropse.com
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) -c www.cropse.com $(OUTPUTDIR)
在github->settings:
會顯示:
GitHub Pages
Your site is published at http://www.cropse.com/
參考
註冊google Search Console
新增一個網址路徑來確認,就只是在pelican增加一個網頁的路徑給google確認就好
所以用客製化路徑的功能,我在my-theme/template/custom/
放上google給我的一個靜態檔案googelxxxxxxxxxxxxx.html
之後加入該參數在pelicanconf.py
TEMPLATE_PAGES = {
'custom/googelxxxxxxxxxxxxx.html': 'googelxxxxxxxxxxxxx.html'
}
sitemap for search engine
其實很簡單,只要Google search console 登陸之後,使用plugin sitemap
就可以看到sitemap.xml,上傳之後google search console檢索->Sitemap上傳該路徑即可
可以自己設定一下權重跟更新頻率
PLUGINS=['pelican-plugins-master.sitemap',]
SITEMAP = {
'exclude': ['tag/', 'category/'],
'format': 'xml',
'priorities': {
'articles': 0.5,
'indexes': 0.5,
'pages': 0.5
},
'changefreqs': {
'articles': 'monthly',
'indexes': 'daily',
'pages': 'monthly'
}
}