--- created: source_filename: /home/runner/work/mknodes/mknodes/mknodes/manual/page_section.py source_function: null source_line_no: 56 hide: - toc status: new template: MkPages/templates.html title: Templates --- The page template can be edited easily via the [MkPage.template][mknodes.PageTemplate] attribute. If any block gets modified then **MkNodes** will generate an individual template HTML file for the page during the build process. An example: ```py page.template.tabs.content = mk.MkAdmonition("Some text.") ``` would generate the following template override automatically: ```html { % extends "main.html" % } { % block content % }

Info

Some text

{ % endblock % } ``` ```py page.template.announce.content = mk.MkMetadataBadges(typ="classifiers") page.template.footer.content = mk.MkProgressBar(50) page.template.tabs.content = mk.MkCode("information = 'You can even put MkNodes here!'") page.template.hero.content = mk.MkHeader("A header!") ``` ### PageTemplate Blocks #### Title block ([MkPage.template.title][mknodes.pages.templateblocks.TitleBlock]) The title block allows to modify the title tag in HEAD ```py page.template.title.content = "New title" ``` #### Libs block ([MkPage.template.libs][mknodes.pages.templateblocks.LibsBlock]) The libs block can be used to add additional JavaScript libraries. ```py page.template.libs.add_script_file("path_to_file.js") ``` #### Analytics block ([MkPage.template.analytics][mknodes.pages.templateblocks.AnalyticsBlock]) The analytics block can be used to set custom analytics. ```py page.template.analytics.content = "" ``` #### Scripts block ([MkPage.template.scripts][mknodes.pages.templateblocks.ScriptsBlock]) The scripts block can be used to add custom JavaScripts, put at end of HTML body. ```py page.template.scripts.add_script("JavaScript code") ``` #### Site meta block ([MkPage.template.site_meta][mknodes.pages.templateblocks.SiteMetaBlock]) The site_meta block contains the site metadata. By default it gets populated by data from the MkDocs config file. #### Styles block ([MkPage.template.styles][mknodes.pages.templateblocks.StylesBlock]) The styles block can be used to add additional CSS. ```py page.template.styles.add_css("My custom CSS") ``` #### ExtraHead block ([MkPage.template.styles][mknodes.pages.templateblocks.ExtraHeadBlock]) The extrahead block allows to add content to the HTML head which does not suit the other categories, like redirecting to another URL. ```py page.template.extra_head.set_redirect_url("http://some.url") ``` #### HTML blocks HTML blocks can get populated with Markdown, which will get converted to HTML during the build process. * [MkPage.template.content_block][mknodes.pages.templateblocks.HtmlBlock] * [MkPage.template.footer][mknodes.pages.templateblocks.HtmlBlock] * [MkPage.template.site_nav][mknodes.pages.templateblocks.HtmlBlock] **MkDocs-Material**-exclusive blocks: * [MkPage.template.tabs][mknodes.pages.templateblocks.HtmlBlock] * [MkPage.template.outdated][mknodes.pages.templateblocks.HtmlBlock] * [MkPage.template.hero][mknodes.pages.templateblocks.HtmlBlock] * [MkPage.template.announce][mknodes.pages.templateblocks.HtmlBlock] ```py page.template.announce.content = mk.MkMetadataBadges(typ="classifiers") page.template.footer.content = mk.MkProgressBar(50) page.template.tabs.content = mk.MkCode("information = 'You can even put MkNodes here!'") page.template.hero.content = mk.MkHeader("A header!") ``` ??? theme "Page info" ??? quote "Code for this page" ``` {.python title='mknodes.manual.page_section._' linenums='56'} @nav.route.page("Templates", hide="toc", status="new") def _(page: mk.MkPage): page += mk.MkTemplate("pages/page_templates.jinja") page.template.announce.content = mk.MkMetadataBadges(typ="classifiers") page.template.footer.content = mk.MkProgressBar(50) code = "information = 'You can even put MkNodes here!'" page.template.tabs.content = mk.MkCode(f"{code}") page.template.hero.content = mk.MkHeader("A header!") css = { ":root": { "--md-primary-fg-color": "#FF0000", "--md-primary-fg-color--light": "#FF0000", "--md-primary-fg-color--dark": "#FF0000", }, } page.template.styles.add_css(css) ``` ??? quote "Resources" ``` {.python } Resources(css=[], markdown_extensions={'attr_list': {}, 'md_in_html': {}, 'pymdownx.emoji': {'emoji_generator': , 'emoji_index': }, 'pymdownx.magiclink': {'repo': 'mknodes', 'repo_url_shorthand': True, 'user': 'phil65'}}, plugins=[], js=[], assets=[], packages=[]) ``` ??? quote "Metadata" ``` {.yaml } created: source_filename: /home/runner/work/mknodes/mknodes/mknodes/manual/page_section.py source_function: null source_line_no: 56 hide: - toc status: new template: MkPages/templates.html title: Templates ```