我有带有bootstrap3主题的Pelican网站。该主题使用 Font Awesome 通过社交媒体帐户的链接来放置图标。Font Awesome 类名称是通过将链接文本小写并用破折号替换所有空格来确定的。
问题是,有时我的链接文本不映射到 Font Awesome 类名称。例如,信封图标是由envelope
班级提供的,但我真的想要Email
作为网站上的链接文本。
我可以更改 Font Awesome 样式表中的类名称,但是这样我将无法使用 Bootstrap CDN,并且每次将 Font Awesome 更新到新版本时都必须进行此类修改。
我决定修改 Pelican 模板,并在编写类名之前进行必要的转换。到目前为止,我的代码如下所示:
{% set name_sanitized = name|lower|replace('+','-plus')|replace(' ','-')|replace('stackexchange', 'stack-exchange')|replace('rss-feed', 'rss')|replace('email', 'envelope') %}
Run Code Online (Sandbox Code Playgroud)
replace
我可以使用 来替换这个调用链吗dict
?像这样的东西:
{% set replacements = dict('+' = '-plus', ' ' = '-',
'stackexchange' = 'stack-exchange', 'rss-feed' = 'rss',
'email' = 'envelope') %}
{% set name_sanitized = name|lower|??? %}
Run Code Online (Sandbox Code Playgroud)
如果没有,是否有其他方法可以使这部分从长远来看更具可读性和可维护性?
我正在为我的博客使用 pelican 静态站点生成器,我使用正确,但奇怪的是我发现.md
文章没有编译,它给我抛出了这些奇怪的错误。
我查看了我的文章页面,一切都很好,这是我的文章标题
Title: some title
slug: some-title
Date: 2016-11-19
Category: code
Tags: python, python
Authors: nix1947(Manoj)
Run Code Online (Sandbox Code Playgroud)
我找不到,为什么我会收到此错误?
我查看了该 pelicanconf.py
文件,特别是日期部分,一切正常,这是我的 pelicanconf.py 文件的日期部分
DATE_FORMAT = { 'en': '%d %m %Y'}
DEFAULT_DATE_FORMAT = '%d %m %Y'
PDF_GENERATOR = False
REVERSE_CATEGORY_ORDER = True
ARTICLE_URL = '{date:%Y}/{date:%-m}/{date:%-d}/{slug}/'
ARTICLE_SAVE_AS = ARTICLE_URL + 'index.html'
Run Code Online (Sandbox Code Playgroud)
这些是当我尝试编译文章时 pelican 抛出的一堆错误。
(nix1947blog)nix1947@nix1947:~/projects/nix1947blog/content/blog$
-> Modified: content. re-generating...
ERROR: Skipping blog/output/tags.html: could not find information about 'NameError: date'
ERROR: Skipping blog/output/categories.html: could not find information about 'NameError: date' …
Run Code Online (Sandbox Code Playgroud) 我想在标题中有一些东西
title: Whatever
slug: whatever
redirect: bla
redirect: foo
redirect: bar
Run Code Online (Sandbox Code Playgroud)
让鹈鹕生成重定向页面从bla
和foo
和bar
到whatever
。这可能吗?
如果有人可以帮助我,那么随机的小鹈鹕问题。
我正在写一个主题,它是这样的结构。
??? static
? ??? css
? ??? js
? ??? img
??? templates
??? index.html
??? page.html
Run Code Online (Sandbox Code Playgroud)
在 index.html 文件中,我使用它来调用静态 css、img 和 js 文件
<link rel="stylesheet" href="theme/css/base.css"/>
Run Code Online (Sandbox Code Playgroud)
对于 page.html,我然后用这一行“扩展”base.html
{% extends "index.html" %}
Run Code Online (Sandbox Code Playgroud)
当我在输出文件夹中生成 html 时,index.html 一切正常,但 page.html 找不到静态文件,因为它需要一个新路径。这是输出文件夹设置。
??? theme
| ??? css
? ??? js
? ??? img
??? index.html
??? pages
??? page.html
Run Code Online (Sandbox Code Playgroud)
如果您看到 page.html 无法通过使用路径 theme/css/base.css 加载 css
有没有办法在加载静态文件时使用 {{ ROUTE }} 命令?
谢谢!
编辑 1 在 Github 上查看其他主题的 index.html 页面后,我看到他们使用了 {{ SITEURL }} …
所以我最近开始用 Pelican 写博客,除了谷歌分析之外,一切都很顺利。我发布我的博客使用
make s3_upload
Run Code Online (Sandbox Code Playgroud)
命令,它使用 publishconf.py 文件。
为了获得我的跟踪 ID,我所做的就是将我的跟踪 ID 从谷歌分析页面复制粘贴到 publishconf.py 文件中的谷歌分析行中,就像这样
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
GOOGLE_ANALYTICS = "UA-########-#"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,我一直在绞尽脑汁试图解决这个问题。
我对将图像放入鹈鹕中的降价语法感到困惑。
当我拥有这个时,一切都会正常。
.. image:: /images/Rugby-Tackle.jpg
:alt: About to make the tackle, Yale Alumni Game 2017
Run Code Online (Sandbox Code Playgroud)
但我在 .rst 文档中发现了这一点。Pelican文档有很多对这样的代码的引用:
[]({filename}/images/Rugby-Tackle.jpg)
Run Code Online (Sandbox Code Playgroud)
或这个:

