diff --git a/docs/settings.rst b/docs/settings.rst index e5ce19f5..d32a9869 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -699,6 +699,10 @@ Template pages 'src/resume.html': 'dest/resume.html', 'src/contact.html': 'dest/contact.html'} +.. data:: TEMPLATE_EXTENSION = ['.html'] + + The extensions to use when looking up template files from template names. + .. data:: DIRECT_TEMPLATES = ['index', 'categories', 'authors', 'archives'] List of templates that are used directly to render content. Typically direct diff --git a/pelican/generators.py b/pelican/generators.py index eb97c115..b9e40243 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -86,12 +86,19 @@ class Generator(object): templates ready to use with Jinja2. """ if name not in self._templates: - try: - self._templates[name] = self.env.get_template(name + '.html') - except TemplateNotFound: + for ext in self.settings['TEMPLATE_EXTENSIONS']: + try: + self._templates[name] = self.env.get_template(name + ext) + break + except TemplateNotFound: + continue + + if name not in self._templates: raise PelicanTemplateNotFound( - '[templates] unable to load {}.html from {}'.format( - name, self._templates_path)) + '[templates] unable to load {}[{}] from {}'.format( + name, ', '.join(self.settings['TEMPLATE_EXTENSIONS']), + self._templates_path)) + return self._templates[name] def _include_path(self, path, extensions=None): diff --git a/pelican/settings.py b/pelican/settings.py index 417de79a..0d09340b 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -134,6 +134,7 @@ DEFAULT_CONFIG = { 'PLUGINS': [], 'PYGMENTS_RST_OPTIONS': {}, 'TEMPLATE_PAGES': {}, + 'TEMPLATE_EXTENSIONS': ['.html'], 'IGNORE_FILES': ['.#*'], 'SLUG_SUBSTITUTIONS': (), 'INTRASITE_LINK_REGEX': '[{|](?P.*?)[|}]',