forked from github/pelican
This was accidentally caused by me in #1248 As a result the Basic Settings table was not being updated.
704 lines
44 KiB
ReStructuredText
704 lines
44 KiB
ReStructuredText
Settings
|
|
########
|
|
|
|
Pelican is configurable thanks to a configuration file you can pass to
|
|
the command line::
|
|
|
|
$ pelican content -s path/to/your/settingsfile.py
|
|
|
|
(If you used the `pelican-quickstart` command, your primary settings file will
|
|
be named `pelicanconf.py` by default.)
|
|
|
|
Settings are configured in the form of a Python module (a file). There is an
|
|
`example settings file
|
|
<https://github.com/getpelican/pelican/raw/master/samples/pelican.conf.py>`_
|
|
available for reference.
|
|
|
|
All the setting identifiers must be set in all-caps, otherwise they will not be
|
|
processed. Setting values that are numbers (5, 20, etc.), booleans (True,
|
|
False, None, etc.), dictionaries, or tuples should *not* be enclosed in
|
|
quotation marks. All other values (i.e., strings) *must* be enclosed in
|
|
quotation marks.
|
|
|
|
Unless otherwise specified, settings that refer to paths can be either absolute
|
|
or relative to the configuration file.
|
|
|
|
The settings you define in the configuration file will be passed to the
|
|
templates, which allows you to use your settings to add site-wide content.
|
|
|
|
Here is a list of settings for Pelican:
|
|
|
|
Basic settings
|
|
==============
|
|
|
|
=============================================================================== =====================================================================
|
|
Setting name (default value) What does it do?
|
|
=============================================================================== =====================================================================
|
|
`AUTHOR` Default author (put your name)
|
|
`DATE_FORMATS` (``{}``) If you manage multiple languages, you can set the date formatting
|
|
here. See the "Date format and locales" section below for details.
|
|
`USE_FOLDER_AS_CATEGORY` (``True``) When you don't specify a category in your post metadata, set this
|
|
setting to ``True``, and organize your articles in subfolders, the
|
|
subfolder will become the category of your post. If set to ``False``,
|
|
``DEFAULT_CATEGORY`` will be used as a fallback.
|
|
`DEFAULT_CATEGORY` (``'misc'``) The default category to fall back on.
|
|
`DEFAULT_DATE_FORMAT` (``'%a %d %B %Y'``) The default date format you want to use.
|
|
`DISPLAY_PAGES_ON_MENU` (``True``) Whether to display pages on the menu of the
|
|
template. Templates may or may not honor this
|
|
setting.
|
|
`DISPLAY_CATEGORIES_ON_MENU` (``True``) Whether to display categories on the menu of the
|
|
template. Templates may or not honor this
|
|
setting.
|
|
`DEFAULT_DATE` (``None``) The default date you want to use.
|
|
If ``fs``, Pelican will use the file system
|
|
timestamp information (mtime) if it can't get
|
|
date information from the metadata.
|
|
If set to a tuple object, the default datetime object will instead
|
|
be generated by passing the tuple to the
|
|
``datetime.datetime`` constructor.
|
|
`DEFAULT_METADATA` (``()``) The default metadata you want to use for all articles
|
|
and pages.
|
|
`FILENAME_METADATA` (``'(?P<date>\d{4}-\d{2}-\d{2}).*'``) The regexp that will be used to extract any metadata
|
|
from the filename. All named groups that are matched
|
|
will be set in the metadata object.
|
|
The default value will only extract the date from
|
|
the filename.
|
|
For example, if you would like to extract both the
|
|
date and the slug, you could set something like:
|
|
``'(?P<date>\d{4}-\d{2}-\d{2})_(?P<slug>.*)'``.
|
|
See :ref:`path_metadata`.
|
|
`PATH_METADATA` (``''``) Like ``FILENAME_METADATA``, but parsed from a page's
|
|
full path relative to the content source directory.
|
|
See :ref:`path_metadata`.
|
|
`EXTRA_PATH_METADATA` (``{}``) Extra metadata dictionaries keyed by relative path.
|
|
See :ref:`path_metadata`.
|
|
`DELETE_OUTPUT_DIRECTORY` (``False``) Delete the output directory, and **all** of its contents, before
|
|
generating new files. This can be useful in preventing older,
|
|
unnecessary files from persisting in your output. However, **this is
|
|
a destructive setting and should be handled with extreme care.**
|
|
`OUTPUT_RETENTION` (``()``) A tuple of filenames that should be retained and not deleted from the
|
|
output directory. One use case would be the preservation of version
|
|
control data. For example: ``(".hg", ".git", ".bzr")``
|
|
`JINJA_EXTENSIONS` (``[]``) A list of any Jinja2 extensions you want to use.
|
|
`JINJA_FILTERS` (``{}``) A list of custom Jinja2 filters you want to use.
|
|
The dictionary should map the filtername to the filter function.
|
|
For example: ``{'urlencode': urlencode_filter}``
|
|
See `Jinja custom filters documentation`_.
|
|
`LOCALE` (''[#]_) Change the locale. A list of locales can be provided
|
|
here or a single string representing one locale.
|
|
When providing a list, all the locales will be tried
|
|
until one works.
|
|
`READERS` (``{}``) A dictionary of file extensions / Reader classes for Pelican to
|
|
process or ignore. For example, to avoid processing .html files,
|
|
set: ``READERS = {'html': None}``. To add a custom reader for the
|
|
`foo` extension, set: ``READERS = {'foo': FooReader}``
|
|
`IGNORE_FILES` (``['.#*']``) A list of file globbing patterns to match against the
|
|
source files to be ignored by the processor. For example,
|
|
the default ``['.#*']`` will ignore emacs lock files.
|
|
`MD_EXTENSIONS` (``['codehilite(css_class=highlight)','extra']``) A list of the extensions that the Markdown processor
|
|
will use. Refer to the Python Markdown documentation's
|
|
`Extensions section <http://pythonhosted.org/Markdown/extensions/>`_
|
|
for a complete list of supported extensions. (Note that
|
|
defining this in your settings file will override and
|
|
replace the default values. If your goal is to *add*
|
|
to the default values for this setting, you'll need to
|
|
include them explicitly and enumerate the full list of
|
|
desired Markdown extensions.)
|
|
`OUTPUT_PATH` (``'output/'``) Where to output the generated files.
|
|
`PATH` (``None``) Path to content directory to be processed by Pelican.
|
|
`PAGE_DIR` (``'pages'``) Directory to look at for pages, relative to `PATH`.
|
|
`PAGE_EXCLUDES` (``()``) A list of directories to exclude when looking for pages.
|
|
`ARTICLE_DIR` (``''``) Directory to look at for articles, relative to `PATH`.
|
|
`ARTICLE_EXCLUDES`: (``('pages',)``) A list of directories to exclude when looking for articles.
|
|
`OUTPUT_SOURCES` (``False``) Set to True if you want to copy the articles and pages in their
|
|
original format (e.g. Markdown or reStructuredText) to the
|
|
specified ``OUTPUT_PATH``.
|
|
`OUTPUT_SOURCES_EXTENSION` (``.text``) Controls the extension that will be used by the SourcesGenerator.
|
|
Defaults to ``.text``. If not a valid string the default value
|
|
will be used.
|
|
`RELATIVE_URLS` (``False``) Defines whether Pelican should use document-relative URLs or
|
|
not. Only set this to ``True`` when developing/testing and only
|
|
if you fully understand the effect it can have on links/feeds.
|
|
`PLUGINS` (``[]``) The list of plugins to load. See :ref:`plugins`.
|
|
`SITENAME` (``'A Pelican Blog'``) Your site name
|
|
`SITEURL` Base URL of your website. Not defined by default,
|
|
so it is best to specify your SITEURL; if you do not, feeds
|
|
will not be generated with properly-formed URLs. You should
|
|
include ``http://`` and your domain, with no trailing
|
|
slash at the end. Example: ``SITEURL = 'http://mydomain.com'``
|
|
`TEMPLATE_PAGES` (``None``) A mapping containing template pages that will be rendered with
|
|
the blog entries. See :ref:`template_pages`.
|
|
`STATIC_PATHS` (``['images']``) The static paths you want to have accessible
|
|
on the output path "static". By default,
|
|
Pelican will copy the "images" folder to the
|
|
output folder.
|
|
`TIMEZONE` The timezone used in the date information, to
|
|
generate Atom and RSS feeds. See the *Timezone*
|
|
section below for more info.
|
|
`TYPOGRIFY` (``False``) If set to True, several typographical improvements will be
|
|
incorporated into the generated HTML via the `Typogrify
|
|
<https://pypi.python.org/pypi/typogrify>`_ library,
|
|
which can be installed via: ``pip install typogrify``
|
|
`DIRECT_TEMPLATES` (``('index', 'tags', 'categories', 'authors', 'archives')``) List of templates that are used directly to render
|
|
content. Typically direct templates are used to generate
|
|
index pages for collections of content (e.g., tags and
|
|
category index pages). If the tag and category collections
|
|
are not needed, set ``DIRECT_TEMPLATES = ('index', 'archives')``
|
|
`PAGINATED_DIRECT_TEMPLATES` (``('index',)``) Provides the direct templates that should be paginated.
|
|
`SUMMARY_MAX_LENGTH` (``50``) When creating a short summary of an article, this will
|
|
be the default length (measured in words) of the text created.
|
|
This only applies if your content does not otherwise
|
|
specify a summary. Setting to ``None`` will cause the summary
|
|
to be a copy of the original content.
|
|
`EXTRA_TEMPLATES_PATHS` (``[]``) A list of paths you want Jinja2 to search for templates.
|
|
Can be used to separate templates from the theme.
|
|
Example: projects, resume, profile ...
|
|
These templates need to use ``DIRECT_TEMPLATES`` setting.
|
|
`ASCIIDOC_OPTIONS` (``[]``) A list of options to pass to AsciiDoc. See the `manpage
|
|
<http://www.methods.co.nz/asciidoc/manpage.html>`_
|
|
`WITH_FUTURE_DATES` (``True``) If disabled, content with dates in the future will get a
|
|
default status of ``draft``.
|
|
`INTRASITE_LINK_REGEX` (``'[{|](?P<what>.*?)[|}]'``) Regular expression that is used to parse internal links.
|
|
Default syntax of links to internal files, tags, etc., is
|
|
to enclose the identifier, say ``filename``, in ``{}`` or ``||``.
|
|
Identifier between ``{`` and ``}`` goes into the ``what`` capturing group.
|
|
For details see :ref:`ref-linking-to-internal-content`.
|
|
`PYGMENTS_RST_OPTIONS` (``[]``) A list of default Pygments settings for your reStructuredText
|
|
code blocks. See :ref:`internal_pygments_options` for a list of
|
|
supported options.
|
|
|
|
`SLUGIFY_SOURCE` (``'input'``) Specifies where you want the slug to be automatically generated
|
|
from. Can be set to 'title' to use the 'Title:' metadata tag or
|
|
'basename' to use the articles basename when creating the slug.
|
|
=============================================================================== =====================================================================
|
|
|
|
.. [#] Default is the system locale.
|
|
|
|
|
|
URL settings
|
|
------------
|
|
|
|
The first thing to understand is that there are currently two supported methods
|
|
for URL formation: *relative* and *absolute*. Relative URLs are useful
|
|
when testing locally, and absolute URLs are reliable and most useful when
|
|
publishing. One method of supporting both is to have one Pelican configuration
|
|
file for local development and another for publishing. To see an example of this
|
|
type of setup, use the ``pelican-quickstart`` script as described at the top of
|
|
the :doc:`Getting Started <getting_started>` page, which will produce two separate
|
|
configuration files for local development and publishing, respectively.
|
|
|
|
You can customize the URLs and locations where files will be saved. The
|
|
``*_URL`` and ``*_SAVE_AS`` variables use Python's format strings. These
|
|
variables allow you to place your articles in a location such as
|
|
``{slug}/index.html`` and link to them as ``{slug}`` for clean URLs. These
|
|
settings give you the flexibility to place your articles and pages anywhere you
|
|
want.
|
|
|
|
.. note::
|
|
If you specify a ``datetime`` directive, it will be substituted using the
|
|
input files' date metadata attribute. If the date is not specified for a
|
|
particular file, Pelican will rely on the file's ``mtime`` timestamp.
|
|
Check the `Python datetime documentation`_ for more information.
|
|
|
|
.. _Python datetime documentation:
|
|
http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
|
|
|
|
Also, you can use other file metadata attributes as well:
|
|
|
|
* slug
|
|
* date
|
|
* lang
|
|
* author
|
|
* category
|
|
|
|
Example usage:
|
|
|
|
* ARTICLE_URL = ``'posts/{date:%Y}/{date:%b}/{date:%d}/{slug}/'``
|
|
* ARTICLE_SAVE_AS = ``'posts/{date:%Y}/{date:%b}/{date:%d}/{slug}/index.html'``
|
|
|
|
This would save your articles in something like ``/posts/2011/Aug/07/sample-post/index.html``,
|
|
and the URL to this would be ``/posts/2011/Aug/07/sample-post/``.
|
|
|
|
Pelican can optionally create per-year, per-month, and per-day archives of your
|
|
posts. These secondary archives are disabled by default but are automatically
|
|
enabled if you supply format strings for their respective ``_SAVE_AS`` settings.
|
|
Period archives fit intuitively with the hierarchical model of web URLs and can
|
|
make it easier for readers to navigate through the posts you've written over time.
|
|
|
|
Example usage:
|
|
|
|
* YEAR_ARCHIVE_SAVE_AS = ``'posts/{date:%Y}/index.html'``
|
|
* MONTH_ARCHIVE_SAVE_AS = ``'posts/{date:%Y}/{date:%b}/index.html'``
|
|
|
|
With these settings, Pelican will create an archive of all your posts for the
|
|
year at (for instance) ``posts/2011/index.html`` and an archive of all your
|
|
posts for the month at ``posts/2011/Aug/index.html``.
|
|
|
|
.. note::
|
|
Period archives work best when the final path segment is ``index.html``.
|
|
This way a reader can remove a portion of your URL and automatically
|
|
arrive at an appropriate archive of posts, without having to specify
|
|
a page name.
|
|
|
|
==================================================== =====================================================
|
|
Setting name (default value) What does it do?
|
|
==================================================== =====================================================
|
|
`ARTICLE_URL` (``'{slug}.html'``) The URL to refer to an article.
|
|
`ARTICLE_SAVE_AS` (``'{slug}.html'``) The place where we will save an article.
|
|
`ARTICLE_LANG_URL` (``'{slug}-{lang}.html'``) The URL to refer to an article which doesn't use the
|
|
default language.
|
|
`ARTICLE_LANG_SAVE_AS` (``'{slug}-{lang}.html'``) The place where we will save an article which
|
|
doesn't use the default language.
|
|
`DRAFT_URL` (``'drafts/{slug}.html'``) The URL to refer to an article draft.
|
|
`DRAFT_SAVE_AS` (``'drafts/{slug}.html'``) The place where we will save an article draft.
|
|
`DRAFT_LANG_URL` (``'drafts/{slug}-{lang}.html'``) The URL to refer to an article draft which doesn't
|
|
use the default language.
|
|
`DRAFT_LANG_SAVE_AS` (``'drafts/{slug}-{lang}.html'``) The place where we will save an article draft which
|
|
doesn't use the default language.
|
|
`PAGE_URL` (``'pages/{slug}.html'``) The URL we will use to link to a page.
|
|
`PAGE_SAVE_AS` (``'pages/{slug}.html'``) The location we will save the page. This value has to be
|
|
the same as PAGE_URL or you need to use a rewrite in
|
|
your server config.
|
|
`PAGE_LANG_URL` (``'pages/{slug}-{lang}.html'``) The URL we will use to link to a page which doesn't
|
|
use the default language.
|
|
`PAGE_LANG_SAVE_AS` (``'pages/{slug}-{lang}.html'``) The location we will save the page which doesn't
|
|
use the default language.
|
|
`CATEGORY_URL` (``'category/{slug}.html'``) The URL to use for a category.
|
|
`CATEGORY_SAVE_AS` (``'category/{slug}.html'``) The location to save a category.
|
|
`TAG_URL` (``'tag/{slug}.html'``) The URL to use for a tag.
|
|
`TAG_SAVE_AS` (``'tag/{slug}.html'``) The location to save the tag page.
|
|
`AUTHOR_URL` (``'author/{slug}.html'``) The URL to use for an author.
|
|
`AUTHOR_SAVE_AS` (``'author/{slug}.html'``) The location to save an author.
|
|
`YEAR_ARCHIVE_SAVE_AS` (False) The location to save per-year archives of your posts.
|
|
`MONTH_ARCHIVE_SAVE_AS` (False) The location to save per-month archives of your posts.
|
|
`DAY_ARCHIVE_SAVE_AS` (False) The location to save per-day archives of your posts.
|
|
`SLUG_SUBSTITUTIONS` (``()``) Substitutions to make prior to stripping out
|
|
non-alphanumerics when generating slugs. Specified
|
|
as a list of 2-tuples of ``(from, to)`` which are
|
|
applied in order.
|
|
==================================================== =====================================================
|
|
|
|
.. note::
|
|
|
|
If you do not want one or more of the default pages to be created (e.g.,
|
|
you are the only author on your site and thus do not need an Authors page),
|
|
set the corresponding ``*_SAVE_AS`` setting to ``None`` to prevent the
|
|
relevant page from being generated.
|
|
|
|
`DIRECT_TEMPLATES`
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
These templates (``('index', 'tags', 'categories', 'archives')`` by default)
|
|
works a bit differently than above. Only the ``_SAVE_AS`` setting is available:
|
|
|
|
============================================= ===============================================
|
|
Setting name (default value) What does it do?
|
|
============================================= ===============================================
|
|
`ARCHIVES_SAVE_AS` (``'archives.html'``) The location to save the article archives page.
|
|
`AUTHORS_SAVE_AS` (``'authors.html'``) The location to save the author list.
|
|
`CATEGORIES_SAVE_AS` (``'categories.html'``) The location to save the category list.
|
|
`TAGS_SAVE_AS` (``'tags.html'``) The location to save the tag list.
|
|
============================================= ===============================================
|
|
|
|
The corresponding urls are hard-coded in the themes: ``'archives.html'``,
|
|
``'authors.html'``, ``'categories.html'``, ``'tags.html'``.
|
|
|
|
Timezone
|
|
--------
|
|
|
|
If no timezone is defined, UTC is assumed. This means that the generated Atom
|
|
and RSS feeds will contain incorrect date information if your locale is not UTC.
|
|
|
|
Pelican issues a warning in case this setting is not defined, as it was not
|
|
mandatory in previous versions.
|
|
|
|
Have a look at `the wikipedia page`_ to get a list of valid timezone values.
|
|
|
|
.. _the wikipedia page: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
|
|
|
|
Date format and locale
|
|
----------------------
|
|
|
|
If no ``DATE_FORMATS`` are set, Pelican will fall back to
|
|
``DEFAULT_DATE_FORMAT``. If you need to maintain multiple languages with
|
|
different date formats, you can set the ``DATE_FORMATS`` dictionary using the
|
|
language name (``lang`` metadata in your post content) as the key. Regarding
|
|
available format codes, see `strftime document of python`_ :
|
|
|
|
.. parsed-literal::
|
|
|
|
DATE_FORMATS = {
|
|
'en': '%a, %d %b %Y',
|
|
'jp': '%Y-%m-%d(%a)',
|
|
}
|
|
|
|
You can set locale to further control date format:
|
|
|
|
.. parsed-literal::
|
|
|
|
LOCALE = ('usa', 'jpn', # On Windows
|
|
'en_US', 'ja_JP' # On Unix/Linux
|
|
)
|
|
|
|
Also, it is possible to set different locale settings for each language. If you
|
|
put (locale, format) tuples in the dict, this will override the ``LOCALE``
|
|
setting above:
|
|
|
|
.. parsed-literal::
|
|
# On Unix/Linux
|
|
DATE_FORMATS = {
|
|
'en': ('en_US','%a, %d %b %Y'),
|
|
'jp': ('ja_JP','%Y-%m-%d(%a)'),
|
|
}
|
|
|
|
# On Windows
|
|
DATE_FORMATS = {
|
|
'en': ('usa','%a, %d %b %Y'),
|
|
'jp': ('jpn','%Y-%m-%d(%a)'),
|
|
}
|
|
|
|
This is a list of available `locales on Windows`_ . On Unix/Linux, usually you
|
|
can get a list of available locales via the ``locale -a`` command; see manpage
|
|
`locale(1)`_ for more information.
|
|
|
|
|
|
.. _strftime document of python: http://docs.python.org/library/datetime.html#strftime-strptime-behavior
|
|
|
|
.. _locales on Windows: http://msdn.microsoft.com/en-us/library/cdax410z%28VS.71%29.aspx
|
|
|
|
.. _locale(1): http://linux.die.net/man/1/locale
|
|
|
|
|
|
.. _template_pages:
|
|
|
|
Template pages
|
|
==============
|
|
|
|
If you want to generate custom pages besides your blog entries, you can point
|
|
any Jinja2 template file with a path pointing to the file and the destination
|
|
path for the generated file.
|
|
|
|
For instance, if you have a blog with three static pages — a list of books,
|
|
your resume, and a contact page — you could have::
|
|
|
|
TEMPLATE_PAGES = {'src/books.html': 'dest/books.html',
|
|
'src/resume.html': 'dest/resume.html',
|
|
'src/contact.html': 'dest/contact.html'}
|
|
|
|
|
|
.. _path_metadata:
|
|
|
|
Path metadata
|
|
=============
|
|
|
|
Not all metadata needs to be `embedded in source file itself`__. For
|
|
example, blog posts are often named following a ``YYYY-MM-DD-SLUG.rst``
|
|
pattern, or nested into ``YYYY/MM/DD-SLUG`` directories. To extract
|
|
metadata from the filename or path, set ``FILENAME_METADATA`` or
|
|
``PATH_METADATA`` to regular expressions that use Python's `group name
|
|
notation`_ ``(?P<name>…)``. If you want to attach additional metadata
|
|
but don't want to encode it in the path, you can set
|
|
``EXTRA_PATH_METADATA``:
|
|
|
|
.. parsed-literal::
|
|
|
|
EXTRA_PATH_METADATA = {
|
|
'relative/path/to/file-1': {
|
|
'key-1a': 'value-1a',
|
|
'key-1b': 'value-1b',
|
|
},
|
|
'relative/path/to/file-2': {
|
|
'key-2': 'value-2',
|
|
},
|
|
}
|
|
|
|
This can be a convenient way to shift the installed location of a
|
|
particular file:
|
|
|
|
.. parsed-literal::
|
|
|
|
# Take advantage of the following defaults
|
|
# STATIC_SAVE_AS = '{path}'
|
|
# STATIC_URL = '{path}'
|
|
STATIC_PATHS = [
|
|
'extra/robots.txt',
|
|
]
|
|
EXTRA_PATH_METADATA = {
|
|
'extra/robots.txt': {'path': 'robots.txt'},
|
|
}
|
|
|
|
__ internal_metadata__
|
|
.. _group name notation:
|
|
http://docs.python.org/3/library/re.html#regular-expression-syntax
|
|
|
|
Feed settings
|
|
=============
|
|
|
|
By default, Pelican uses Atom feeds. However, it is also possible to use RSS
|
|
feeds if you prefer.
|
|
|
|
Pelican generates category feeds as well as feeds for all your articles. It does
|
|
not generate feeds for tags by default, but it is possible to do so using
|
|
the ``TAG_FEED_ATOM`` and ``TAG_FEED_RSS`` settings:
|
|
|
|
================================================ =====================================================
|
|
Setting name (default value) What does it do?
|
|
================================================ =====================================================
|
|
`FEED_DOMAIN` (``None``, i.e. base URL is "/") The domain prepended to feed URLs. Since feed URLs
|
|
should always be absolute, it is highly recommended
|
|
to define this (e.g., "http://feeds.example.com"). If
|
|
you have already explicitly defined SITEURL (see
|
|
above) and want to use the same domain for your
|
|
feeds, you can just set: ``FEED_DOMAIN = SITEURL``.
|
|
`FEED_ATOM` (``None``, i.e. no Atom feed) Relative URL to output the Atom feed.
|
|
`FEED_RSS` (``None``, i.e. no RSS) Relative URL to output the RSS feed.
|
|
`FEED_ALL_ATOM` (``'feeds/all.atom.xml'``) Relative URL to output the all posts Atom feed:
|
|
this feed will contain all posts regardless of their
|
|
language.
|
|
`FEED_ALL_RSS` (``None``, i.e. no all RSS) Relative URL to output the all posts RSS feed:
|
|
this feed will contain all posts regardless of their
|
|
language.
|
|
`CATEGORY_FEED_ATOM` ('feeds/%s.atom.xml'[2]_) Where to put the category Atom feeds.
|
|
`CATEGORY_FEED_RSS` (``None``, i.e. no RSS) Where to put the category RSS feeds.
|
|
`TAG_FEED_ATOM` (``None``, i.e. no tag feed) Relative URL to output the tag Atom feed. It should
|
|
be defined using a "%s" match in the tag name.
|
|
`TAG_FEED_RSS` (``None``, ie no RSS tag feed) Relative URL to output the tag RSS feed
|
|
`FEED_MAX_ITEMS` Maximum number of items allowed in a feed. Feed item
|
|
quantity is unrestricted by default.
|
|
================================================ =====================================================
|
|
|
|
If you don't want to generate some or any of these feeds, set the above variables to ``None``.
|
|
|
|
.. [2] %s is the name of the category.
|
|
|
|
FeedBurner
|
|
----------
|
|
|
|
If you want to use FeedBurner for your feed, you will likely need to decide
|
|
upon a unique identifier. For example, if your site were called "Thyme" and
|
|
hosted on the www.example.com domain, you might use "thymefeeds" as your
|
|
unique identifier, which we'll use throughout this section for illustrative
|
|
purposes. In your Pelican settings, set the `FEED_ATOM` attribute to
|
|
"thymefeeds/main.xml" to create an Atom feed with an original address of
|
|
`http://www.example.com/thymefeeds/main.xml`. Set the `FEED_DOMAIN` attribute
|
|
to `http://feeds.feedburner.com`, or `http://feeds.example.com` if you are
|
|
using a CNAME on your own domain (i.e., FeedBurner's "MyBrand" feature).
|
|
|
|
There are two fields to configure in the `FeedBurner
|
|
<http://feedburner.google.com>`_ interface: "Original Feed" and "Feed
|
|
Address". In this example, the "Original Feed" would be
|
|
`http://www.example.com/thymefeeds/main.xml` and the "Feed Address" suffix
|
|
would be `thymefeeds/main.xml`.
|
|
|
|
Pagination
|
|
==========
|
|
|
|
The default behaviour of Pelican is to list all the article titles along
|
|
with a short description on the index page. While this works well for
|
|
small-to-medium sites, sites with a large quantity of articles will probably
|
|
benefit from paginating this list.
|
|
|
|
You can use the following settings to configure the pagination.
|
|
|
|
================================================ =====================================================
|
|
Setting name (default value) What does it do?
|
|
================================================ =====================================================
|
|
`DEFAULT_ORPHANS` (``0``) The minimum number of articles allowed on the
|
|
last page. Use this when you don't want the last page
|
|
to only contain a handful of articles.
|
|
`DEFAULT_PAGINATION` (``False``) The maximum number of articles to include on a
|
|
page, not including orphans. False to disable
|
|
pagination.
|
|
`PAGINATION_PATTERNS` A set of patterns that are used to determine advanced
|
|
pagination output.
|
|
================================================ =====================================================
|
|
|
|
Using Pagination Patterns
|
|
-------------------------
|
|
|
|
The ``PAGINATION_PATTERNS`` setting can be used to configure where
|
|
subsequent pages are created. The setting is a sequence of three
|
|
element tuples, where each tuple consists of::
|
|
|
|
(minimum page, URL setting, SAVE_AS setting,)
|
|
|
|
For example, if you wanted the first page to just be ``/``, and the
|
|
second (and subsequent) pages to be ``/page/2/``, you would set
|
|
``PAGINATION_PATTERNS`` as follows::
|
|
|
|
PAGINATION_PATTERNS = (
|
|
(1, '{base_name}/', '{base_name}/index.html'),
|
|
(2, '{base_name}/page/{number}/', '{base_name}/page/{number}/index.html'),
|
|
)
|
|
|
|
This would cause the first page to be written to
|
|
``{base_name}/index.html``, and subsequent ones would be written into
|
|
``page/{number}`` directories.
|
|
|
|
Tag cloud
|
|
=========
|
|
|
|
If you want to generate a tag cloud with all your tags, you can do so using the
|
|
following settings.
|
|
|
|
================================================ =====================================================
|
|
Setting name (default value) What does it do?
|
|
================================================ =====================================================
|
|
`TAG_CLOUD_STEPS` (``4``) Count of different font sizes in the tag
|
|
cloud.
|
|
`TAG_CLOUD_MAX_ITEMS` (``100``) Maximum number of tags in the cloud.
|
|
================================================ =====================================================
|
|
|
|
The default theme does not include a tag cloud, but it is pretty easy to add one::
|
|
|
|
<ul class="tagcloud">
|
|
{% for tag in tag_cloud %}
|
|
<li class="tag-{{ tag.1 }}"><a href="{{ SITEURL }}/{{ tag.0.url }}">{{ tag.0 }}</a></li>
|
|
{% endfor %}
|
|
</ul>
|
|
|
|
You should then also define CSS styles with appropriate classes (tag-1 to tag-N,
|
|
where N matches ``TAG_CLOUD_STEPS``), tag-1 being the most frequent, and
|
|
define a ``ul.tagcloud`` class with appropriate list-style to create the cloud.
|
|
For example::
|
|
|
|
ul.tagcloud {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
ul.tagcloud li {
|
|
display: inline-block;
|
|
}
|
|
|
|
li.tag-1 {
|
|
font-size: 150%;
|
|
}
|
|
|
|
li.tag-2 {
|
|
font-size: 120%;
|
|
}
|
|
|
|
...
|
|
|
|
Translations
|
|
============
|
|
|
|
Pelican offers a way to translate articles. See the :doc:`Getting Started <getting_started>` section for
|
|
more information.
|
|
|
|
===================================================== =====================================================
|
|
Setting name (default value) What does it do?
|
|
===================================================== =====================================================
|
|
`DEFAULT_LANG` (``'en'``) The default language to use.
|
|
`TRANSLATION_FEED_ATOM` ('feeds/all-%s.atom.xml'[3]_) Where to put the Atom feed for translations.
|
|
`TRANSLATION_FEED_RSS` (``None``, i.e. no RSS) Where to put the RSS feed for translations.
|
|
===================================================== =====================================================
|
|
|
|
.. [3] %s is the language
|
|
|
|
Ordering content
|
|
=================
|
|
|
|
================================================ =====================================================
|
|
Setting name (default value) What does it do?
|
|
================================================ =====================================================
|
|
`NEWEST_FIRST_ARCHIVES` (``True``) Order archives by newest first by date. (False:
|
|
orders by date with older articles first.)
|
|
`REVERSE_CATEGORY_ORDER` (``False``) Reverse the category order. (True: lists by reverse
|
|
alphabetical order; default lists alphabetically.)
|
|
================================================ =====================================================
|
|
|
|
Themes
|
|
======
|
|
|
|
Creating Pelican themes is addressed in a dedicated section (see :ref:`theming-pelican`).
|
|
However, here are the settings that are related to themes.
|
|
|
|
================================================ =====================================================
|
|
Setting name (default value) What does it do?
|
|
================================================ =====================================================
|
|
`THEME` Theme to use to produce the output. Can be a relative
|
|
or absolute path to a theme folder, or the name of a
|
|
default theme or a theme installed via
|
|
``pelican-themes`` (see below).
|
|
`THEME_STATIC_DIR` (``'theme'``) Destination directory in the output path where
|
|
Pelican will place the files collected from
|
|
`THEME_STATIC_PATHS`. Default is `theme`.
|
|
`THEME_STATIC_PATHS` (``['static']``) Static theme paths you want to copy. Default
|
|
value is `static`, but if your theme has
|
|
other static paths, you can put them here. If files
|
|
or directories with the same names are included in
|
|
the paths defined in this settings, they will be
|
|
progressively overwritten.
|
|
`CSS_FILE` (``'main.css'``) Specify the CSS file you want to load.
|
|
================================================ =====================================================
|
|
|
|
|
|
By default, two themes are available. You can specify them using the `THEME` setting or by passing the
|
|
``-t`` option to the ``pelican`` command:
|
|
|
|
* notmyidea
|
|
* simple (a synonym for "plain text" :)
|
|
|
|
There are a number of other themes available at http://github.com/getpelican/pelican-themes.
|
|
Pelican comes with :doc:`pelican-themes`, a small script for managing themes.
|
|
|
|
You can define your own theme, either by starting from scratch or by duplicating
|
|
and modifying a pre-existing theme. Here is :doc:`a guide on how to create your theme <themes>`.
|
|
|
|
Following are example ways to specify your preferred theme::
|
|
|
|
# Specify name of a built-in theme
|
|
THEME = "notmyidea"
|
|
# Specify name of a theme installed via the pelican-themes tool
|
|
THEME = "chunk"
|
|
# Specify a customized theme, via path relative to the settings file
|
|
THEME = "themes/mycustomtheme"
|
|
# Specify a customized theme, via absolute path
|
|
THEME = "~/projects/mysite/themes/mycustomtheme"
|
|
|
|
The built-in ``notmyidea`` theme can make good use of the following settings. Feel
|
|
free to use them in your themes as well.
|
|
|
|
======================= =======================================================
|
|
Setting name What does it do ?
|
|
======================= =======================================================
|
|
`SITESUBTITLE` A subtitle to appear in the header.
|
|
`DISQUS_SITENAME` Pelican can handle Disqus comments. Specify the
|
|
Disqus sitename identifier here.
|
|
`GITHUB_URL` Your GitHub URL (if you have one). It will then
|
|
use this information to create a GitHub ribbon.
|
|
`GOOGLE_ANALYTICS` 'UA-XXXX-YYYY' to activate Google Analytics.
|
|
`GOSQUARED_SITENAME` 'XXX-YYYYYY-X' to activate GoSquared.
|
|
`MENUITEMS` A list of tuples (Title, URL) for additional menu
|
|
items to appear at the beginning of the main menu.
|
|
`PIWIK_URL` URL to your Piwik server - without 'http://' at the
|
|
beginning.
|
|
`PIWIK_SSL_URL` If the SSL-URL differs from the normal Piwik-URL
|
|
you have to include this setting too. (optional)
|
|
`PIWIK_SITE_ID` ID for the monitored website. You can find the ID
|
|
in the Piwik admin interface > settings > websites.
|
|
`LINKS` A list of tuples (Title, URL) for links to appear on
|
|
the header.
|
|
`SOCIAL` A list of tuples (Title, URL) to appear in the
|
|
"social" section.
|
|
`TWITTER_USERNAME` Allows for adding a button to articles to encourage
|
|
others to tweet about them. Add your Twitter username
|
|
if you want this button to appear.
|
|
======================= =======================================================
|
|
|
|
In addition, you can use the "wide" version of the ``notmyidea`` theme by
|
|
adding the following to your configuration::
|
|
|
|
CSS_FILE = "wide.css"
|
|
|
|
Example settings
|
|
================
|
|
|
|
.. literalinclude:: ../samples/pelican.conf.py
|
|
:language: python
|
|
|
|
|
|
.. _Jinja custom filters documentation: http://jinja.pocoo.org/docs/api/#custom-filters
|