diff --git a/docs/settings.rst b/docs/settings.rst index a75badfc..c7d7f199 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -64,6 +64,7 @@ Setting name (default value) What doe ``'(?P\d{4}-\d{2}-\d{2})_(?P.*)'``. `PATH_METADATA` (``''``) Like ``FILENAME_METADATA``, but parsed from a page's full path relative to the content source directory. +`EXTRA_PATH_METADATA` (``{}``) Extra metadata dictionaries keyed by relative path. `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 diff --git a/pelican/readers.py b/pelican/readers.py index 3cf69dcf..3e00b430 100644 --- a/pelican/readers.py +++ b/pelican/readers.py @@ -413,9 +413,12 @@ def default_metadata(settings=None, process=None): def path_metadata(full_path, source_path, settings=None): metadata = {} - if settings and settings.get('DEFAULT_DATE', None) == 'fs': - metadata['date'] = datetime.datetime.fromtimestamp( - os.stat(path).st_ctime) + if settings: + if settings.get('DEFAULT_DATE', None) == 'fs': + metadata['date'] = datetime.datetime.fromtimestamp( + os.stat(full_path).st_ctime) + metadata.update(settings.get('EXTRA_PATH_METADATA', {}).get( + source_path, {})) return metadata diff --git a/pelican/settings.py b/pelican/settings.py index 5386d172..13896032 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -95,6 +95,7 @@ DEFAULT_CONFIG = { 'DEFAULT_METADATA': (), 'FILENAME_METADATA': '(?P\d{4}-\d{2}-\d{2}).*', 'PATH_METADATA': '', + 'EXTRA_PATH_METADATA': {}, 'DEFAULT_STATUS': 'published', 'ARTICLE_PERMALINK_STRUCTURE': '', 'TYPOGRIFY': False,