{# ----------------------------- MACROS ------------------------------------- #} {# -------------------------------------------------------------------------- #} {# meta_tag_custom: create a custom meta tag @params namespace name value #} {% macro meta_tag_custom(namespace, name, value) %} {% endmacro %} {# meta_tag: create a meta tag @params name value #} {% macro meta_tag(name, value) %} {{ meta_tag_custom('name', name, value) }} {% endmacro %} {# meta_page_meta_tags: Set all the meta tags in the page #} {% macro meta_page_meta_tags() %} {% for k, v in page.meta.items() %} {{ meta_tag(k, v) }} {% endfor %} {% set url = site.base_url + page.url %} {{ meta_tag_custom('property', 'og:title', page.title or '') }} {{ meta_tag_custom('property', 'og:description', page.description or '') }} {{ meta_tag_custom('property', 'og:url', url) }} {{ meta_tag_custom('property', 'og:site_name', site.name or '') }} {{ meta_tag_custom('property', 'og:type', page.meta.object_type or 'article') }} {{ meta_tag_custom('itemprop', 'description', page.description or '') }} {{ meta_tag_custom('itemprop', 'name', page.title or '') }} {{ meta_tag_custom('itemprop', 'url', url) }} {{ meta_tag_custom('name', 'twitter:title', page.title or '') }} {{ meta_tag_custom('name', 'twitter:description', page.description or '') }} {{ meta_tag_custom('name', 'twitter:url', url) }} {% if not page.image %} {{ meta_tag_custom('name', 'twitter:card', "summary") }} {% endif %} {% if page.image %} {{ meta_tag_custom('property', 'og:image', page.image) }} {{ meta_tag_custom('itemprop', 'image', page.image) }} {{ meta_tag_custom('name', 'twitter:image', page.image) }} {{ meta_tag_custom('name', 'twitter:card', "summary_large_image") }} {% endif %} {% endmacro %} {# meta_page_title: Set the page title. Leave title empty to fallback to default @params title suffix separator #} {% macro meta_page_title(title=None, suffix=None, separator='|') %} {{ title or page.title or '' }} {{ separator }} {{ suffix or site.name }} {{ meta_tag('title', title or page.title or '') }} {% endmacro %} {# meta_page_description: Set the page description. Leave description empty to fallback to default @params description #} {% macro meta_page_description(description=None) %} {{ meta_tag('description', description or page.description or site.description or '') }} {% endmacro %} {# -------------------------------------------------------------------------- #} {# static_url: get the url of an asset, ie: image, text, css, js, etc @params path #} {% macro static_url(path) %} {{- path | kolibri_get_static_url -}} {% endmacro %} {# stylesheet_tag: to include css file @params path: the css file absolute: (Bool|False) By default point to /static. True to absolute #} {% macro stylesheet_tag(src, absolute=False) %} {% set url = static_url(src) if not absolute else src %} {% endmacro %} {# script_tag: To include javascript file @params path: the js source from the static folder props: string, ie: type="module" absolute: (Bool|False) By default point to /static. True to absolute #} {% macro script_tag(src, props="", absolute=False) %} {% set url = static_url(src) if not absolute else src %} {% set _props = props if props else "type='text/javascript'" %} {% endmacro %} {# -------------------------------------------------------------------------- #} {# x_ga: include the google analytics code @params: code: GA code. if not provided, it will rely on the site config #} {% macro x_ga(code=None) %} {% if not code %} {% set code = site.google_analytics %} {% endif %} {% if code %} {% endif %} {% endmacro %} {# -------------------------------------------------------------------------- #} {# page_markdown_toc: table of contents when using MD files #} {% macro page_markdown_toc() %} {{ page.__toc__ }} {% endmacro %} {# -------------------------------------------------------------------------- #} {# format_datetime: format datetime, using Arrow library @params dt: string format: the format of the date, ie: MM/DD/YYYY h:mm a #} {% macro format_datetime(dt, format="MM/DD/YYYY h:mm a") %} {{- dt | kolibri_format_datetime(format) -}} {% endmacro %} {# -------------------------------------------------------------------------- #} {# page_link: create a href link to a page @params: page: the name, ie: index or index.html or index.md text: the text to create the link. If empty, it will use the link original text title: the link title. class: a class id: id #} {% macro page_link(page, text=None, title=None, class="", id="") %} {{- page | kolibri_create_page_link(text=text, title=title, _class=class, id=id) | safe -}} {% endmacro %} {# page_url: get a page url @params page: the name of the page, ie: index, index.html, index.md #} {% macro page_url(page) %} {{- page | kolibri_get_page_url -}} {% endmacro %} {# page_info: get the page info @params page: the name of the page, ie: index, index.html, index.md path: dot notation , ie: meta.x.y.z #} {% macro page_info(page, path) %} {{ page | kolibri_get_page_info(path) }} {% endmacro %}