Added USE_FOLDER_AS_CATEGORY setting.

This allows users to organize their files in ways where the subfolder name
would not make a good category name (i.e. /2012/09/). Set this to ``False``
and the subfolder will no longer be used as a standard category,
`DEFAULT_CATEGORY` will be used instead.
This commit is contained in:
Martin Brochhaus 2012-09-23 10:04:51 +02:00 committed by Bruno Binet
commit 47c972e21a
5 changed files with 17 additions and 6 deletions

View file

@ -176,7 +176,9 @@ Note that, aside from the title, none of this metadata is mandatory: if the date
is not specified, Pelican will rely on the file's "mtime" timestamp, and the is not specified, Pelican will rely on the file's "mtime" timestamp, and the
category can be determined by the directory in which the file resides. For category can be determined by the directory in which the file resides. For
example, a file located at ``python/foobar/myfoobar.rst`` will have a category of example, a file located at ``python/foobar/myfoobar.rst`` will have a category of
``foobar``. ``foobar``. If you would like to organize your files in other ways where the
name of the subfolder would not be a good category name, you can set the
setting ``USE_FOLDER_AS_CATEGORY`` to ``False``.
Generate your blog Generate your blog
------------------ ------------------

View file

@ -34,6 +34,10 @@ Setting name (default value) What doe
`DATE_FORMATS` (``{}``) If you do manage multiple languages, you can `DATE_FORMATS` (``{}``) If you do manage multiple languages, you can
set the date formatting here. See "Date format and locales" set the date formatting here. See "Date format and locales"
section below for details. section below for details.
`USE_FOLDER_AS_CATEGORY` (``True``) When you don't specify a category in your post metadata and 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_CATEGORY` (``'misc'``) The default category to fall back on.
`DEFAULT_DATE_FORMAT` (``'%a %d %B %Y'``) The default date format you want to use. `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 `DISPLAY_PAGES_ON_MENU` (``True``) Whether to display pages on the menu of the

View file

@ -121,7 +121,8 @@ class Page(object):
'lang': getattr(self, 'lang', 'en'), 'lang': getattr(self, 'lang', 'en'),
'date': getattr(self, 'date', datetime.now()), 'date': getattr(self, 'date', datetime.now()),
'author': self.author, 'author': self.author,
'category': getattr(self, 'category', 'misc'), 'category': getattr(self, 'category',
self.settings['DEFAULT_CATEGORY']),
} }
def _expand_settings(self, key): def _expand_settings(self, key):

View file

@ -280,11 +280,14 @@ class ArticlesGenerator(Generator):
# if no category is set, use the name of the path as a category # if no category is set, use the name of the path as a category
if 'category' not in metadata: if 'category' not in metadata:
if os.path.dirname(f) == article_path: # if the article is not in a subdirectory if (self.settings['USE_FOLDER_AS_CATEGORY']
category = self.settings['DEFAULT_CATEGORY'] and os.path.dirname(f) != article_path):
else: # if the article is in a subdirectory
category = os.path.basename(os.path.dirname(f))\ category = os.path.basename(os.path.dirname(f))\
.decode('utf-8') .decode('utf-8')
else:
# if the article is not in a subdirectory
category = self.settings['DEFAULT_CATEGORY']
if category != '': if category != '':
metadata['category'] = Category(category, self.settings) metadata['category'] = Category(category, self.settings)

View file

@ -34,6 +34,7 @@ _DEFAULT_CONFIG = {'PATH': '.',
'PDF_GENERATOR': False, 'PDF_GENERATOR': False,
'OUTPUT_SOURCES': False, 'OUTPUT_SOURCES': False,
'OUTPUT_SOURCES_EXTENSION': '.text', 'OUTPUT_SOURCES_EXTENSION': '.text',
'USE_FOLDER_AS_CATEGORY': True,
'DEFAULT_CATEGORY': 'misc', 'DEFAULT_CATEGORY': 'misc',
'DEFAULT_DATE': 'fs', 'DEFAULT_DATE': 'fs',
'WITH_FUTURE_DATES': True, 'WITH_FUTURE_DATES': True,