搜索
首页web前端html教程Pelican系列:开启写作人生_html/css_WEB-ITnose

博文和页面的区别

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
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?Mar 04, 2025 pm 12:32 PM

公众号网页更新缓存,这玩意儿,说简单也简单,说复杂也够你喝一壶的。你辛辛苦苦更新了公众号文章,结果用户打开还是老版本,这滋味,谁受得了?这篇文章,咱就来扒一扒这背后的弯弯绕绕,以及如何优雅地解决这个问题。读完之后,你就能轻松应对各种缓存难题,让你的用户始终体验到最新鲜的内容。先说点基础的。网页缓存,说白了就是浏览器或者服务器为了提高访问速度,把一些静态资源(比如图片、CSS、JS)或者页面内容存储起来。下次访问时,直接从缓存里取,不用再重新下载,速度自然快。但这玩意儿,也是个双刃剑。新版本上线,

如何使用HTML5表单验证属性来验证用户输入?如何使用HTML5表单验证属性来验证用户输入?Mar 17, 2025 pm 12:27 PM

本文讨论了使用HTML5表单验证属性,例如必需的,图案,最小,最大和长度限制,以直接在浏览器中验证用户输入。

HTML5中跨浏览器兼容性的最佳实践是什么?HTML5中跨浏览器兼容性的最佳实践是什么?Mar 17, 2025 pm 12:20 PM

文章讨论了确保HTML5跨浏览器兼容性的最佳实践,重点是特征检测,进行性增强和测试方法。

如何高效地在网页中为PNG图片添加描边效果?如何高效地在网页中为PNG图片添加描边效果?Mar 04, 2025 pm 02:39 PM

本文展示了使用CSS为网页中添加有效的PNG边框。 它认为,与JavaScript或库相比,CSS提供了出色的性能,详细介绍了如何调整边界宽度,样式和颜色以获得微妙或突出的效果

&lt; datalist&gt;的目的是什么。 元素?&lt; datalist&gt;的目的是什么。 元素?Mar 21, 2025 pm 12:33 PM

本文讨论了html&lt; datalist&gt;元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

&lt; meter&gt;的目的是什么。 元素?&lt; meter&gt;的目的是什么。 元素?Mar 21, 2025 pm 12:35 PM

本文讨论了HTML&lt; meter&gt;元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了&lt; meter&gt;从&lt; progress&gt;和前

我如何使用html5&lt; time&gt; 元素以语义表示日期和时间?我如何使用html5&lt; time&gt; 元素以语义表示日期和时间?Mar 12, 2025 pm 04:05 PM

本文解释了HTML5&lt; time&gt;语义日期/时间表示的元素。 它强调了DateTime属性对机器可读性(ISO 8601格式)的重要性,并在人类可读文本旁边,增强Accessibilit

&gt; gt;的目的是什么 元素?&gt; gt;的目的是什么 元素?Mar 21, 2025 pm 12:34 PM

本文讨论了HTML&lt; Progress&gt;元素,其目的,样式和与&lt; meter&gt;元素。主要重点是使用&lt; progress&gt;为了完成任务和LT;仪表&gt;对于stati

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版