A new Riff-radio.org site with a static approach.

conf.py 56KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440
  1. # -*- coding: utf-8 -*-
  2. import time
  3. # !! This is the configuration of Nikola. !! #
  4. # !! You should edit it to your liking. !! #
  5. # ! Some settings can be different in different languages.
  6. # ! A comment stating (translatable) is used to denote those.
  7. # ! There are two ways to specify a translatable setting:
  8. # ! (a) BLOG_TITLE = "My Blog"
  9. # ! (b) BLOG_TITLE = {"en": "My Blog", "es": "Mi Blog"}
  10. # ! Option (a) is used when you don't want that setting translated.
  11. # ! Option (b) is used for settings that are different in different languages.
  12. # Data about this site
  13. BLOG_AUTHOR = "Riff" # (translatable)
  14. BLOG_TITLE = "Riff" # (translatable)
  15. # This is the main URL for your site. It will be used
  16. # in a prominent link. Don't forget the protocol (http/https)!
  17. SITE_URL = "http://media.pagelibre.org/riff/site/"
  18. # This is the URL where Nikola's output will be deployed.
  19. # If not set, defaults to SITE_URL
  20. # BASE_URL = "http://media.pagelibre.org/riff/site/"
  21. BLOG_EMAIL = "contact@riff-radio.org"
  22. BLOG_DESCRIPTION = "Riff la radio rock" # (translatable)
  23. # Nikola is multilingual!
  24. #
  25. # Currently supported languages are:
  26. #
  27. # en English
  28. # af Afrikaans
  29. # ar Arabic
  30. # az Azerbaijani
  31. # bg Bulgarian
  32. # bs Bosnian
  33. # ca Catalan
  34. # cs Czech [ALTERNATIVELY cz]
  35. # da Danish
  36. # de German
  37. # el Greek [NOT gr]
  38. # eo Esperanto
  39. # es Spanish
  40. # et Estonian
  41. # eu Basque
  42. # fa Persian
  43. # fi Finnish
  44. # fr French
  45. # fur Friulian
  46. # gl Galician
  47. # he Hebrew
  48. # hi Hindi
  49. # hr Croatian
  50. # hu Hungarian
  51. # ia Interlingua
  52. # id Indonesian
  53. # it Italian
  54. # ja Japanese [NOT jp]
  55. # ko Korean
  56. # lt Lithuanian
  57. # mi Maori
  58. # ml Malayalam
  59. # mr Marathi
  60. # nb Norwegian (Bokmål)
  61. # nl Dutch
  62. # oc Occitan
  63. # pa Punjabi
  64. # pl Polish
  65. # pt Portuguese
  66. # pt_br Portuguese (Brazil)
  67. # ru Russian
  68. # sk Slovak
  69. # sl Slovene
  70. # sq Albanian
  71. # sr Serbian (Cyrillic)
  72. # sr_latin Serbian (Latin)
  73. # sv Swedish
  74. # te Telugu
  75. # th Thai
  76. # tr Turkish [NOT tr_TR]
  77. # uk Ukrainian
  78. # ur Urdu
  79. # vi Vietnamese
  80. # zh_cn Chinese (Simplified)
  81. # zh_tw Chinese (Traditional)
  82. #
  83. # If you want to use Nikola with a non-supported language you have to provide
  84. # a module containing the necessary translations
  85. # (cf. the modules at nikola/data/themes/base/messages/).
  86. # If a specific post is not translated to a language, then the version
  87. # in the default language will be shown instead.
  88. # What is the default language?
  89. DEFAULT_LANG = "en"
  90. # What other languages do you have?
  91. # The format is {"translationcode" : "path/to/translation" }
  92. # the path will be used as a prefix for the generated pages location
  93. TRANSLATIONS = {
  94. DEFAULT_LANG: "",
  95. # Example for another language:
  96. # "es": "./es",
  97. }
  98. # What will translated input files be named like?
  99. # If you have a page something.rst, then something.pl.rst will be considered
  100. # its Polish translation.
  101. # (in the above example: path == "something", ext == "rst", lang == "pl")
  102. # this pattern is also used for metadata:
  103. # something.meta -> something.pl.meta
  104. TRANSLATIONS_PATTERN = '{path}.{lang}.{ext}'
  105. # Links for the sidebar / navigation bar. (translatable)
  106. # This is a dict. The keys are languages, and values are tuples.
  107. #
  108. # For regular links:
  109. # ('https://getnikola.com/', 'Nikola Homepage')
  110. #
  111. # For submenus:
  112. # (
  113. # (
  114. # ('https://apple.com/', 'Apple'),
  115. # ('https://orange.com/', 'Orange'),
  116. # ),
  117. # 'Fruits'
  118. # )
  119. #
  120. # WARNING: Support for submenus is theme-dependent.
  121. # Only one level of submenus is supported.
  122. # WARNING: Some themes, including the default Bootstrap 4 theme,
  123. # may present issues if the menu is too large.
  124. # (in Bootstrap, the navbar can grow too large and cover contents.)
  125. # WARNING: If you link to directories, make sure to follow
  126. # ``STRIP_INDEXES``. If it’s set to ``True``, end your links
  127. # with a ``/``, otherwise end them with ``/index.html`` — or
  128. # else they won’t be highlighted when active.
  129. # Alternative navigation links. Works the same way NAVIGATION_LINKS does,
  130. # although themes may not always support them. (translatable)
  131. # (Bootstrap 4: right-side of navbar, Bootblog 4: right side of title)
  132. NAVIGATION_ALT_LINKS = {
  133. DEFAULT_LANG: ()
  134. }
  135. # Name of the theme to use.
  136. THEME="bootblog"
  137. # A theme color. In default themes, it might be displayed by some browsers as
  138. # the browser UI color (eg. Chrome on Android). Other themes might also use it
  139. # as an accent color (the default ones don’t). Must be a HEX value.
  140. THEME_COLOR = '#5670d4'
  141. # Theme configuration. Fully theme-dependent. (translatable)
  142. # Samples for bootblog4 (enabled) and bootstrap4 (commented) follow.
  143. # bootblog4 supports: featured_large featured_small featured_on_mobile
  144. # featured_large_image_on_mobile featured_strip_html sidebar
  145. # bootstrap4 supports: navbar_light (defaults to False)
  146. # navbar_custom_bg (defaults to '')
  147. # Config for bootblog4:
  148. THEME_CONFIG = {
  149. DEFAULT_LANG: {
  150. # Show the latest featured post in a large box, with the previewimage as its background.
  151. 'featured_large': False,
  152. # Show the first (remaining) two featured posts in small boxes.
  153. 'featured_small': False,
  154. # Show featured posts on mobile.
  155. 'featured_on_mobile': True,
  156. # Show image in `featured_large` on mobile.
  157. # `featured_small` displays them only on desktop.
  158. 'featured_large_image_on_mobile': True,
  159. # Strip HTML from featured post text.
  160. 'featured_strip_html': False,
  161. # Contents of the sidebar, If empty, the sidebar is not displayed.
  162. 'sidebar': ''
  163. }
  164. }
  165. # Config for bootstrap4:
  166. # THEME_CONFIG = {
  167. # DEFAULT_LANG: {
  168. # # Use a light navbar with dark text. Defaults to False.
  169. # 'navbar_light': False,
  170. # # Use a custom navbar color. If unset, 'navbar_light' sets text +
  171. # # background color. If set, navbar_light controls only background
  172. # # color. Supported values: bg-dark, bg-light, bg-primary, bg-secondary,
  173. # # bg-success, bg-danger, bg-warning, bg-info, bg-white, bg-transparent.
  174. # 'navbar_custom_bg': '',
  175. # }
  176. # }
  177. # POSTS and PAGES contains (wildcard, destination, template) tuples.
  178. # (translatable)
  179. #
  180. # The wildcard is used to generate a list of source files
  181. # (whatever/thing.rst, for example).
  182. #
  183. # That fragment could have an associated metadata file (whatever/thing.meta),
  184. # and optionally translated files (example for Spanish, with code "es"):
  185. # whatever/thing.es.rst and whatever/thing.es.meta
  186. #
  187. # This assumes you use the default TRANSLATIONS_PATTERN.
  188. #
  189. # From those files, a set of HTML fragment files will be generated:
  190. # cache/whatever/thing.html (and maybe cache/whatever/thing.html.es)
  191. #
  192. # These files are combined with the template to produce rendered
  193. # pages, which will be placed at
  194. # output/TRANSLATIONS[lang]/destination/pagename.html
  195. #
  196. # where "pagename" is the "slug" specified in the metadata file.
  197. # The page might also be placed in /destination/pagename/index.html
  198. # if PRETTY_URLS are enabled.
  199. #
  200. # The difference between POSTS and PAGES is that POSTS are added
  201. # to feeds, indexes, tag lists and archives and are considered part
  202. # of a blog, while PAGES are just independent HTML pages.
  203. #
  204. # Finally, note that destination can be translated, i.e. you can
  205. # specify a different translation folder per language. Example:
  206. # PAGES = (
  207. # ("pages/*.rst", {"en": "pages", "de": "seiten"}, "page.tmpl"),
  208. # ("pages/*.md", {"en": "pages", "de": "seiten"}, "page.tmpl"),
  209. # )
  210. POSTS = (
  211. ("posts/*.rst", "posts", "post.tmpl"),
  212. ("posts/*.md", "posts", "post.tmpl"),
  213. ("posts/*.txt", "posts", "post.tmpl"),
  214. ("posts/*.html", "posts", "post.tmpl"),
  215. )
  216. PAGES = (
  217. ("pages/*.rst", "pages", "page.tmpl"),
  218. ("pages/*.md", "pages", "page.tmpl"),
  219. ("pages/*.txt", "pages", "page.tmpl"),
  220. ("pages/*.html", "pages", "page.tmpl"),
  221. )
  222. # Below this point, everything is optional
  223. # Post's dates are considered in UTC by default, if you want to use
  224. # another time zone, please set TIMEZONE to match. Check the available
  225. # list from Wikipedia:
  226. # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
  227. # (e.g. 'Europe/Zurich')
  228. # Also, if you want to use a different time zone in some of your posts,
  229. # you can use the ISO 8601/RFC 3339 format (ex. 2012-03-30T23:00:00+02:00)
  230. TIMEZONE = "Europe/Paris"
  231. # If you want to use ISO 8601 (also valid RFC 3339) throughout Nikola
  232. # (especially in new_post), set this to True.
  233. # Note that this does not affect DATE_FORMAT.
  234. # FORCE_ISO8601 = False
  235. # Date format used to display post dates. (translatable)
  236. # Used by babel.dates, CLDR style: http://cldr.unicode.org/translation/date-time-1/date-time
  237. # You can also use 'full', 'long', 'medium', or 'short'
  238. # DATE_FORMAT = 'yyyy-MM-dd HH:mm'
  239. # Date format used to display post dates, if local dates are used. (translatable)
  240. # Used by Luxon: https://moment.github.io/luxon/docs/manual/formatting
  241. # Example for presets: {'preset': True, 'format': 'DATE_FULL'}
  242. # LUXON_DATE_FORMAT = {
  243. # DEFAULT_LANG: {'preset': False, 'format': 'yyyy-MM-dd HH:mm'},
  244. # }
  245. # Date fanciness.
  246. #
  247. # 0 = using DATE_FORMAT and TIMEZONE (without JS)
  248. # 1 = using LUXON_DATE_FORMAT and local user time (JS, using Luxon)
  249. # 2 = using a string like “2 days ago” (JS, using Luxon)
  250. #
  251. # Your theme must support it, Bootstrap already does.
  252. # DATE_FANCINESS = 0
  253. # Customize the locale/region used for a language.
  254. # For example, to use British instead of US English: LOCALES = {'en': 'en_GB'}
  255. # LOCALES = {}
  256. # One or more folders containing files to be copied as-is into the output.
  257. # The format is a dictionary of {source: relative destination}.
  258. # Default is:
  259. # FILES_FOLDERS = {'files': ''}
  260. # Which means copy 'files' into 'output'
  261. # One or more folders containing code listings to be processed and published on
  262. # the site. The format is a dictionary of {source: relative destination}.
  263. # Default is:
  264. # LISTINGS_FOLDERS = {'listings': 'listings'}
  265. # Which means process listings from 'listings' into 'output/listings'
  266. # A mapping of languages to file-extensions that represent that language.
  267. # Feel free to add or delete extensions to any list, but don't add any new
  268. # compilers unless you write the interface for it yourself.
  269. #
  270. # The default compiler for `new_post` is the first entry in the POSTS tuple.
  271. #
  272. # 'rest' is reStructuredText
  273. # 'markdown' is Markdown
  274. # 'html' assumes the file is HTML and just copies it
  275. COMPILERS = {
  276. "rest": ['.rst', '.txt'],
  277. "markdown": ['.md', '.mdown', '.markdown'],
  278. "textile": ['.textile'],
  279. "txt2tags": ['.t2t'],
  280. "bbcode": ['.bb'],
  281. "wiki": ['.wiki'],
  282. "ipynb": ['.ipynb'],
  283. "html": ['.html', '.htm'],
  284. # PHP files are rendered the usual way (i.e. with the full templates).
  285. # The resulting files have .php extensions, making it possible to run
  286. # them without reconfiguring your server to recognize them.
  287. "php": ['.php'],
  288. # Pandoc detects the input from the source filename
  289. # but is disabled by default as it would conflict
  290. # with many of the others.
  291. # "pandoc": ['.rst', '.md', '.txt'],
  292. }
  293. # Enable reST directives that insert the contents of external files such
  294. # as "include" and "raw." This maps directly to the docutils file_insertion_enabled
  295. # config. See: https://docutils.sourceforge.io/docs/user/config.html#file-insertion-enabled
  296. # REST_FILE_INSERTION_ENABLED = True
  297. # Create by default posts in one file format?
  298. # Set to False for two-file posts, with separate metadata.
  299. # ONE_FILE_POSTS = True
  300. # Preferred metadata format for new posts
  301. # "Nikola": reST comments, wrapped in a HTML comment if needed (default)
  302. # "YAML": YAML wrapped in "---"
  303. # "TOML": TOML wrapped in "+++"
  304. # "Pelican": Native markdown metadata or reST docinfo fields. Nikola style for other formats.
  305. # METADATA_FORMAT = "Nikola"
  306. # Use date-based path when creating posts?
  307. # Can be enabled on a per-post basis with `nikola new_post -d`.
  308. # The setting is ignored when creating pages.
  309. # NEW_POST_DATE_PATH = False
  310. # What format to use when creating posts with date paths?
  311. # Default is '%Y/%m/%d', other possibilities include '%Y' or '%Y/%m'.
  312. # NEW_POST_DATE_PATH_FORMAT = '%Y/%m/%d'
  313. # If this is set to True, the DEFAULT_LANG version will be displayed for
  314. # untranslated posts.
  315. # If this is set to False, then posts that are not translated to a language
  316. # LANG will not be visible at all in the pages in that language.
  317. # SHOW_UNTRANSLATED_POSTS = True
  318. # Nikola supports logo display. If you have one, you can put the URL here.
  319. # Final output is <img src="LOGO_URL" id="logo" alt="BLOG_TITLE">.
  320. # The URL may be relative to the site root.
  321. # LOGO_URL = ''
  322. # When linking posts to social media, Nikola provides Open Graph metadata
  323. # which is used to show a nice preview. This includes an image preview
  324. # taken from the post's previewimage metadata field.
  325. # This option lets you use an image to be used if the post doesn't have it.
  326. # The default is None, valid values are URLs or output paths like
  327. # "/images/foo.jpg"
  328. # DEFAULT_PREVIEW_IMAGE = None
  329. # If you want to hide the title of your website (for example, if your logo
  330. # already contains the text), set this to False.
  331. # Note: if your logo is a SVG image, and you set SHOW_BLOG_TITLE = False,
  332. # you should explicitly set a height for #logo in CSS.
  333. # SHOW_BLOG_TITLE = True
  334. # Paths for different autogenerated bits. These are combined with the
  335. # translation paths.
  336. # Final locations are:
  337. # output / TRANSLATION[lang] / TAG_PATH / index.html (list of tags)
  338. # output / TRANSLATION[lang] / TAG_PATH / tag.html (list of posts for a tag)
  339. # output / TRANSLATION[lang] / TAG_PATH / tag RSS_EXTENSION (RSS feed for a tag)
  340. # (translatable)
  341. # TAG_PATH = "categories"
  342. # By default, the list of tags is stored in
  343. # output / TRANSLATION[lang] / TAG_PATH / index.html
  344. # (see explanation for TAG_PATH). This location can be changed to
  345. # output / TRANSLATION[lang] / TAGS_INDEX_PATH
  346. # with an arbitrary relative path TAGS_INDEX_PATH.
  347. # (translatable)
  348. # TAGS_INDEX_PATH = "tags.html"
  349. # If TAG_PAGES_ARE_INDEXES is set to True, each tag's page will contain
  350. # the posts themselves. If set to False, it will be just a list of links.
  351. # TAG_PAGES_ARE_INDEXES = False
  352. # Set descriptions for tag pages to make them more interesting. The
  353. # default is no description. The value is used in the meta description
  354. # and displayed underneath the tag list or index page’s title.
  355. # (translatable)
  356. # TAG_DESCRIPTIONS = {
  357. # DEFAULT_LANG: {
  358. # "blogging": "Meta-blog posts about blogging.",
  359. # "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects."
  360. # },
  361. # }
  362. # Set special titles for tag pages. The default is "Posts about TAG".
  363. # (translatable)
  364. # TAG_TITLES = {
  365. # DEFAULT_LANG: {
  366. # "blogging": "Meta-posts about blogging",
  367. # "open source": "Posts about open source software"
  368. # },
  369. # }
  370. # If you do not want to display a tag publicly, you can mark it as hidden.
  371. # The tag will not be displayed on the tag list page and posts.
  372. # Tag pages will still be generated.
  373. HIDDEN_TAGS = ['mathjax']
  374. # Only include tags on the tag list/overview page if there are at least
  375. # TAGLIST_MINIMUM_POSTS number of posts or more with every tag. Every tag
  376. # page is still generated, linked from posts, and included in the sitemap.
  377. # However, more obscure tags can be hidden from the tag index page.
  378. # TAGLIST_MINIMUM_POSTS = 1
  379. # A list of dictionaries specifying tags which translate to each other.
  380. # Format: a list of dicts {language: translation, language2: translation2, …}
  381. # For example:
  382. # [
  383. # {'en': 'private', 'de': 'Privat'},
  384. # {'en': 'work', 'fr': 'travail', 'de': 'Arbeit'},
  385. # ]
  386. # TAG_TRANSLATIONS = []
  387. # If set to True, a tag in a language will be treated as a translation
  388. # of the literally same tag in all other languages. Enable this if you
  389. # do not translate tags, for example.
  390. # TAG_TRANSLATIONS_ADD_DEFAULTS = True
  391. # Final locations are:
  392. # output / TRANSLATION[lang] / CATEGORY_PATH / index.html (list of categories)
  393. # output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category.html (list of posts for a category)
  394. # output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category RSS_EXTENSION (RSS feed for a category)
  395. # (translatable)
  396. # CATEGORY_PATH = "categories"
  397. # CATEGORY_PREFIX = "cat_"
  398. # By default, the list of categories is stored in
  399. # output / TRANSLATION[lang] / CATEGORY_PATH / index.html
  400. # (see explanation for CATEGORY_PATH). This location can be changed to
  401. # output / TRANSLATION[lang] / CATEGORIES_INDEX_PATH
  402. # with an arbitrary relative path CATEGORIES_INDEX_PATH.
  403. # (translatable)
  404. # CATEGORIES_INDEX_PATH = "categories.html"
  405. # If CATEGORY_ALLOW_HIERARCHIES is set to True, categories can be organized in
  406. # hierarchies. For a post, the whole path in the hierarchy must be specified,
  407. # using a forward slash ('/') to separate paths. Use a backslash ('\') to escape
  408. # a forward slash or a backslash (i.e. '\//\\' is a path specifying the
  409. # subcategory called '\' of the top-level category called '/').
  410. CATEGORY_ALLOW_HIERARCHIES = False
  411. # If CATEGORY_OUTPUT_FLAT_HIERARCHY is set to True, the output written to output
  412. # contains only the name of the leaf category and not the whole path.
  413. CATEGORY_OUTPUT_FLAT_HIERARCHY = False
  414. # If CATEGORY_PAGES_ARE_INDEXES is set to True, each category's page will contain
  415. # the posts themselves. If set to False, it will be just a list of links.
  416. # CATEGORY_PAGES_ARE_INDEXES = False
  417. # Set descriptions for category pages to make them more interesting. The
  418. # default is no description. The value is used in the meta description
  419. # and displayed underneath the category list or index page’s title.
  420. # (translatable)
  421. # CATEGORY_DESCRIPTIONS = {
  422. # DEFAULT_LANG: {
  423. # "blogging": "Meta-blog posts about blogging.",
  424. # "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects."
  425. # },
  426. # }
  427. # Set special titles for category pages. The default is "Posts about CATEGORY".
  428. # (translatable)
  429. # CATEGORY_TITLES = {
  430. # DEFAULT_LANG: {
  431. # "blogging": "Meta-posts about blogging",
  432. # "open source": "Posts about open source software"
  433. # },
  434. # }
  435. # If you do not want to display a category publicly, you can mark it as hidden.
  436. # The category will not be displayed on the category list page.
  437. # Category pages will still be generated.
  438. HIDDEN_CATEGORIES = []
  439. # A list of dictionaries specifying categories which translate to each other.
  440. # Format: a list of dicts {language: translation, language2: translation2, …}
  441. # See TAG_TRANSLATIONS example above.
  442. # CATEGORY_TRANSLATIONS = []
  443. # If set to True, a category in a language will be treated as a translation
  444. # of the literally same category in all other languages. Enable this if you
  445. # do not translate categories, for example.
  446. # CATEGORY_TRANSLATIONS_ADD_DEFAULTS = True
  447. # If no category is specified in a post, the destination path of the post
  448. # can be used in its place. This replaces the sections feature. Using
  449. # category hierarchies is recommended.
  450. # CATEGORY_DESTPATH_AS_DEFAULT = False
  451. # If True, the prefix will be trimmed from the category name, eg. if the
  452. # POSTS destination is "foo/bar", and the path is "foo/bar/baz/quux",
  453. # the category will be "baz/quux" (or "baz" if only the first directory is considered).
  454. # Note that prefixes coming from translations are always ignored.
  455. # CATEGORY_DESTPATH_TRIM_PREFIX = False
  456. # If True, only the first directory of a path will be used.
  457. # CATEGORY_DESTPATH_FIRST_DIRECTORY_ONLY = True
  458. # Map paths to prettier category names. (translatable)
  459. # CATEGORY_DESTPATH_NAMES = {
  460. # DEFAULT_LANG: {
  461. # 'webdev': 'Web Development',
  462. # 'webdev/django': 'Web Development/Django',
  463. # 'random': 'Odds and Ends',
  464. # },
  465. # }
  466. # By default, category indexes will appear in CATEGORY_PATH and use
  467. # CATEGORY_PREFIX. If this is enabled, those settings will be ignored (except
  468. # for the index) and instead, they will follow destination paths (eg. category
  469. # 'foo' might appear in 'posts/foo'). If the category does not come from a
  470. # destpath, first entry in POSTS followed by the category name will be used.
  471. # For this setting, category hierarchies are required and cannot be flattened.
  472. # CATEGORY_PAGES_FOLLOW_DESTPATH = False
  473. # If ENABLE_AUTHOR_PAGES is set to True and there is more than one
  474. # author, author pages are generated.
  475. # ENABLE_AUTHOR_PAGES = True
  476. # Path to author pages. Final locations are:
  477. # output / TRANSLATION[lang] / AUTHOR_PATH / index.html (list of authors)
  478. # output / TRANSLATION[lang] / AUTHOR_PATH / author.html (list of posts by an author)
  479. # output / TRANSLATION[lang] / AUTHOR_PATH / author RSS_EXTENSION (RSS feed for an author)
  480. # (translatable)
  481. # AUTHOR_PATH = "authors"
  482. # If AUTHOR_PAGES_ARE_INDEXES is set to True, each author's page will contain
  483. # the posts themselves. If set to False, it will be just a list of links.
  484. # AUTHOR_PAGES_ARE_INDEXES = False
  485. # Set descriptions for author pages to make them more interesting. The
  486. # default is no description. The value is used in the meta description
  487. # and displayed underneath the author list or index page’s title.
  488. # AUTHOR_PAGES_DESCRIPTIONS = {
  489. # DEFAULT_LANG: {
  490. # "Juanjo Conti": "Python coder and writer.",
  491. # "Roberto Alsina": "Nikola father."
  492. # },
  493. # }
  494. # If you do not want to display an author publicly, you can mark it as hidden.
  495. # The author will not be displayed on the author list page.
  496. # Author pages and links to them will still be generated.
  497. HIDDEN_AUTHORS = ['Guest']
  498. # Allow multiple, comma-separated authors for a post? (Requires theme support, present in built-in themes)
  499. # MULTIPLE_AUTHORS_PER_POST = False
  500. # Final location for the main blog page and sibling paginated pages is
  501. # output / TRANSLATION[lang] / INDEX_PATH / index-*.html
  502. # (translatable)
  503. # INDEX_PATH = ""
  504. # Optional HTML that displayed on “main” blog index.html files.
  505. # May be used for a greeting. (translatable)
  506. FRONT_INDEX_HEADER = {
  507. DEFAULT_LANG: ''
  508. }
  509. # Create per-month archives instead of per-year
  510. # CREATE_MONTHLY_ARCHIVE = False
  511. # Create one large archive instead of per-year
  512. # CREATE_SINGLE_ARCHIVE = False
  513. # Create year, month, and day archives each with a (long) list of posts
  514. # (overrides both CREATE_MONTHLY_ARCHIVE and CREATE_SINGLE_ARCHIVE)
  515. # CREATE_FULL_ARCHIVES = False
  516. # If monthly archives or full archives are created, adds also one archive per day
  517. # CREATE_DAILY_ARCHIVE = False
  518. # Create previous, up, next navigation links for archives
  519. # CREATE_ARCHIVE_NAVIGATION = False
  520. # Final locations for the archives are:
  521. # output / TRANSLATION[lang] / ARCHIVE_PATH / ARCHIVE_FILENAME
  522. # output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / index.html
  523. # output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / index.html
  524. # output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / DAY / index.html
  525. # (translatable)
  526. # ARCHIVE_PATH = ""
  527. # ARCHIVE_FILENAME = "archive.html"
  528. # If ARCHIVES_ARE_INDEXES is set to True, each archive page which contains a list
  529. # of posts will contain the posts themselves. If set to False, it will be just a
  530. # list of links.
  531. # ARCHIVES_ARE_INDEXES = False
  532. # URLs to other posts/pages can take 3 forms:
  533. # rel_path: a relative URL to the current page/post (default)
  534. # full_path: a URL with the full path from the root
  535. # absolute: a complete URL (that includes the SITE_URL)
  536. # URL_TYPE = 'rel_path'
  537. # Extension for RSS feed files
  538. # RSS_EXTENSION = ".xml"
  539. # RSS filename base (without extension); used for indexes and galleries.
  540. # (translatable)
  541. # RSS_FILENAME_BASE = "rss"
  542. # Final location for the blog main RSS feed is:
  543. # output / TRANSLATION[lang] / RSS_PATH / RSS_FILENAME_BASE RSS_EXTENSION
  544. # (translatable)
  545. # RSS_PATH = ""
  546. # Final location for the blog main Atom feed is:
  547. # output / TRANSLATION[lang] / ATOM_PATH / ATOM_FILENAME_BASE ATOM_EXTENSION
  548. # (translatable)
  549. # ATOM_PATH = ""
  550. # Atom filename base (without extension); used for indexes.
  551. # (translatable)
  552. ATOM_FILENAME_BASE = "feed"
  553. # Extension for Atom feed files
  554. # ATOM_EXTENSION = ".atom"
  555. # Slug the Tag URL. Easier for users to type, special characters are
  556. # often removed or replaced as well.
  557. # SLUG_TAG_PATH = True
  558. # Slug the Author URL. Easier for users to type, special characters are
  559. # often removed or replaced as well.
  560. # SLUG_AUTHOR_PATH = True
  561. # A list of redirection tuples, [("foo/from.html", "/bar/to.html")].
  562. #
  563. # A HTML file will be created in output/foo/from.html that redirects
  564. # to the "/bar/to.html" URL. notice that the "from" side MUST be a
  565. # relative URL.
  566. #
  567. # If you don't need any of these, just set to []
  568. REDIRECTIONS = []
  569. # Presets of commands to execute to deploy. Can be anything, for
  570. # example, you may use rsync:
  571. # "rsync -rav --delete --delete-after output/ joe@my.site:/srv/www/site"
  572. # And then do a backup, or run `nikola ping` from the `ping`
  573. # plugin (`nikola plugin -i ping`). Or run `nikola check -l`.
  574. # You may also want to use github_deploy (see below).
  575. # You can define multiple presets and specify them as arguments
  576. # to `nikola deploy`. If no arguments are specified, a preset
  577. # named `default` will be executed. You can use as many presets
  578. # in a `nikola deploy` command as you like.
  579. # DEPLOY_COMMANDS = {
  580. # 'default': [
  581. # "rsync -rav --delete --delete-after output/ joe@my.site:/srv/www/site",
  582. # ]
  583. # }
  584. # github_deploy configuration
  585. # For more details, read the manual:
  586. # https://getnikola.com/handbook.html#deploying-to-github
  587. # You will need to configure the deployment branch on GitHub.
  588. GITHUB_SOURCE_BRANCH = 'src'
  589. GITHUB_DEPLOY_BRANCH = 'master'
  590. # The name of the remote where you wish to push to, using github_deploy.
  591. GITHUB_REMOTE_NAME = 'origin'
  592. # Whether or not github_deploy should commit to the source branch automatically
  593. # before deploying.
  594. GITHUB_COMMIT_SOURCE = True
  595. # Where the output site should be located
  596. # If you don't use an absolute path, it will be considered as relative
  597. # to the location of conf.py
  598. # OUTPUT_FOLDER = 'output'
  599. # where the "cache" of partial generated content should be located
  600. # default: 'cache'
  601. # CACHE_FOLDER = 'cache'
  602. # Filters to apply to the output.
  603. # A directory where the keys are either: a file extensions, or
  604. # a tuple of file extensions.
  605. #
  606. # And the value is a list of commands to be applied in order.
  607. #
  608. # Each command must be either:
  609. #
  610. # A string containing a '%s' which will
  611. # be replaced with a filename. The command *must* produce output
  612. # in place.
  613. #
  614. # Or:
  615. #
  616. # A python callable, which will be called with the filename as
  617. # argument.
  618. #
  619. # By default, only .php files uses filters to inject PHP into
  620. # Nikola’s templates. All other filters must be enabled through FILTERS.
  621. #
  622. # Many filters are shipped with Nikola. A list is available in the manual:
  623. # <https://getnikola.com/handbook.html#post-processing-filters>
  624. #
  625. # from nikola import filters
  626. # FILTERS = {
  627. # ".html": [filters.typogrify],
  628. # ".js": [filters.closure_compiler],
  629. # ".jpg": ["jpegoptim --strip-all -m75 -v %s"],
  630. # }
  631. # Executable for the "yui_compressor" filter (defaults to 'yui-compressor').
  632. # YUI_COMPRESSOR_EXECUTABLE = 'yui-compressor'
  633. # Executable for the "closure_compiler" filter (defaults to 'closure-compiler').
  634. # CLOSURE_COMPILER_EXECUTABLE = 'closure-compiler'
  635. # Executable for the "optipng" filter (defaults to 'optipng').
  636. # OPTIPNG_EXECUTABLE = 'optipng'
  637. # Executable for the "jpegoptim" filter (defaults to 'jpegoptim').
  638. # JPEGOPTIM_EXECUTABLE = 'jpegoptim'
  639. # Executable for the "html_tidy_withconfig", "html_tidy_nowrap",
  640. # "html_tidy_wrap", "html_tidy_wrap_attr" and "html_tidy_mini" filters
  641. # (defaults to 'tidy5').
  642. # HTML_TIDY_EXECUTABLE = 'tidy5'
  643. # List of XPath expressions which should be used for finding headers
  644. # ({hx} is replaced by headers h1 through h6).
  645. # You must change this if you use a custom theme that does not use
  646. # "e-content entry-content" as a class for post and page contents.
  647. # HEADER_PERMALINKS_XPATH_LIST = ['*//div[@class="e-content entry-content"]//{hx}']
  648. # Include *every* header (not recommended):
  649. # HEADER_PERMALINKS_XPATH_LIST = ['*//{hx}']
  650. # File blacklist for header permalinks. Contains output path
  651. # (eg. 'output/index.html')
  652. # HEADER_PERMALINKS_FILE_BLACKLIST = []
  653. # Expert setting! Create a gzipped copy of each generated file. Cheap server-
  654. # side optimization for very high traffic sites or low memory servers.
  655. # GZIP_FILES = False
  656. # File extensions that will be compressed
  657. # GZIP_EXTENSIONS = ('.txt', '.htm', '.html', '.css', '.js', '.json', '.atom', '.xml')
  658. # Use an external gzip command? None means no.
  659. # Example: GZIP_COMMAND = "pigz -k {filename}"
  660. # GZIP_COMMAND = None
  661. # Make sure the server does not return a "Accept-Ranges: bytes" header for
  662. # files compressed by this option! OR make sure that a ranged request does not
  663. # return partial content of another representation for these resources. Do not
  664. # use this feature if you do not understand what this means.
  665. # #############################################################################
  666. # Image Gallery Options
  667. # #############################################################################
  668. # One or more folders containing galleries. The format is a dictionary of
  669. # {"source": "relative_destination"}, where galleries are looked for in
  670. # "source/" and the results will be located in
  671. # "OUTPUT_PATH/relative_destination/gallery_name"
  672. # Default is:
  673. # GALLERY_FOLDERS = {"galleries": "galleries"}
  674. # More gallery options:
  675. # THUMBNAIL_SIZE = 180
  676. # MAX_IMAGE_SIZE = 1280
  677. # USE_FILENAME_AS_TITLE = True
  678. # EXTRA_IMAGE_EXTENSIONS = []
  679. # Use a thumbnail (defined by ".. previewimage:" in the gallery's index) in
  680. # list of galleries for each gallery
  681. GALLERIES_USE_THUMBNAIL = False
  682. # Image to use as thumbnail for those galleries that don't have one
  683. # None: show a grey square
  684. # '/url/to/file': show the image in that url
  685. GALLERIES_DEFAULT_THUMBNAIL = None
  686. # If set to False, it will sort by filename instead. Defaults to True
  687. # GALLERY_SORT_BY_DATE = True
  688. # If set to True, EXIF data will be copied when an image is thumbnailed or
  689. # resized. (See also EXIF_WHITELIST)
  690. # PRESERVE_EXIF_DATA = False
  691. # If you have enabled PRESERVE_EXIF_DATA, this option lets you choose EXIF
  692. # fields you want to keep in images. (See also PRESERVE_EXIF_DATA)
  693. #
  694. # For a full list of field names, please see here:
  695. # http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf
  696. #
  697. # This is a dictionary of lists. Each key in the dictionary is the
  698. # name of a IDF, and each list item is a field you want to preserve.
  699. # If you have a IDF with only a '*' item, *EVERY* item in it will be
  700. # preserved. If you don't want to preserve anything in a IDF, remove it
  701. # from the setting. By default, no EXIF information is kept.
  702. # Setting the whitelist to anything other than {} implies
  703. # PRESERVE_EXIF_DATA is set to True
  704. # To preserve ALL EXIF data, set EXIF_WHITELIST to {"*": "*"}
  705. # EXIF_WHITELIST = {}
  706. # Some examples of EXIF_WHITELIST settings:
  707. # Basic image information:
  708. # EXIF_WHITELIST['0th'] = [
  709. # "Orientation",
  710. # "XResolution",
  711. # "YResolution",
  712. # ]
  713. # If you want to keep GPS data in the images:
  714. # EXIF_WHITELIST['GPS'] = ["*"]
  715. # Embedded thumbnail information:
  716. # EXIF_WHITELIST['1st'] = ["*"]
  717. # If set to True, any ICC profile will be copied when an image is thumbnailed or
  718. # resized.
  719. # PRESERVE_ICC_PROFILES = False
  720. # Folders containing images to be used in normal posts or pages.
  721. # IMAGE_FOLDERS is a dictionary of the form {"source": "destination"},
  722. # where "source" is the folder containing the images to be published, and
  723. # "destination" is the folder under OUTPUT_PATH containing the images copied
  724. # to the site. Thumbnail images will be created there as well.
  725. # To reference the images in your posts, include a leading slash in the path.
  726. # For example, if IMAGE_FOLDERS = {'images': 'images'}, write
  727. #
  728. # .. image:: /images/tesla.jpg
  729. #
  730. # See the Nikola Handbook for details (in the “Embedding Images” and
  731. # “Thumbnails” sections)
  732. # Images will be scaled down according to IMAGE_THUMBNAIL_SIZE and MAX_IMAGE_SIZE
  733. # options, but will have to be referenced manually to be visible on the site
  734. # (the thumbnail has ``.thumbnail`` added before the file extension by default,
  735. # but a different naming template can be configured with IMAGE_THUMBNAIL_FORMAT).
  736. # Panoramas (aspect ratio over 3:1) get 4x larger thumbnails due to scaling issues.
  737. IMAGE_FOLDERS = {'images': 'images'}
  738. # IMAGE_THUMBNAIL_SIZE = 400
  739. # IMAGE_THUMBNAIL_FORMAT = '{name}.thumbnail{ext}'
  740. # #############################################################################
  741. # HTML fragments and diverse things that are used by the templates
  742. # #############################################################################
  743. # Data about post-per-page indexes.
  744. # INDEXES_PAGES defaults to ' old posts, page %d' or ' page %d' (translated),
  745. # depending on the value of INDEXES_PAGES_MAIN.
  746. #
  747. # (translatable) If the following is empty, defaults to BLOG_TITLE:
  748. # INDEXES_TITLE = ""
  749. #
  750. # (translatable) If the following is empty, defaults to ' [old posts,] page %d' (see above):
  751. # INDEXES_PAGES = ""
  752. #
  753. # If the following is True, INDEXES_PAGES is also displayed on the main (the
  754. # newest) index page (index.html):
  755. # INDEXES_PAGES_MAIN = False
  756. #
  757. # If the following is True, index-1.html has the oldest posts, index-2.html the
  758. # second-oldest posts, etc., and index.html has the newest posts. This ensures
  759. # that all posts on index-x.html will forever stay on that page, now matter how
  760. # many new posts are added.
  761. # If False, index-1.html has the second-newest posts, index-2.html the third-newest,
  762. # and index-n.html the oldest posts. When this is active, old posts can be moved
  763. # to other index pages when new posts are added.
  764. # INDEXES_STATIC = True
  765. #
  766. # (translatable) If PRETTY_URLS is set to True, this setting will be used to create
  767. # prettier URLs for index pages, such as page/2/index.html instead of index-2.html.
  768. # Valid values for this settings are:
  769. # * False,
  770. # * a list or tuple, specifying the path to be generated,
  771. # * a dictionary mapping languages to lists or tuples.
  772. # Every list or tuple must consist of strings which are used to combine the path;
  773. # for example:
  774. # ['page', '{number}', '{index_file}']
  775. # The replacements
  776. # {number} --> (logical) page number;
  777. # {old_number} --> the page number inserted into index-n.html before (zero for
  778. # the main page);
  779. # {index_file} --> value of option INDEX_FILE
  780. # are made.
  781. # Note that in case INDEXES_PAGES_MAIN is set to True, a redirection will be created
  782. # for the full URL with the page number of the main page to the normal (shorter) main
  783. # page URL.
  784. # INDEXES_PRETTY_PAGE_URL = False
  785. #
  786. # If the following is true, a page range navigation will be inserted to indices.
  787. # Please note that this will undo the effect of INDEXES_STATIC, as all index pages
  788. # must be recreated whenever the number of pages changes.
  789. # SHOW_INDEX_PAGE_NAVIGATION = False
  790. # If the following is True, a meta name="generator" tag is added to pages. The
  791. # generator tag is used to specify the software used to generate the page
  792. # (it promotes Nikola).
  793. # META_GENERATOR_TAG = True
  794. # Color scheme to be used for code blocks. If your theme provides
  795. # "assets/css/code.css" this is ignored. Set to None to disable.
  796. # Can be any of:
  797. # algol, algol_nu, autumn, borland, bw, colorful, default, emacs, friendly,
  798. # fruity, igor, lovelace, manni, monokai, murphy, native, paraiso-dark,
  799. # paraiso-light, pastie, perldoc, rrt, tango, trac, vim, vs, xcode
  800. # This list MAY be incomplete since pygments adds styles every now and then.
  801. # Check with list(pygments.styles.get_all_styles()) in an interpreter.
  802. #
  803. # CODE_COLOR_SCHEME = 'default'
  804. # FAVICONS contains (name, file, size) tuples.
  805. # Used to create favicon link like this:
  806. # <link rel="name" href="file" sizes="size"/>
  807. FAVICONS = (
  808. ("icon", "/favicon.ico", "16x16"),
  809. # ("icon", "/icon_128x128.png", "128x128"),
  810. )
  811. # Show teasers (instead of full posts) in indexes? Defaults to False.
  812. # INDEX_TEASERS = False
  813. # HTML fragments with the Read more... links.
  814. # The following tags exist and are replaced for you:
  815. # {link} A link to the full post page.
  816. # {read_more} The string “Read more” in the current language.
  817. # {reading_time} An estimate of how long it will take to read the post.
  818. # {remaining_reading_time} An estimate of how long it will take to read the post, sans the teaser.
  819. # {min_remaining_read} The string “{remaining_reading_time} min remaining to read” in the current language.
  820. # {paragraph_count} The amount of paragraphs in the post.
  821. # {remaining_paragraph_count} The amount of paragraphs in the post, sans the teaser.
  822. # {post_title} The title of the post.
  823. # {{ A literal { (U+007B LEFT CURLY BRACKET)
  824. # }} A literal } (U+007D RIGHT CURLY BRACKET)
  825. # 'Read more...' for the index page, if INDEX_TEASERS is True (translatable)
  826. INDEX_READ_MORE_LINK = '<p class="more"><a href="{link}">{read_more}…</a></p>'
  827. # 'Read more...' for the feeds, if FEED_TEASERS is True (translatable)
  828. FEED_READ_MORE_LINK = '<p><a href="{link}">{read_more}…</a> ({min_remaining_read})</p>'
  829. # Append a URL query to the FEED_READ_MORE_LINK in Atom and RSS feeds. Advanced
  830. # option used for traffic source tracking.
  831. # Minimum example for use with Piwik: "pk_campaign=feed"
  832. # The following tags exist and are replaced for you:
  833. # {feedRelUri} A relative link to the feed.
  834. # {feedFormat} The name of the syndication format.
  835. # Example using replacement for use with Google Analytics:
  836. # "utm_source={feedRelUri}&utm_medium=nikola_feed&utm_campaign={feedFormat}_feed"
  837. FEED_LINKS_APPEND_QUERY = False
  838. # A HTML fragment describing the license, for the sidebar.
  839. # (translatable)
  840. LICENSE = ""
  841. # I recommend using the Creative Commons' wizard:
  842. # https://creativecommons.org/choose/
  843. # LICENSE = """
  844. # <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
  845. # <img alt="Creative Commons License BY-NC-SA"
  846. # style="border-width:0; margin-bottom:12px;"
  847. # src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"></a>"""
  848. # A small copyright notice for the page footer (in HTML).
  849. # (translatable)
  850. CONTENT_FOOTER = 'Contents &copy; {date} <a href="mailto:{email}">{author}</a> - Powered by <a href="https://getnikola.com" rel="nofollow">Nikola</a> {license}'
  851. # Things that will be passed to CONTENT_FOOTER.format(). This is done
  852. # for translatability, as dicts are not formattable. Nikola will
  853. # intelligently format the setting properly.
  854. # The setting takes a dict. The keys are languages. The values are
  855. # tuples of tuples of positional arguments and dicts of keyword arguments
  856. # to format(). For example, {'en': (('Hello'), {'target': 'World'})}
  857. # results in CONTENT_FOOTER['en'].format('Hello', target='World').
  858. # If you need to use the literal braces '{' and '}' in your footer text, use
  859. # '{{' and '}}' to escape them (str.format is used)
  860. # WARNING: If you do not use multiple languages with CONTENT_FOOTER, this
  861. # still needs to be a dict of this format. (it can be empty if you
  862. # do not need formatting)
  863. # (translatable)
  864. CONTENT_FOOTER_FORMATS = {
  865. DEFAULT_LANG: (
  866. (),
  867. {
  868. "email": BLOG_EMAIL,
  869. "author": BLOG_AUTHOR,
  870. "date": time.gmtime().tm_year,
  871. "license": LICENSE
  872. }
  873. )
  874. }
  875. # A simple copyright tag for inclusion in RSS feeds that works just
  876. # like CONTENT_FOOTER and CONTENT_FOOTER_FORMATS
  877. RSS_COPYRIGHT = 'Contents © {date} <a href="mailto:{email}">{author}</a> {license}'
  878. RSS_COPYRIGHT_PLAIN = 'Contents © {date} {author} {license}'
  879. RSS_COPYRIGHT_FORMATS = CONTENT_FOOTER_FORMATS
  880. # To use comments, you can choose between different third party comment
  881. # systems. The following comment systems are supported by Nikola:
  882. # disqus, facebook, intensedebate, isso, muut, commento, utterances
  883. # You can leave this option blank to disable comments.
  884. COMMENT_SYSTEM = ""
  885. # And you also need to add your COMMENT_SYSTEM_ID which
  886. # depends on what comment system you use. The default is
  887. # "nikolademo" which is a test account for Disqus. More information
  888. # is in the manual.
  889. COMMENT_SYSTEM_ID = ""
  890. # Create index.html for page folders?
  891. # WARNING: if a page would conflict with the index file (usually
  892. # caused by setting slug to `index`), the PAGE_INDEX
  893. # will not be generated for that directory.
  894. # PAGE_INDEX = False
  895. # Enable comments on pages (i.e. not posts)?
  896. # COMMENTS_IN_PAGES = False
  897. # Enable comments on picture gallery pages?
  898. # COMMENTS_IN_GALLERIES = False
  899. # What file should be used for directory indexes?
  900. # Defaults to index.html
  901. # Common other alternatives: default.html for IIS, index.php
  902. # INDEX_FILE = "index.html"
  903. # If a link ends in /index.html, drop the index.html part.
  904. # http://mysite/foo/bar/index.html => http://mysite/foo/bar/
  905. # (Uses the INDEX_FILE setting, so if that is, say, default.html,
  906. # it will instead /foo/default.html => /foo)
  907. STRIP_INDEXES = True
  908. # List of files relative to the server root (!) that will be asked to be excluded
  909. # from indexing and other robotic spidering. * is supported. Will only be effective
  910. # if SITE_URL points to server root. The list is used to exclude resources from
  911. # /robots.txt and /sitemap.xml, and to inform search engines about /sitemapindex.xml.
  912. # ROBOTS_EXCLUSIONS = ["/archive.html", "/category/*.html"]
  913. # Instead of putting files in <slug>.html, put them in <slug>/index.html.
  914. # No web server configuration is required. Also enables STRIP_INDEXES.
  915. # This can be disabled on a per-page/post basis by adding
  916. # .. pretty_url: False
  917. # to the metadata.
  918. PRETTY_URLS = False
  919. # If True, publish future dated posts right away instead of scheduling them.
  920. # Defaults to False.
  921. # FUTURE_IS_NOW = False
  922. # If True, future dated posts are allowed in deployed output
  923. # Only the individual posts are published/deployed; not in indexes/sitemap
  924. # Generally, you want FUTURE_IS_NOW and DEPLOY_FUTURE to be the same value.
  925. # DEPLOY_FUTURE = False
  926. # If False, draft posts will not be deployed
  927. # DEPLOY_DRAFTS = True
  928. # Allows scheduling of posts using the rule specified here (new_post -s)
  929. # Specify an iCal Recurrence Rule: https://www.kanzaki.com/docs/ical/rrule.html
  930. # SCHEDULE_RULE = ''
  931. # If True, use the scheduling rule to all posts (not pages!) by default
  932. # SCHEDULE_ALL = False
  933. # Do you want to add a Mathjax config file?
  934. # MATHJAX_CONFIG = ""
  935. # If you want support for the $.$ syntax (which may conflict with running
  936. # text!), just use this config:
  937. # MATHJAX_CONFIG = """
  938. # <script type="text/x-mathjax-config">
  939. # MathJax.Hub.Config({
  940. # tex2jax: {
  941. # inlineMath: [ ['$','$'], ["\\\(","\\\)"] ],
  942. # displayMath: [ ['$$','$$'], ["\\\[","\\\]"] ],
  943. # processEscapes: true
  944. # },
  945. # displayAlign: 'center', // Change this to 'left' if you want left-aligned equations.
  946. # "HTML-CSS": {
  947. # styles: {'.MathJax_Display': {"margin": 0}}
  948. # }
  949. # });
  950. # </script>
  951. # """
  952. # Want to use KaTeX instead of MathJax? While KaTeX may not support every
  953. # feature yet, it's faster and the output looks better.
  954. # USE_KATEX = False
  955. # KaTeX auto-render settings. If you want support for the $.$ syntax (which may
  956. # conflict with running text!), just use this config:
  957. # KATEX_AUTO_RENDER = """
  958. # delimiters: [
  959. # {left: "$$", right: "$$", display: true},
  960. # {left: "\\\\[", right: "\\\\]", display: true},
  961. # {left: "\\\\begin{equation*}", right: "\\\\end{equation*}", display: true},
  962. # {left: "$", right: "$", display: false},
  963. # {left: "\\\\(", right: "\\\\)", display: false}
  964. # ]
  965. # """
  966. # Do you want to customize the nbconversion of your IPython notebook?
  967. # IPYNB_CONFIG = {}
  968. # With the following example configuration you can use a custom jinja template
  969. # called `toggle.tpl` which has to be located in your site/blog main folder:
  970. # IPYNB_CONFIG = {'Exporter': {'template_file': 'toggle'}}
  971. # What Markdown extensions to enable?
  972. # You will also get gist, nikola and podcast because those are
  973. # done in the code, hope you don't mind ;-)
  974. # Note: most Nikola-specific extensions are done via the Nikola plugin system,
  975. # with the MarkdownExtension class and should not be added here.
  976. # Defaults are markdown.extensions.(fenced_code|codehilite|extra)
  977. # markdown.extensions.meta is required for Markdown metadata.
  978. MARKDOWN_EXTENSIONS = ['markdown.extensions.fenced_code', 'markdown.extensions.codehilite', 'markdown.extensions.extra']
  979. # Options to be passed to markdown extensions (See https://python-markdown.github.io/reference/)
  980. # Default is {DEFAULT_LANG: {}} (no config at all)
  981. # (translatable)
  982. # MARKDOWN_EXTENSION_CONFIGS = {DEFAULT_LANG: {}}
  983. # Extra options to pass to the pandoc command, empty by default.
  984. # It can be a list of strings or a dict (keys are file extensions).
  985. # Example for a list of strings (used for all extensions):
  986. # PANDOC_OPTIONS = ['-F', 'pandoc-citeproc', '--bibliography=/Users/foo/references.bib']
  987. # Example for a dict, where the keys are the extensions in COMPILERS['pandoc']:
  988. # COMPILERS['pandoc'] = ['.rst', '.md', '.txt']
  989. # PANDOC_OPTIONS = {
  990. # '.rst': ['-t', 'rst'],
  991. # '.md': ['-t', 'markdown'],
  992. # '.txt': ['-t', 'markdown-raw_html'],
  993. # }
  994. # Pandoc does not demote headers by default. To enable this, you can use, for example
  995. # ['--base-header-level=2']
  996. # PANDOC_OPTIONS = []
  997. # Social buttons. This is sample code for AddThis (which was the default for a
  998. # long time). Insert anything you want here, or even make it empty (which is
  999. # the default right now)
  1000. # (translatable)
  1001. # SOCIAL_BUTTONS_CODE = """
  1002. # <!-- Social buttons -->
  1003. # <div id="addthisbox" class="addthis_toolbox addthis_peekaboo_style addthis_default_style addthis_label_style addthis_32x32_style">
  1004. # <a class="addthis_button_more">Share</a>
  1005. # <ul><li><a class="addthis_button_facebook"></a>
  1006. # <li><a class="addthis_button_google_plusone_share"></a>
  1007. # <li><a class="addthis_button_linkedin"></a>
  1008. # <li><a class="addthis_button_twitter"></a>
  1009. # </ul>
  1010. # </div>
  1011. # <script src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f7088a56bb93798"></script>
  1012. # <!-- End of social buttons -->
  1013. # """
  1014. # Show link to source for the posts?
  1015. SHOW_SOURCELINK = False
  1016. # Copy the source files for your pages?
  1017. # Setting it to False implies SHOW_SOURCELINK = False
  1018. # COPY_SOURCES = True
  1019. # Modify the number of Post per Index Page
  1020. # Defaults to 10
  1021. # INDEX_DISPLAY_POST_COUNT = 10
  1022. # By default, Nikola generates RSS files for the website and for tags, and
  1023. # links to it. Set this to False to disable everything RSS-related.
  1024. # GENERATE_RSS = True
  1025. # By default, Nikola does not generates Atom files for indexes and links to
  1026. # them. Generate Atom for tags by setting TAG_PAGES_ARE_INDEXES to True.
  1027. # Atom feeds are built based on INDEX_DISPLAY_POST_COUNT and not FEED_LENGTH
  1028. # Switch between plain-text summaries and full HTML content using the
  1029. # FEED_TEASER option. FEED_LINKS_APPEND_QUERY is also respected. Atom feeds
  1030. # are generated even for old indexes and have pagination link relations
  1031. # between each other. Old Atom feeds with no changes are marked as archived.
  1032. # GENERATE_ATOM = False
  1033. # Only include teasers in Atom and RSS feeds. Disabling include the full
  1034. # content. Defaults to True.
  1035. # FEED_TEASERS = True
  1036. # Strip HTML from Atom and RSS feed summaries and content. Defaults to False.
  1037. # FEED_PLAIN = False
  1038. # Number of posts in Atom and RSS feeds.
  1039. # FEED_LENGTH = 10
  1040. # RSS_LINK is a HTML fragment to link the RSS or Atom feeds. If set to None,
  1041. # the base.tmpl will use the feed Nikola generates. However, you may want to
  1042. # change it for a FeedBurner feed or something else.
  1043. # RSS_LINK = None
  1044. # A search form to search this site, for the sidebar. You can use a Google
  1045. # custom search (https://www.google.com/cse/)
  1046. # Or a DuckDuckGo search: https://duckduckgo.com/search_box.html
  1047. # Default is no search form.
  1048. # (translatable)
  1049. # SEARCH_FORM = ""
  1050. #
  1051. # This search form works for any site and looks good in the "site" theme where
  1052. # it appears on the navigation bar:
  1053. #
  1054. # SEARCH_FORM = """
  1055. # <!-- DuckDuckGo custom search -->
  1056. # <form method="get" id="search" action="https://duckduckgo.com/"
  1057. # class="navbar-form pull-left">
  1058. # <input type="hidden" name="sites" value="%s">
  1059. # <input type="hidden" name="k8" value="#444444">
  1060. # <input type="hidden" name="k9" value="#D51920">
  1061. # <input type="hidden" name="kt" value="h">
  1062. # <input type="text" name="q" maxlength="255"
  1063. # placeholder="Search&hellip;" class="span2" style="margin-top: 4px;">
  1064. # <input type="submit" value="DuckDuckGo Search" style="visibility: hidden;">
  1065. # </form>
  1066. # <!-- End of custom search -->
  1067. # """ % SITE_URL
  1068. #
  1069. # If you prefer a Google search form, here's an example that should just work:
  1070. # SEARCH_FORM = """
  1071. # <!-- Google custom search -->
  1072. # <form method="get" action="https://www.google.com/search" class="navbar-form navbar-right" role="search">
  1073. # <div class="form-group">
  1074. # <input type="text" name="q" class="form-control" placeholder="Search">
  1075. # </div>
  1076. # <button type="submit" class="btn btn-primary">
  1077. # <span class="glyphicon glyphicon-search"></span>
  1078. # </button>
  1079. # <input type="hidden" name="sitesearch" value="%s">
  1080. # </form>
  1081. # <!-- End of custom search -->
  1082. # """ % SITE_URL
  1083. # Use content distribution networks for jQuery, twitter-bootstrap css and js,
  1084. # and html5shiv (for older versions of Internet Explorer)
  1085. # If this is True, jQuery and html5shiv are served from the Google CDN and
  1086. # Bootstrap is served from BootstrapCDN (provided by MaxCDN)
  1087. # Set this to False if you want to host your site without requiring access to
  1088. # external resources.
  1089. # USE_CDN = False
  1090. # Check for USE_CDN compatibility.
  1091. # If you are using custom themes, have configured the CSS properly and are
  1092. # receiving warnings about incompatibility but believe they are incorrect, you
  1093. # can set this to False.
  1094. # USE_CDN_WARNING = True
  1095. # Extra things you want in the pages HEAD tag. This will be added right
  1096. # before </head>
  1097. # (translatable)
  1098. # EXTRA_HEAD_DATA = ""
  1099. # Google Analytics or whatever else you use. Added to the bottom of <body>
  1100. # in the default template (base.tmpl).
  1101. # (translatable)
  1102. BODY_END = "<script type='text/javascript' src='/refresh.js'></script>"
  1103. # The possibility to extract metadata from the filename by using a
  1104. # regular expression.
  1105. # To make it work you need to name parts of your regular expression.
  1106. # The following names will be used to extract metadata:
  1107. # - title
  1108. # - slug
  1109. # - date
  1110. # - tags
  1111. # - link
  1112. # - description
  1113. #
  1114. # An example re is the following:
  1115. # '.*\/(?P<date>\d{4}-\d{2}-\d{2})-(?P<slug>.*)-(?P<title>.*)\.rst'
  1116. # (Note the '.*\/' in the beginning -- matches source paths relative to conf.py)
  1117. # FILE_METADATA_REGEXP = None
  1118. # Should titles fetched from file metadata be unslugified (made prettier?)
  1119. # FILE_METADATA_UNSLUGIFY_TITLES = True
  1120. # If enabled, extract metadata from docinfo fields in reST documents.
  1121. # If your text files start with a level 1 heading, it will be treated as the
  1122. # document title and will be removed from the text.
  1123. # USE_REST_DOCINFO_METADATA = False
  1124. # If enabled, hide docinfo fields in reST document output
  1125. # HIDE_REST_DOCINFO = False
  1126. # Map metadata from other formats to Nikola names.
  1127. # Supported formats: yaml, toml, rest_docinfo, markdown_metadata
  1128. # METADATA_MAPPING = {}
  1129. #
  1130. # Example for Pelican compatibility:
  1131. # METADATA_MAPPING = {
  1132. # "rest_docinfo": {"summary": "description", "modified": "updated"},
  1133. # "markdown_metadata": {"summary": "description", "modified": "updated"}
  1134. # }
  1135. # Other examples: https://getnikola.com/handbook.html#mapping-metadata-from-other-formats
  1136. # Map metadata between types/values. (Runs after METADATA_MAPPING.)
  1137. # Supported formats: nikola, yaml, toml, rest_docinfo, markdown_metadata
  1138. # The value on the right should be a dict of callables.
  1139. # METADATA_VALUE_MAPPING = {}
  1140. # Examples:
  1141. # METADATA_VALUE_MAPPING = {
  1142. # "yaml": {"keywords": lambda value: ', '.join(value)}, # yaml: 'keywords' list -> str
  1143. # "nikola": {
  1144. # "widgets": lambda value: value.split(', '), # nikola: 'widgets' comma-separated string -> list
  1145. # "tags": str.lower # nikola: force lowercase 'tags' (input would be string)
  1146. # }
  1147. # }
  1148. # Add any post types here that you want to be displayed without a title.
  1149. # If your theme supports it, the titles will not be shown.
  1150. # TYPES_TO_HIDE_TITLE = []
  1151. # Additional metadata that is added to a post when creating a new_post
  1152. # ADDITIONAL_METADATA = {}
  1153. # Nikola supports Twitter Card summaries, but they are disabled by default.
  1154. # They make it possible for you to attach media to Tweets that link
  1155. # to your content.
  1156. #
  1157. # Uncomment and modify to following lines to match your accounts.
  1158. # Images displayed come from the `previewimage` meta tag.
  1159. # You can specify the card type by using the `card` parameter in TWITTER_CARD.
  1160. # TWITTER_CARD = {
  1161. # # 'use_twitter_cards': True, # enable Twitter Cards
  1162. # # 'card': 'summary', # Card type, you can also use 'summary_large_image',
  1163. # # see https://dev.twitter.com/cards/types
  1164. # # 'site': '@website', # twitter nick for the website
  1165. # # 'creator': '@username', # Username for the content creator / author.
  1166. # }
  1167. # Bundle JS and CSS into single files to make site loading faster in a HTTP/1.1
  1168. # environment but is not recommended for HTTP/2.0 when caching is used.
  1169. # Defaults to True.
  1170. # USE_BUNDLES = True
  1171. # Plugins you don't want to use. Be careful :-)
  1172. # DISABLED_PLUGINS = ["render_galleries"]
  1173. # Special settings to disable only parts of the indexes plugin.
  1174. # Use with care.
  1175. # DISABLE_INDEXES = False
  1176. # DISABLE_MAIN_ATOM_FEED = False
  1177. # DISABLE_MAIN_RSS_FEED = False
  1178. # Add the absolute paths to directories containing plugins to use them.
  1179. # For example, the `plugins` directory of your clone of the Nikola plugins
  1180. # repository.
  1181. # EXTRA_PLUGINS_DIRS = []
  1182. # Add the absolute paths to directories containing themes to use them.
  1183. # For example, the `v7` directory of your clone of the Nikola themes
  1184. # repository.
  1185. # EXTRA_THEMES_DIRS = []
  1186. # List of regular expressions, links matching them will always be considered
  1187. # valid by "nikola check -l"
  1188. # LINK_CHECK_WHITELIST = []
  1189. # If set to True, enable optional hyphenation in your posts (requires pyphen)
  1190. # Enabling hyphenation has been shown to break math support in some cases,
  1191. # use with caution.
  1192. # HYPHENATE = False
  1193. # The <hN> tags in HTML generated by certain compilers (reST/Markdown)
  1194. # will be demoted by that much (1 → h1 will become h2 and so on)
  1195. # This was a hidden feature of the Markdown and reST compilers in the
  1196. # past. Useful especially if your post titles are in <h1> tags too, for
  1197. # example.
  1198. # (defaults to 1.)
  1199. # DEMOTE_HEADERS = 1
  1200. # If you don’t like slugified file names ([a-z0-9] and a literal dash),
  1201. # and would prefer to use all the characters your file system allows.
  1202. # USE WITH CARE! This is also not guaranteed to be perfect, and may
  1203. # sometimes crash Nikola, your web server, or eat your cat.
  1204. # USE_SLUGIFY = True
  1205. # If set to True, the tags 'draft', 'mathjax' and 'private' have special
  1206. # meaning. If set to False, these tags are handled like regular tags.
  1207. USE_TAG_METADATA = False
  1208. # If set to True, a warning is issued if one of the 'draft', 'mathjax'
  1209. # and 'private' tags are found in a post. Useful for checking that
  1210. # migration was successful.
  1211. WARN_ABOUT_TAG_METADATA = False
  1212. # Templates will use those filters, along with the defaults.
  1213. # Consult your engine's documentation on filters if you need help defining
  1214. # those.
  1215. # TEMPLATE_FILTERS = {}
  1216. # Put in global_context things you want available on all your templates.
  1217. # It can be anything, data, functions, modules, etc.
  1218. GLOBAL_CONTEXT = {}
  1219. # Add functions here and they will be called with template
  1220. # GLOBAL_CONTEXT as parameter when the template is about to be
  1221. # rendered
  1222. GLOBAL_CONTEXT_FILLER = []
  1223. NAVIGATION_LINKS = {
  1224. DEFAULT_LANG: (
  1225. ("/index.html", "Accueil"),
  1226. ("/pages/about.html", "About Riff"),
  1227. ("/rss.xml", "RSS feed"),
  1228. ),
  1229. }
  1230. GLOBAL_CONTEXT = {'blog_sidebar': """\
  1231. <div class="sidebar-module sidebar-module-inset">
  1232. <h4>About</h4>
  1233. <div id="shoutcastdiv">
  1234. <script type="text/javascript">
  1235. refreshdiv();
  1236. </script>
  1237. </div>
  1238. </div>
  1239. <div class="sidebar-module">
  1240. <h4>Links</h4>
  1241. <ol class="list-unstyled">
  1242. <li><a href="http://getbootstrap.com/examples/blog/">Bootstrap Blog Theme</a></li>
  1243. <li><a href="https://getnikola.com/">Nikola</a></li>
  1244. <li><a href="https://twitter.com/mdo">@mdo</a></li>
  1245. <li><a href="https://twitter.com/Kwpolska">@Kwpolska</a></li>
  1246. <li><a href="https://twitter.com/GetNikola">@GetNikola</a></li>
  1247. </ol>
  1248. </div>
  1249. """}