start a theme
This commit is contained in:
parent
f4749a1955
commit
74ab662f50
26 changed files with 671 additions and 12 deletions
|
|
@ -1,10 +0,0 @@
|
||||||
Title: My super title
|
|
||||||
Date: 2010-12-03 10:20
|
|
||||||
Modified: 2010-12-05 19:30
|
|
||||||
Category: Python
|
|
||||||
Tags: pelican, publishing
|
|
||||||
Slug: my-super-post
|
|
||||||
Authors: Alexis Metaireau, Conan Doyle
|
|
||||||
Summary: Short version for index and feeds
|
|
||||||
|
|
||||||
This is the content of my super blog post.
|
|
||||||
BIN
content/posts/루트에 대한, 대화/00000000-4064-500x750.jpg
Normal file
BIN
content/posts/루트에 대한, 대화/00000000-4064-500x750.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 75 KiB |
BIN
content/posts/루트에 대한, 대화/00000000-4077-500x333.jpg
Normal file
BIN
content/posts/루트에 대한, 대화/00000000-4077-500x333.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
BIN
content/posts/루트에 대한, 대화/00000000-4082-500x333.jpg
Normal file
BIN
content/posts/루트에 대한, 대화/00000000-4082-500x333.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
BIN
content/posts/루트에 대한, 대화/00000000-4083-500x333.jpg
Normal file
BIN
content/posts/루트에 대한, 대화/00000000-4083-500x333.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
BIN
content/posts/루트에 대한, 대화/00000000-4115-500x750.jpg
Normal file
BIN
content/posts/루트에 대한, 대화/00000000-4115-500x750.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
33
content/posts/루트에 대한, 대화/루트에 대한, 대화.rst
Normal file
33
content/posts/루트에 대한, 대화/루트에 대한, 대화.rst
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
루트에 대한, 대화
|
||||||
|
==================================
|
||||||
|
|
||||||
|
:date: 2021-03-18 10:00
|
||||||
|
:tags: portfolio
|
||||||
|
:category: works
|
||||||
|
:slug: conversation-about-the-root
|
||||||
|
|
||||||
|
루트에 대한, 대화 | Conversation about the ROOT
|
||||||
|
March 2021
|
||||||
|
|
||||||
|
Sound Object Installation
|
||||||
|
@SeMA 창고 서울 시립 미술관 | SeMA Storage Seoul Museum of Art
|
||||||
|
|
||||||
|
.. image:: {attach}00000000-4064-500x750.jpg
|
||||||
|
:alt: alternate text
|
||||||
|
:class: abc
|
||||||
|
|
||||||
|
.. image:: {attach}00000000-4077-500x333.jpg
|
||||||
|
:alt: alternate text
|
||||||
|
:class: abc
|
||||||
|
|
||||||
|
.. image:: {attach}00000000-4082-500x333.jpg
|
||||||
|
:alt: alternate text
|
||||||
|
:class: abc
|
||||||
|
|
||||||
|
.. image:: {attach}00000000-4083-500x333.jpg
|
||||||
|
:alt: alternate text
|
||||||
|
:class: abc
|
||||||
|
|
||||||
|
.. image:: {attach}00000000-4115-500x750.jpg
|
||||||
|
:alt: alternate text
|
||||||
|
:class: abc
|
||||||
151
pelicanconf.py
151
pelicanconf.py
|
|
@ -29,3 +29,154 @@ DEFAULT_PAGINATION = 10
|
||||||
|
|
||||||
# Uncomment following line if you want document-relative URLs when developing
|
# Uncomment following line if you want document-relative URLs when developing
|
||||||
#RELATIVE_URLS = True
|
#RELATIVE_URLS = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# DEFAULT settings (from pelican/pelican/settings.py)
|
||||||
|
# i.e. -> if you don't say sth. then following will take action.
|
||||||
|
|
||||||
|
# DEFAULT_THEME = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||||
|
# 'themes', 'notmyidea')
|
||||||
|
# DEFAULT_CONFIG = {
|
||||||
|
# 'PATH': os.curdir,
|
||||||
|
# 'ARTICLE_PATHS': [''],
|
||||||
|
# 'ARTICLE_EXCLUDES': [],
|
||||||
|
# 'PAGE_PATHS': ['pages'],
|
||||||
|
# 'PAGE_EXCLUDES': [],
|
||||||
|
# 'THEME': DEFAULT_THEME,
|
||||||
|
# 'OUTPUT_PATH': 'output',
|
||||||
|
# 'READERS': {},
|
||||||
|
# 'STATIC_PATHS': ['images'],
|
||||||
|
# 'STATIC_EXCLUDES': [],
|
||||||
|
# 'STATIC_EXCLUDE_SOURCES': True,
|
||||||
|
# 'THEME_STATIC_DIR': 'theme',
|
||||||
|
# 'THEME_STATIC_PATHS': ['static', ],
|
||||||
|
# 'FEED_ALL_ATOM': 'feeds/all.atom.xml',
|
||||||
|
# 'CATEGORY_FEED_ATOM': 'feeds/{slug}.atom.xml',
|
||||||
|
# 'AUTHOR_FEED_ATOM': 'feeds/{slug}.atom.xml',
|
||||||
|
# 'AUTHOR_FEED_RSS': 'feeds/{slug}.rss.xml',
|
||||||
|
# 'TRANSLATION_FEED_ATOM': 'feeds/all-{lang}.atom.xml',
|
||||||
|
# 'FEED_MAX_ITEMS': '',
|
||||||
|
# 'RSS_FEED_SUMMARY_ONLY': True,
|
||||||
|
# 'SITEURL': '',
|
||||||
|
# 'SITENAME': 'A Pelican Blog',
|
||||||
|
# 'DISPLAY_PAGES_ON_MENU': True,
|
||||||
|
# 'DISPLAY_CATEGORIES_ON_MENU': True,
|
||||||
|
# 'DOCUTILS_SETTINGS': {},
|
||||||
|
# 'OUTPUT_SOURCES': False,
|
||||||
|
# 'OUTPUT_SOURCES_EXTENSION': '.text',
|
||||||
|
# 'USE_FOLDER_AS_CATEGORY': True,
|
||||||
|
# 'DEFAULT_CATEGORY': 'misc',
|
||||||
|
# 'WITH_FUTURE_DATES': True,
|
||||||
|
# 'CSS_FILE': 'main.css',
|
||||||
|
# 'NEWEST_FIRST_ARCHIVES': True,
|
||||||
|
# 'REVERSE_CATEGORY_ORDER': False,
|
||||||
|
# 'DELETE_OUTPUT_DIRECTORY': False,
|
||||||
|
# 'OUTPUT_RETENTION': [],
|
||||||
|
# 'INDEX_SAVE_AS': 'index.html',
|
||||||
|
# 'ARTICLE_URL': '{slug}.html',
|
||||||
|
# 'ARTICLE_SAVE_AS': '{slug}.html',
|
||||||
|
# 'ARTICLE_ORDER_BY': 'reversed-date',
|
||||||
|
# 'ARTICLE_LANG_URL': '{slug}-{lang}.html',
|
||||||
|
# 'ARTICLE_LANG_SAVE_AS': '{slug}-{lang}.html',
|
||||||
|
# 'DRAFT_URL': 'drafts/{slug}.html',
|
||||||
|
# 'DRAFT_SAVE_AS': 'drafts/{slug}.html',
|
||||||
|
# 'DRAFT_LANG_URL': 'drafts/{slug}-{lang}.html',
|
||||||
|
# 'DRAFT_LANG_SAVE_AS': 'drafts/{slug}-{lang}.html',
|
||||||
|
# 'PAGE_URL': 'pages/{slug}.html',
|
||||||
|
# 'PAGE_SAVE_AS': 'pages/{slug}.html',
|
||||||
|
# 'PAGE_ORDER_BY': 'basename',
|
||||||
|
# 'PAGE_LANG_URL': 'pages/{slug}-{lang}.html',
|
||||||
|
# 'PAGE_LANG_SAVE_AS': 'pages/{slug}-{lang}.html',
|
||||||
|
# 'DRAFT_PAGE_URL': 'drafts/pages/{slug}.html',
|
||||||
|
# 'DRAFT_PAGE_SAVE_AS': 'drafts/pages/{slug}.html',
|
||||||
|
# 'DRAFT_PAGE_LANG_URL': 'drafts/pages/{slug}-{lang}.html',
|
||||||
|
# 'DRAFT_PAGE_LANG_SAVE_AS': 'drafts/pages/{slug}-{lang}.html',
|
||||||
|
# 'STATIC_URL': '{path}',
|
||||||
|
# 'STATIC_SAVE_AS': '{path}',
|
||||||
|
# 'STATIC_CREATE_LINKS': False,
|
||||||
|
# 'STATIC_CHECK_IF_MODIFIED': False,
|
||||||
|
# 'CATEGORY_URL': 'category/{slug}.html',
|
||||||
|
# 'CATEGORY_SAVE_AS': 'category/{slug}.html',
|
||||||
|
# 'TAG_URL': 'tag/{slug}.html',
|
||||||
|
# 'TAG_SAVE_AS': 'tag/{slug}.html',
|
||||||
|
# 'AUTHOR_URL': 'author/{slug}.html',
|
||||||
|
# 'AUTHOR_SAVE_AS': 'author/{slug}.html',
|
||||||
|
# 'PAGINATION_PATTERNS': [
|
||||||
|
# (1, '{name}{extension}', '{name}{extension}'),
|
||||||
|
# (2, '{name}{number}{extension}', '{name}{number}{extension}'),
|
||||||
|
# ],
|
||||||
|
# 'YEAR_ARCHIVE_URL': '',
|
||||||
|
# 'YEAR_ARCHIVE_SAVE_AS': '',
|
||||||
|
# 'MONTH_ARCHIVE_URL': '',
|
||||||
|
# 'MONTH_ARCHIVE_SAVE_AS': '',
|
||||||
|
# 'DAY_ARCHIVE_URL': '',
|
||||||
|
# 'DAY_ARCHIVE_SAVE_AS': '',
|
||||||
|
# 'RELATIVE_URLS': False,
|
||||||
|
# 'DEFAULT_LANG': 'en',
|
||||||
|
# 'ARTICLE_TRANSLATION_ID': 'slug',
|
||||||
|
# 'PAGE_TRANSLATION_ID': 'slug',
|
||||||
|
# 'DIRECT_TEMPLATES': ['index', 'tags', 'categories', 'authors', 'archives'],
|
||||||
|
# 'THEME_TEMPLATES_OVERRIDES': [],
|
||||||
|
# 'PAGINATED_TEMPLATES': {'index': None, 'tag': None, 'category': None,
|
||||||
|
# 'author': None},
|
||||||
|
# 'PELICAN_CLASS': 'pelican.Pelican',
|
||||||
|
# 'DEFAULT_DATE_FORMAT': '%a %d %B %Y',
|
||||||
|
# 'DATE_FORMATS': {},
|
||||||
|
# 'MARKDOWN': {
|
||||||
|
# 'extension_configs': {
|
||||||
|
# 'markdown.extensions.codehilite': {'css_class': 'highlight'},
|
||||||
|
# 'markdown.extensions.extra': {},
|
||||||
|
# 'markdown.extensions.meta': {},
|
||||||
|
# },
|
||||||
|
# 'output_format': 'html5',
|
||||||
|
# },
|
||||||
|
# 'JINJA_FILTERS': {},
|
||||||
|
# 'JINJA_GLOBALS': {},
|
||||||
|
# 'JINJA_TESTS': {},
|
||||||
|
# 'JINJA_ENVIRONMENT': {
|
||||||
|
# 'trim_blocks': True,
|
||||||
|
# 'lstrip_blocks': True,
|
||||||
|
# 'extensions': [],
|
||||||
|
# },
|
||||||
|
# 'LOG_FILTER': [],
|
||||||
|
# 'LOCALE': [''], # defaults to user locale
|
||||||
|
# 'DEFAULT_PAGINATION': False,
|
||||||
|
# 'DEFAULT_ORPHANS': 0,
|
||||||
|
# 'DEFAULT_METADATA': {},
|
||||||
|
# 'FILENAME_METADATA': r'(?P<date>\d{4}-\d{2}-\d{2}).*',
|
||||||
|
# 'PATH_METADATA': '',
|
||||||
|
# 'EXTRA_PATH_METADATA': {},
|
||||||
|
# 'ARTICLE_PERMALINK_STRUCTURE': '',
|
||||||
|
# 'TYPOGRIFY': False,
|
||||||
|
# 'TYPOGRIFY_IGNORE_TAGS': [],
|
||||||
|
# 'TYPOGRIFY_DASHES': 'default',
|
||||||
|
# 'SUMMARY_END_SUFFIX': '…',
|
||||||
|
# 'SUMMARY_MAX_LENGTH': 50,
|
||||||
|
# 'PLUGIN_PATHS': [],
|
||||||
|
# 'PLUGINS': None,
|
||||||
|
# 'PYGMENTS_RST_OPTIONS': {},
|
||||||
|
# 'TEMPLATE_PAGES': {},
|
||||||
|
# 'TEMPLATE_EXTENSIONS': ['.html'],
|
||||||
|
# 'IGNORE_FILES': ['.#*'],
|
||||||
|
# 'SLUG_REGEX_SUBSTITUTIONS': [
|
||||||
|
# (r'[^\w\s-]', ''), # remove non-alphabetical/whitespace/'-' chars
|
||||||
|
# (r'(?u)\A\s*', ''), # strip leading whitespace
|
||||||
|
# (r'(?u)\s*\Z', ''), # strip trailing whitespace
|
||||||
|
# (r'[-\s]+', '-'), # reduce multiple whitespace or '-' to single '-'
|
||||||
|
# ],
|
||||||
|
# 'INTRASITE_LINK_REGEX': '[{|](?P<what>.*?)[|}]',
|
||||||
|
# 'SLUGIFY_SOURCE': 'title',
|
||||||
|
# 'SLUGIFY_USE_UNICODE': False,
|
||||||
|
# 'SLUGIFY_PRESERVE_CASE': False,
|
||||||
|
# 'CACHE_CONTENT': False,
|
||||||
|
# 'CONTENT_CACHING_LAYER': 'reader',
|
||||||
|
# 'CACHE_PATH': 'cache',
|
||||||
|
# 'GZIP_CACHE': True,
|
||||||
|
# 'CHECK_MODIFIED_METHOD': 'mtime',
|
||||||
|
# 'LOAD_CONTENT_CACHE': False,
|
||||||
|
# 'WRITE_SELECTED': [],
|
||||||
|
# 'FORMATTED_FIELDS': ['summary'],
|
||||||
|
# 'PORT': 8000,
|
||||||
|
# 'BIND': '127.0.0.1',
|
||||||
|
# }
|
||||||
|
|
|
||||||
158
publishconf.py
158
publishconf.py
|
|
@ -15,7 +15,165 @@ CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
|
||||||
|
|
||||||
DELETE_OUTPUT_DIRECTORY = True
|
DELETE_OUTPUT_DIRECTORY = True
|
||||||
|
|
||||||
|
THEME = "./themes/simple"
|
||||||
|
|
||||||
|
#FILENAME_METADATA = r'(?P<title>.*)'
|
||||||
|
#PATH_METADATA = r'.*/(?P<title>.*)'
|
||||||
|
|
||||||
|
#PATH_METADATA = r'.*/(?P<category>[^/]*)/(?P<date>(?P<slug>\d{8}T\d{6})[+-]\d{4})_(?P<title>.*)/.*'
|
||||||
|
|
||||||
|
|
||||||
# Following items are often useful when publishing
|
# Following items are often useful when publishing
|
||||||
|
|
||||||
#DISQUS_SITENAME = ""
|
#DISQUS_SITENAME = ""
|
||||||
#GOOGLE_ANALYTICS = ""
|
#GOOGLE_ANALYTICS = ""
|
||||||
|
|
||||||
|
|
||||||
|
# DEFAULT settings (from pelican/pelican/settings.py)
|
||||||
|
# i.e. -> if you don't say sth. then following will take action.
|
||||||
|
|
||||||
|
# DEFAULT_THEME = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||||
|
# 'themes', 'notmyidea')
|
||||||
|
# DEFAULT_CONFIG = {
|
||||||
|
# 'PATH': os.curdir,
|
||||||
|
# 'ARTICLE_PATHS': [''],
|
||||||
|
# 'ARTICLE_EXCLUDES': [],
|
||||||
|
# 'PAGE_PATHS': ['pages'],
|
||||||
|
# 'PAGE_EXCLUDES': [],
|
||||||
|
# 'THEME': DEFAULT_THEME,
|
||||||
|
# 'OUTPUT_PATH': 'output',
|
||||||
|
# 'READERS': {},
|
||||||
|
# 'STATIC_PATHS': ['images'],
|
||||||
|
# 'STATIC_EXCLUDES': [],
|
||||||
|
# 'STATIC_EXCLUDE_SOURCES': True,
|
||||||
|
# 'THEME_STATIC_DIR': 'theme',
|
||||||
|
# 'THEME_STATIC_PATHS': ['static', ],
|
||||||
|
# 'FEED_ALL_ATOM': 'feeds/all.atom.xml',
|
||||||
|
# 'CATEGORY_FEED_ATOM': 'feeds/{slug}.atom.xml',
|
||||||
|
# 'AUTHOR_FEED_ATOM': 'feeds/{slug}.atom.xml',
|
||||||
|
# 'AUTHOR_FEED_RSS': 'feeds/{slug}.rss.xml',
|
||||||
|
# 'TRANSLATION_FEED_ATOM': 'feeds/all-{lang}.atom.xml',
|
||||||
|
# 'FEED_MAX_ITEMS': '',
|
||||||
|
# 'RSS_FEED_SUMMARY_ONLY': True,
|
||||||
|
# 'SITEURL': '',
|
||||||
|
# 'SITENAME': 'A Pelican Blog',
|
||||||
|
# 'DISPLAY_PAGES_ON_MENU': True,
|
||||||
|
# 'DISPLAY_CATEGORIES_ON_MENU': True,
|
||||||
|
# 'DOCUTILS_SETTINGS': {},
|
||||||
|
# 'OUTPUT_SOURCES': False,
|
||||||
|
# 'OUTPUT_SOURCES_EXTENSION': '.text',
|
||||||
|
# 'USE_FOLDER_AS_CATEGORY': True,
|
||||||
|
# 'DEFAULT_CATEGORY': 'misc',
|
||||||
|
# 'WITH_FUTURE_DATES': True,
|
||||||
|
# 'CSS_FILE': 'main.css',
|
||||||
|
# 'NEWEST_FIRST_ARCHIVES': True,
|
||||||
|
# 'REVERSE_CATEGORY_ORDER': False,
|
||||||
|
# 'DELETE_OUTPUT_DIRECTORY': False,
|
||||||
|
# 'OUTPUT_RETENTION': [],
|
||||||
|
# 'INDEX_SAVE_AS': 'index.html',
|
||||||
|
# 'ARTICLE_URL': '{slug}.html',
|
||||||
|
# 'ARTICLE_SAVE_AS': '{slug}.html',
|
||||||
|
# 'ARTICLE_ORDER_BY': 'reversed-date',
|
||||||
|
# 'ARTICLE_LANG_URL': '{slug}-{lang}.html',
|
||||||
|
# 'ARTICLE_LANG_SAVE_AS': '{slug}-{lang}.html',
|
||||||
|
# 'DRAFT_URL': 'drafts/{slug}.html',
|
||||||
|
# 'DRAFT_SAVE_AS': 'drafts/{slug}.html',
|
||||||
|
# 'DRAFT_LANG_URL': 'drafts/{slug}-{lang}.html',
|
||||||
|
# 'DRAFT_LANG_SAVE_AS': 'drafts/{slug}-{lang}.html',
|
||||||
|
# 'PAGE_URL': 'pages/{slug}.html',
|
||||||
|
# 'PAGE_SAVE_AS': 'pages/{slug}.html',
|
||||||
|
# 'PAGE_ORDER_BY': 'basename',
|
||||||
|
# 'PAGE_LANG_URL': 'pages/{slug}-{lang}.html',
|
||||||
|
# 'PAGE_LANG_SAVE_AS': 'pages/{slug}-{lang}.html',
|
||||||
|
# 'DRAFT_PAGE_URL': 'drafts/pages/{slug}.html',
|
||||||
|
# 'DRAFT_PAGE_SAVE_AS': 'drafts/pages/{slug}.html',
|
||||||
|
# 'DRAFT_PAGE_LANG_URL': 'drafts/pages/{slug}-{lang}.html',
|
||||||
|
# 'DRAFT_PAGE_LANG_SAVE_AS': 'drafts/pages/{slug}-{lang}.html',
|
||||||
|
# 'STATIC_URL': '{path}',
|
||||||
|
# 'STATIC_SAVE_AS': '{path}',
|
||||||
|
# 'STATIC_CREATE_LINKS': False,
|
||||||
|
# 'STATIC_CHECK_IF_MODIFIED': False,
|
||||||
|
# 'CATEGORY_URL': 'category/{slug}.html',
|
||||||
|
# 'CATEGORY_SAVE_AS': 'category/{slug}.html',
|
||||||
|
# 'TAG_URL': 'tag/{slug}.html',
|
||||||
|
# 'TAG_SAVE_AS': 'tag/{slug}.html',
|
||||||
|
# 'AUTHOR_URL': 'author/{slug}.html',
|
||||||
|
# 'AUTHOR_SAVE_AS': 'author/{slug}.html',
|
||||||
|
# 'PAGINATION_PATTERNS': [
|
||||||
|
# (1, '{name}{extension}', '{name}{extension}'),
|
||||||
|
# (2, '{name}{number}{extension}', '{name}{number}{extension}'),
|
||||||
|
# ],
|
||||||
|
# 'YEAR_ARCHIVE_URL': '',
|
||||||
|
# 'YEAR_ARCHIVE_SAVE_AS': '',
|
||||||
|
# 'MONTH_ARCHIVE_URL': '',
|
||||||
|
# 'MONTH_ARCHIVE_SAVE_AS': '',
|
||||||
|
# 'DAY_ARCHIVE_URL': '',
|
||||||
|
# 'DAY_ARCHIVE_SAVE_AS': '',
|
||||||
|
# 'RELATIVE_URLS': False,
|
||||||
|
# 'DEFAULT_LANG': 'en',
|
||||||
|
# 'ARTICLE_TRANSLATION_ID': 'slug',
|
||||||
|
# 'PAGE_TRANSLATION_ID': 'slug',
|
||||||
|
# 'DIRECT_TEMPLATES': ['index', 'tags', 'categories', 'authors', 'archives'],
|
||||||
|
# 'THEME_TEMPLATES_OVERRIDES': [],
|
||||||
|
# 'PAGINATED_TEMPLATES': {'index': None, 'tag': None, 'category': None,
|
||||||
|
# 'author': None},
|
||||||
|
# 'PELICAN_CLASS': 'pelican.Pelican',
|
||||||
|
# 'DEFAULT_DATE_FORMAT': '%a %d %B %Y',
|
||||||
|
# 'DATE_FORMATS': {},
|
||||||
|
# 'MARKDOWN': {
|
||||||
|
# 'extension_configs': {
|
||||||
|
# 'markdown.extensions.codehilite': {'css_class': 'highlight'},
|
||||||
|
# 'markdown.extensions.extra': {},
|
||||||
|
# 'markdown.extensions.meta': {},
|
||||||
|
# },
|
||||||
|
# 'output_format': 'html5',
|
||||||
|
# },
|
||||||
|
# 'JINJA_FILTERS': {},
|
||||||
|
# 'JINJA_GLOBALS': {},
|
||||||
|
# 'JINJA_TESTS': {},
|
||||||
|
# 'JINJA_ENVIRONMENT': {
|
||||||
|
# 'trim_blocks': True,
|
||||||
|
# 'lstrip_blocks': True,
|
||||||
|
# 'extensions': [],
|
||||||
|
# },
|
||||||
|
# 'LOG_FILTER': [],
|
||||||
|
# 'LOCALE': [''], # defaults to user locale
|
||||||
|
# 'DEFAULT_PAGINATION': False,
|
||||||
|
# 'DEFAULT_ORPHANS': 0,
|
||||||
|
# 'DEFAULT_METADATA': {},
|
||||||
|
# 'FILENAME_METADATA': r'(?P<date>\d{4}-\d{2}-\d{2}).*',
|
||||||
|
# 'PATH_METADATA': '',
|
||||||
|
# 'EXTRA_PATH_METADATA': {},
|
||||||
|
# 'ARTICLE_PERMALINK_STRUCTURE': '',
|
||||||
|
# 'TYPOGRIFY': False,
|
||||||
|
# 'TYPOGRIFY_IGNORE_TAGS': [],
|
||||||
|
# 'TYPOGRIFY_DASHES': 'default',
|
||||||
|
# 'SUMMARY_END_SUFFIX': '…',
|
||||||
|
# 'SUMMARY_MAX_LENGTH': 50,
|
||||||
|
# 'PLUGIN_PATHS': [],
|
||||||
|
# 'PLUGINS': None,
|
||||||
|
# 'PYGMENTS_RST_OPTIONS': {},
|
||||||
|
# 'TEMPLATE_PAGES': {},
|
||||||
|
# 'TEMPLATE_EXTENSIONS': ['.html'],
|
||||||
|
# 'IGNORE_FILES': ['.#*'],
|
||||||
|
# 'SLUG_REGEX_SUBSTITUTIONS': [
|
||||||
|
# (r'[^\w\s-]', ''), # remove non-alphabetical/whitespace/'-' chars
|
||||||
|
# (r'(?u)\A\s*', ''), # strip leading whitespace
|
||||||
|
# (r'(?u)\s*\Z', ''), # strip trailing whitespace
|
||||||
|
# (r'[-\s]+', '-'), # reduce multiple whitespace or '-' to single '-'
|
||||||
|
# ],
|
||||||
|
# 'INTRASITE_LINK_REGEX': '[{|](?P<what>.*?)[|}]',
|
||||||
|
# 'SLUGIFY_SOURCE': 'title',
|
||||||
|
# 'SLUGIFY_USE_UNICODE': False,
|
||||||
|
# 'SLUGIFY_PRESERVE_CASE': False,
|
||||||
|
# 'CACHE_CONTENT': False,
|
||||||
|
# 'CONTENT_CACHING_LAYER': 'reader',
|
||||||
|
# 'CACHE_PATH': 'cache',
|
||||||
|
# 'GZIP_CACHE': True,
|
||||||
|
# 'CHECK_MODIFIED_METHOD': 'mtime',
|
||||||
|
# 'LOAD_CONTENT_CACHE': False,
|
||||||
|
# 'WRITE_SELECTED': [],
|
||||||
|
# 'FORMATTED_FIELDS': ['summary'],
|
||||||
|
# 'PORT': 8000,
|
||||||
|
# 'BIND': '127.0.0.1',
|
||||||
|
# }
|
||||||
|
|
|
||||||
7
run.sh
Executable file
7
run.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
pelican content/ -o output/ -s publishconf.py
|
||||||
|
|
||||||
|
set +x
|
||||||
3
themes/simple/static/default.css
Normal file
3
themes/simple/static/default.css
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
14
themes/simple/templates/archives.html
Normal file
14
themes/simple/templates/archives.html
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - Archives{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Archives for {{ SITENAME }}</h1>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
{% for article in dates %}
|
||||||
|
<dt>{{ article.locale_date }}</dt>
|
||||||
|
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
|
||||||
|
{% endfor %}
|
||||||
|
</dl>
|
||||||
|
{% endblock %}
|
||||||
67
themes/simple/templates/article.html
Normal file
67
themes/simple/templates/article.html
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block html_lang %}{{ article.lang }}{% endblock %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - {{ article.title|striptags }}{% endblock %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ super() }}
|
||||||
|
|
||||||
|
{% import 'translations.html' as translations with context %}
|
||||||
|
{% if translations.entry_hreflang(article) %}
|
||||||
|
{{ translations.entry_hreflang(article) }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if article.description %}
|
||||||
|
<meta name="description" content="{{article.description}}" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for tag in article.tags %}
|
||||||
|
<meta name="tags" content="{{tag}}" />
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<section id="content" class="body">
|
||||||
|
<header>
|
||||||
|
<h2 class="entry-title">
|
||||||
|
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
|
||||||
|
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2>
|
||||||
|
{% import 'translations.html' as translations with context %}
|
||||||
|
{{ translations.translations_for(article) }}
|
||||||
|
</header>
|
||||||
|
<footer class="post-info">
|
||||||
|
<time class="published" datetime="{{ article.date.isoformat() }}">
|
||||||
|
{{ article.locale_date }}
|
||||||
|
</time>
|
||||||
|
{% if article.modified %}
|
||||||
|
<time class="modified" datetime="{{ article.modified.isoformat() }}">
|
||||||
|
{{ article.locale_modified }}
|
||||||
|
</time>
|
||||||
|
{% endif %}
|
||||||
|
{% if article.authors %}
|
||||||
|
<address class="vcard author">
|
||||||
|
By {% for author in article.authors %}
|
||||||
|
<a class="url fn" href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
</address>
|
||||||
|
{% endif %}
|
||||||
|
{% if article.category %}
|
||||||
|
<div class="category">
|
||||||
|
Category: <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% if article.tags %}
|
||||||
|
<div class="tags">
|
||||||
|
Tags:
|
||||||
|
{% for tag in article.tags %}
|
||||||
|
<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</footer><!-- /.post-info -->
|
||||||
|
<div class="entry-content">
|
||||||
|
{{ article.content }}
|
||||||
|
</div><!-- /.entry-content -->
|
||||||
|
</section>
|
||||||
|
{% endblock %}
|
||||||
8
themes/simple/templates/author.html
Normal file
8
themes/simple/templates/author.html
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{% extends "index.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - Articles by {{ author }}{% endblock %}
|
||||||
|
|
||||||
|
{% block content_title %}
|
||||||
|
<h2>Articles by {{ author }}</h2>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
12
themes/simple/templates/authors.html
Normal file
12
themes/simple/templates/authors.html
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - Authors{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Authors on {{ SITENAME }}</h1>
|
||||||
|
<ul>
|
||||||
|
{% for author, articles in authors|sort %}
|
||||||
|
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
63
themes/simple/templates/base.html
Normal file
63
themes/simple/templates/base.html
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">
|
||||||
|
<head>
|
||||||
|
{% block head %}
|
||||||
|
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="generator" content="Pelican" />
|
||||||
|
{% if FEED_ALL_ATOM %}
|
||||||
|
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_ALL_RSS %}
|
||||||
|
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_ATOM %}
|
||||||
|
<link href="{{ FEED_DOMAIN }}/{%if FEED_ATOM_URL %}{{ FEED_ATOM_URL }}{% else %}{{ FEED_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_RSS %}
|
||||||
|
<link href="{{ FEED_DOMAIN }}/{% if FEED_RSS_URL %}{{ FEED_RSS_URL }}{% else %}{{ FEED_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% if CATEGORY_FEED_ATOM and category %}
|
||||||
|
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_ATOM_URL %}{{ CATEGORY_FEED_ATOM_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% if CATEGORY_FEED_RSS and category %}
|
||||||
|
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_RSS_URL %}{{ CATEGORY_FEED_RSS_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% if TAG_FEED_ATOM and tag %}
|
||||||
|
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_ATOM_URL %}{{ TAG_FEED_ATOM_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_ATOM.format(slug=tag.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% if TAG_FEED_RSS and tag %}
|
||||||
|
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_RSS_URL %}{{ TAG_FEED_RSS_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_RSS.format(slug=tag.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% endblock head %}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body id="index" class="home">
|
||||||
|
<header id="banner" class="body">
|
||||||
|
<h1><a href="{{ SITEURL }}/">{{ SITENAME }}{% if SITESUBTITLE %} <strong>{{ SITESUBTITLE }}</strong>{% endif %}</a></h1>
|
||||||
|
</header><!-- /#banner -->
|
||||||
|
<nav id="menu"><ul>
|
||||||
|
{% for title, link in MENUITEMS %}
|
||||||
|
<li><a href="{{ link }}">{{ title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% if DISPLAY_PAGES_ON_MENU %}
|
||||||
|
{% for p in pages %}
|
||||||
|
<li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if DISPLAY_CATEGORIES_ON_MENU %}
|
||||||
|
{% for cat, null in categories %}
|
||||||
|
<li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</ul></nav><!-- /#menu -->
|
||||||
|
{% block content %}
|
||||||
|
{% endblock %}
|
||||||
|
<footer id="contentinfo" class="body">
|
||||||
|
<address id="about" class="vcard body">
|
||||||
|
Proudly powered by <a href="https://getpelican.com/">Pelican</a>,
|
||||||
|
which takes great advantage of <a href="https://www.python.org/">Python</a>.
|
||||||
|
</address><!-- /#about -->
|
||||||
|
</footer><!-- /#contentinfo -->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
12
themes/simple/templates/categories.html
Normal file
12
themes/simple/templates/categories.html
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - Categories{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Categories on {{ SITENAME }}</h1>
|
||||||
|
<ul>
|
||||||
|
{% for category, articles in categories|sort %}
|
||||||
|
<li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a> ({{ articles|count }})</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
8
themes/simple/templates/category.html
Normal file
8
themes/simple/templates/category.html
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{% extends "index.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - {{ category }} category{% endblock %}
|
||||||
|
|
||||||
|
{% block content_title %}
|
||||||
|
<h2>Articles in the {{ category }} category</h2>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
14
themes/simple/templates/gosquared.html
Normal file
14
themes/simple/templates/gosquared.html
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{% if GOSQUARED_SITENAME %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
var GoSquared={};
|
||||||
|
GoSquared.acct = "{{ GOSQUARED_SITENAME }}";
|
||||||
|
(function(w){
|
||||||
|
function gs(){
|
||||||
|
w._gstc_lt=+(new Date); var d=document;
|
||||||
|
var g = d.createElement("script"); g.type = "text/javascript"; g.async = true; g.src = "https://d1l6p2sc9645hc.cloudfront.net/tracker.js";
|
||||||
|
var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(g, s);
|
||||||
|
}
|
||||||
|
w.addEventListener?w.addEventListener("load",gs,false):w.attachEvent("onload",gs);
|
||||||
|
})(window);
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
28
themes/simple/templates/index.html
Normal file
28
themes/simple/templates/index.html
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block content %}
|
||||||
|
<section id="content">
|
||||||
|
{% block content_title %}
|
||||||
|
<h2>All articles</h2>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
<ol id="post-list">
|
||||||
|
{% for article in articles_page.object_list %}
|
||||||
|
<li><article class="hentry">
|
||||||
|
<header> <h2 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2> </header>
|
||||||
|
<footer class="post-info">
|
||||||
|
<time class="published" datetime="{{ article.date.isoformat() }}"> {{ article.locale_date }} </time>
|
||||||
|
<address class="vcard author">By
|
||||||
|
{% for author in article.authors %}
|
||||||
|
<a class="url fn" href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
</address>
|
||||||
|
</footer><!-- /.post-info -->
|
||||||
|
<div class="entry-content"> {{ article.summary }} </div><!-- /.entry-content -->
|
||||||
|
</article></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ol><!-- /#posts-list -->
|
||||||
|
{% if articles_page.has_other_pages() %}
|
||||||
|
{% include 'pagination.html' %}
|
||||||
|
{% endif %}
|
||||||
|
</section><!-- /#content -->
|
||||||
|
{% endblock content %}
|
||||||
27
themes/simple/templates/page.html
Normal file
27
themes/simple/templates/page.html
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block html_lang %}{{ page.lang }}{% endblock %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - {{ page.title|striptags }}{%endblock%}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ super() }}
|
||||||
|
|
||||||
|
{% import 'translations.html' as translations with context %}
|
||||||
|
{% if translations.entry_hreflang(page) %}
|
||||||
|
{{ translations.entry_hreflang(page) }}
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
|
{% import 'translations.html' as translations with context %}
|
||||||
|
{{ translations.translations_for(page) }}
|
||||||
|
|
||||||
|
{{ page.content }}
|
||||||
|
|
||||||
|
{% if page.modified %}
|
||||||
|
<p>
|
||||||
|
Last updated: {{ page.locale_modified }}
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
15
themes/simple/templates/pagination.html
Normal file
15
themes/simple/templates/pagination.html
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{% if DEFAULT_PAGINATION %}
|
||||||
|
{% set first_page = articles_paginator.page(1) %}
|
||||||
|
{% set last_page = articles_paginator.page(articles_paginator.num_pages) %}
|
||||||
|
<p class="paginator">
|
||||||
|
{% if articles_page.has_previous() %}
|
||||||
|
<a href="{{ SITEURL }}/{{ first_page.url }}">⇇</a>
|
||||||
|
<a href="{{ SITEURL }}/{{ articles_previous_page.url }}">«</a>
|
||||||
|
{% endif %}
|
||||||
|
Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
|
||||||
|
{% if articles_page.has_next() %}
|
||||||
|
<a href="{{ SITEURL }}/{{ articles_next_page.url }}">»</a>
|
||||||
|
<a href="{{ SITEURL }}/{{ last_page.url }}">⇉</a>
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
14
themes/simple/templates/period_archives.html
Normal file
14
themes/simple/templates/period_archives.html
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - {{ period | reverse | join(' ') }} archives{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Archives for {{ period | reverse | join(' ') }}</h1>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
{% for article in dates %}
|
||||||
|
<dt>{{ article.locale_date }}</dt>
|
||||||
|
<dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
|
||||||
|
{% endfor %}
|
||||||
|
</dl>
|
||||||
|
{% endblock %}
|
||||||
7
themes/simple/templates/tag.html
Normal file
7
themes/simple/templates/tag.html
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{% extends "index.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - {{ tag }} tag{% endblock %}
|
||||||
|
|
||||||
|
{% block content_title %}
|
||||||
|
<h2>Articles tagged with {{ tag }}</h2>
|
||||||
|
{% endblock %}
|
||||||
12
themes/simple/templates/tags.html
Normal file
12
themes/simple/templates/tags.html
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}{{ SITENAME }} - Tags{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Tags for {{ SITENAME }}</h1>
|
||||||
|
<ul>
|
||||||
|
{% for tag, articles in tags|sort %}
|
||||||
|
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
16
themes/simple/templates/translations.html
Normal file
16
themes/simple/templates/translations.html
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{% macro translations_for(article) %}
|
||||||
|
{% if article.translations %}
|
||||||
|
Translations:
|
||||||
|
{% for translation in article.translations %}
|
||||||
|
<a href="{{ SITEURL }}/{{ translation.url }}" hreflang="{{ translation.lang }}">{{ translation.lang }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% macro entry_hreflang(entry) %}
|
||||||
|
{% if entry.translations %}
|
||||||
|
{% for translation in entry.translations %}
|
||||||
|
<link rel="alternate" hreflang="{{ translation.lang }}" href="{{ SITEURL }}/{{ translation.url }}">
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
||||||
Loading…
Reference in a new issue