Run Code Online (Sandbox Code Playgroud)
所有这些在包含在 Markdown 文件中时都仅显示为文本,并且不会生成图像。我在这里缺少什么?
在图像选项方面,重构的文本标记似乎非常有限:
可识别以下选项:
alt :文本
height :长度
width :当前行宽度的长度或百分比
scale :整数百分比(“%”符号是可选的)
align :“顶部”、“中间”、“底部”、“ left"、"center" 或 "right"
目标:文本(URI 或引用名称)
是否可以通过 reStructuredText 标记设置一些自定义属性,例如标题?
例如
.. image:: foobar.jpg
:title: mouse over text, hi!
Run Code Online (Sandbox Code Playgroud)
会输出:
<img src="foobar.jpg" title="mouse over text, hi!"></img>
Run Code Online (Sandbox Code Playgroud) 我比较喜欢默认的 Pelican 主题notmyidea
。它很好地满足了我的目的。
但是,为了实现 Python-Markdownadmonishments
扩展,我需要向模板添加一些 css 规则。
我在文档(或通过谷歌搜索)中找不到任何内容似乎可以解释如何做到这一点。仅介绍如何创建全新主题,或使用自定义样式表,这会覆盖默认样式表。
有没有办法添加补充样式表,甚至只是一些补充规则?
我正在为 Pelican 开发一个库,目前我正在使用 reStructuredText 和 docutils。
我想做的是创建一个应该输出 html 的自定义指令。
我要输出的html是:
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h4 class="card-title">Regular header</h4>
<p class="category">Category subtitle</p>
</div>
<div class="card-body">
The place is close to Barceloneta Beach and bus stop just 2 min by walk and near to "Naviglio" where you can enjoy the main night life in Barcelona...
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
到目前为止我创建了这个Python代码
from docutils import nodes
from docutils.parsers.rst import Directive
from pelican.rstdirectives import directives
class Row(Directive):
required_arguments = 0
optional_arguments = …
Run Code Online (Sandbox Code Playgroud) 我使用 Pelican 为博客设置了个人 GitHub Pages。它工作正常,但我决定从内容开始,而不是从远程存储库克隆,而是在我的机器上完全从零开始。这可能是我的问题的根源。
当新的本地版本工作正常时,我尝试推送相关分支。有问题的分支是由 gh-export 模块自动设置的,该模块将包含网站内容的目录放在该分支的顶层,以便它可以与 GitHub Pages 一起使用。
git push git@github.com:JonathanMair/JonathanMair.github.io.git gh-pages:master -f
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Enumerating objects: 330, done.
Counting objects: 100% (330/330), done.
Delta compression using up to 10 threads
Compressing objects: 100% (134/134), done.
Writing objects: 100% (330/330), 7.01 MiB | 4.04 MiB/s, done.
Total 330 (delta 112), reused 329 (delta 112), pack-reused 0
remote: Resolving deltas: 100% (112/112), done.
remote: fatal: did not receive expected object 44b304cd6f8a4df85530c3e3bd3f1c6ce800490f
error: remote unpack failed: index-pack failed
To github.com:JonathanMair/JonathanMair.github.io.git …
Run Code Online (Sandbox Code Playgroud) pelican ×10
python ×6
css ×2
docutils ×1
github ×1
github-pages ×1
jinja2 ×1
markdown ×1
python-2.7 ×1
python-3.4 ×1
static-site ×1