目录
博文和页面的区别
元数据
页面
引用内部的链接
链接静态文件
附件
链接标签和分类
语法高亮
发布草稿
首页 web前端 html教程 Pelican系列:开启写作人生_html/css_WEB-ITnose

Pelican系列:开启写作人生_html/css_WEB-ITnose

Jun 24, 2016 am 11:16 AM

博文和页面的区别

Articles: 博文,是指具体写的文章。

Pages: 页面,一般指一些固定不变的页面,比如关于等

元数据

元数据可以进行一些搜索引擎的优化,包含博文的一些基础信息。

如果用reStructuredText来编写内容的话,可以像下面这样写元数据头

My super title##############:date: 2010-10-03 10:20:modified: 2010-10-04 18:40:tags: thats, awesome:category: yeah:slug: my-super-post:authors: Alexis Metaireau, Conan Doyle:summary: Short version for index and feeds
登录后复制

多个标签(tags)和多个作者(authors)可以用逗号分割。

:tags: pelican, publishing tool; pelican, bird:authors: Metaireau, Alexis; Doyle, Conan
登录后复制

Pelican 还支持在reStructuredText中写abbr标签,使用方法如下

This will be turned into :abbr:`HTML (HyperText Markup Language)`.
登录后复制

同样可以使用Markdown语法(以.md,.markdown,.mkd,.mdown结尾的文件),Markdown生成html文件需要Markdown的模块支持,通过命令pip install markdown安装。

Pelican 还支持Markdown的扩展语法,Markdown的扩展没有包含在Markdown的模块下面,需要通过MD_EXTENSIONS进行配置。

用Markdown写文章的基本格式如下

Title: My super titleDate: 2010-12-03 10:20Modified: 2010-12-05 19:30Category: PythonTags: pelican, publishingSlug: my-super-postAuthors: Alexis Metaireau, Conan DoyleSummary: Short version for index and feedsThis is the content of my super blog post.
登录后复制

还可以用插件支持更多的格式,这个以后研究了。

Pelican也能直接解析html和htm文件,解析html文件就比较直接了,跟复制没啥区别。

<html>    <head>        <title>My super title</title>        <meta name="tags" content="thats, awesome" />        <meta name="date" content="2012-07-09 22:28" />        <meta name="modified" content="2012-07-10 20:14" />        <meta name="category" content="yeah" />        <meta name="authors" content="Alexis M&eacute;taireau, Conan Doyle" />        <meta name="summary" content="Short version for index and feeds" />    </head>    <body>        This is the content of my super blog post.    </body></html>
登录后复制

温馨提示:除了标题之外,其他元数据不是必填项,如果没有指定时间且DEFAULT_DATE设置为'fs',Pelican就会根据文件的时间戳来确定时间,文章的分类可以根据子目录的名称来确定,例如:python/foobar/myfoobar.rst的分类就行foobar,如果不希望子目录的名称不作为分类名称,可以通过设置USE_FOLDER_AS_CATEGORYFalse

modified是值最后编辑文章的时间,默认和date相同。另外,可以通过modified进行RSS推送,可能在刚写文章的时候RSS已经推送了一遍,后来进行了修改,就可以通过modified进行再次推送。

authors用来表示多个作者,如果只有一个作者,可以使用author

如果希望文章的摘要有一个确定的长度,可以通过设置SUMMARY_MAX_LENGTH,Pelican会从文章的开头进行截取制定的长度作为摘要。

也可以通过设置FILENAME_METADATA文件名称来提取元数据,默认情况下,FILENAME_METADATA只是提出文件名上面的的日期信息,如果希望提出文件名中的除日期信息之外的内容为slug,可以将FILENAME_METADATA设置为:'(?P\d{4}-\d{2}-\d{2})_(?P.*)'

需要注意的是,在文件头编写的元数据信息会覆盖通过文件名提取出来的信息。

页面

如果在content下面创建了目录pages,这个目录下所有的文件都将被生成静态页面,比如About和Contact页面。

可以通过设置DISPLAY_PAGES_ON_MENU来控制页面是否在导航栏显示,默认情况是True

如果希望页面不在导航条上显示,可以在页面的元数据里面添加:status: hidden属性,对于404页面很有效果,因为404静态页面我们是不希望在导航条上面显示的。

引用内部的链接

从Pelican3.1开始,可以通过content的目录结构在不同的文章之间进行链接,这样可以很方便引用操作了。

引用content里面的的内容的语法是:{filename}path/to/file{fielname}是必填内容,可以同时支持Linux和windows

假设content的目录结构是这样的

website/├── content│   ├── category/│   │   └── article1.rst│   ├── article2.md│   └── pages│       └── about.md└── pelican.conf.py
登录后复制

article1.rst中链接代码

The first article#################:date: 2012-12-01 10:02See below intra-site link examples in reStructuredText format.`a link relative to the current file <{filename}../article2.md>`_`a link relative to the content root <{filename}/article2.md>`_
登录后复制

article2.md

Title: The second articleDate: 2012-12-01 10:02See below intra-site link examples in Markdown format.[a link relative to the current file]({filename}category/article1.rst)[a link relative to the content root]({filename}/category/article1.rst)
登录后复制

链接静态文件

有时候我们需要引用一些除了博客和页面以为的资源,比如图片,PDF文件等,这就需要在pelicanconf.py中配置STATIC_PATHS属性,Pelican默认设置content下的images为图片资源,其他的资源需要进行配置。

假设content的目录结构如下

content├── images│   └── han.jpg├── pdfs│   └── menu.pdf└── pages    └── test.md
登录后复制

test.md中引用

![Alt Text]({filename}/images/han.jpg)[Our Menu]({filename}/pdfs/menu.pdf)
登录后复制

pelicanconf.py新增配置

STATIC_PATHS = ['images', 'pdfs']
登录后复制

生产页面时,Pelican会将han.jpg复制到output/images/han.jpgmenu.pdf复制到output/pdfs/menu.pdf,同时将链接适配到test.md

附件

从Pelican 3.5开始,通过{attach}path/to/file可以给文章或者页面添加附件,语法和{filename}类似,但是附件会被复制到文章或者页面的同一个目录下面。这种方式只有在STATIC_PATHS设置了该目录才能使用这个标签。

假设content的目录结构如下

content├── blog│   ├── icons│   │   └── icon.png│   ├── photo.jpg│   └── testpost.md└── downloads    └── archive.zip
登录后复制

pelicanconf.py的配置如下

PATH = 'content'STATIC_PATHS = ['blog', 'downloads']ARTICLE_PATHS = ['blog']ARTICLE_SAVE_AS = '{date:%Y}/{slug}.html'ARTICLE_URL = '{date:%Y}/{slug}.html'
登录后复制

testpost.md的内容如下

Title: Test PostCategory: testDate: 2014-10-31![Icon]({attach}icons/icon.png)![Photo]({attach}photo.jpg)[Downloadable File]({attach}/downloads/archive.zip)
登录后复制

生成之后的output的目录结构如下

output└── 2014    ├── archive.zip    ├── icons    │   └── icon.png    ├── photo.jpg    └── test-post.html
登录后复制

如果使用{attach}引用文章所在目录之外的资源,在生成文件的时候会将这个资源复制到文章所在的目录下。

如果资源被多篇文章通过{attach}引用,在第一个被引用的地方Pelican会以attach的方式来处理这个资源,在之后的引用的地方会按照{filename}的方式来链接这个资源,也就是说,在同一个目录下同一个资源被多次引用,Pelican只复制一次这个资源到该目录下面。

请谨慎使用多篇文章引用同一个资源,因为Pelican对{attach}资源处理的顺序是不确定的,就可能导致资源复制到不确定的目录下面,只有当所有的引用同一个资源的文章在同一个目录下面的时候才是安全的。

链接标签和分类

链接标签和分类的语法为{tag}tagname{category}foobar

语法高亮

Pelican为代码块提供了语法高亮功能,对于reStructuredText用户,可以使用code-block标记,假设我们要高亮Python的代码。

.. code-block:: python   print("Pelican is a static site generator.")
登录后复制

对于Markdown用户,按照以下语法

There are two ways to specify the identifier:    :::python    print("The triple-colon syntax will *not* show line numbers.")To display line numbers, use a path-less shebang instead of colons:    #!python    print("The path-less shebang syntax *will* show line numbers.")
登录后复制

如果是普通的代码,分不出具体语言的,可以按照如下语法格式,用一对```包起代码

发布草稿

有时候我们希望把我们的草稿先发布出来给部分朋友看看,不让文章在首页和分类列表里面显示出来,我们可以在文章中添加Status: draft属性。

如果将所有刚写好的文章都作为草搞件发布的话,可以在配置文件中配置DEFAULT_METADATA属性

DEFAULT_METADATA = {        'status': 'draft',}
登录后复制

这样文章在发布的时候默认就是草稿,通过修改文章的配置为Status: published将文章正式发布出来。

文章同步发布在我的个人站点: http://www.xinxingzhao.com/blog/2016/03/25/pelican-writing-content.html

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
了解HTML,CSS和JavaScript:初学者指南 了解HTML,CSS和JavaScript:初学者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML:结构,CSS:样式,JavaScript:行为 HTML:结构,CSS:样式,JavaScript:行为 Apr 18, 2025 am 12:09 AM

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML,CSS和JavaScript的未来:网络开发趋势 HTML,CSS和JavaScript的未来:网络开发趋势 Apr 19, 2025 am 12:02 AM

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML的未来:网络设计的发展和趋势 HTML的未来:网络设计的发展和趋势 Apr 17, 2025 am 12:12 AM

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML与CSS vs. JavaScript:比较概述 HTML与CSS vs. JavaScript:比较概述 Apr 16, 2025 am 12:04 AM

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTML:建立网页的结构 HTML:建立网页的结构 Apr 14, 2025 am 12:14 AM

HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。

HTML的角色:构建Web内容 HTML的角色:构建Web内容 Apr 11, 2025 am 12:12 AM

HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。

HTML:是编程语言还是其他? HTML:是编程语言还是其他? Apr 15, 2025 am 12:13 AM

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增强WebevebDevelopment。

See all articles