mirror of
https://github.com/welpo/tabi.git
synced 2025-10-11 07:46:15 +02:00
feat(series): add custom placeholders in intro
Custom placeholders are user-defined and can be used in both headline and description.
This commit is contained in:
parent
e1bdb01b6a
commit
71a2409640
5 changed files with 106 additions and 1 deletions
|
@ -8,7 +8,7 @@ tags = ["showcase", "tutorial"]
|
|||
|
||||
[extra]
|
||||
series_page_introduction = "link"
|
||||
series_page_introduction_variables = { position = "first", toto = "TOTO!!! "}
|
||||
series_page_introduction_variables = { position = "first", foo = "FOO!!!"}
|
||||
|
||||
+++
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ tags = ["showcase", "tutorial"]
|
|||
|
||||
[extra]
|
||||
series_page_introduction = "summary"
|
||||
series_page_introduction_variables = { position = "second", foo = "FOO FOO!!!"}
|
||||
|
||||
+++
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ tags = ["showcase", "tutorial", "FAQ"]
|
|||
|
||||
[extra]
|
||||
series_page_introduction = "custom"
|
||||
series_page_introduction_variables = { position = "third", foo = "FOO FOO FOO!!!"}
|
||||
|
||||
+++
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||
|
|
|
@ -14,6 +14,13 @@ post_listing_index_reversed = false
|
|||
|
||||
series_page_introduction = "none"
|
||||
|
||||
series_page_introduction_placeholders = ["$POSITION", "$FOO", "$BAR"]
|
||||
series_page_headline = "This article is the $POSITION of the series '$SERIES_HTML_LINK' ($FOO)"
|
||||
series_page_description = """
|
||||
<p>You can put whatever you want in a custom description.</p>
|
||||
<p>All variable are accessibles, including custom ones.</p>
|
||||
<hr>
|
||||
"""
|
||||
+++
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
||||
|
|
|
@ -61,6 +61,28 @@ Parameters:
|
|||
{%- set series_page_description = series_page_description | replace(from="$SERIES_TITLE", to=series_title) | replace(from="$SERIES_PERMALINK", to=series_permalink) | replace(from="$SERIES_HTML_LINK", to=series_html_link) -%}
|
||||
{%- set series_page_description = series_page_description | replace(from="$SERIES_PAGES_NUMBER", to=series_pages_number) | replace(from="$SERIES_PAGE_INDEX", to=series_page_index) | replace(from="$SERIES_PAGES_OLIST", to=series_pages_ordered_list) | replace(from="$SERIES_PAGES_ULIST", to=series_pages_unordered_list) -%}
|
||||
|
||||
{# Replace introduction custom placeholders #}
|
||||
{%- if series_section.extra.series_page_introduction_placeholders is defined -%}
|
||||
{%- set missing_vars = [] -%}
|
||||
{%- for placeholder in series_section.extra.series_page_introduction_placeholders -%}
|
||||
{%- if placeholder in series_page_headline or placeholder in series_page_description -%}
|
||||
{# Attempt to retrieve the corresponding variable by trimming the $ sign and converting to lowercase #}
|
||||
{%- set var_name = placeholder | replace(from="$", to="") | lower -%}
|
||||
{%- if page.extra.series_page_introduction_variables[var_name] -%}
|
||||
{%- set_global series_page_headline = series_page_headline | replace(from=placeholder, to=page.extra.series_page_introduction_variables[var_name]) -%}
|
||||
{%- set_global series_page_description = series_page_description | replace(from=placeholder, to=page.extra.series_page_introduction_variables[var_name]) -%}
|
||||
{%- else -%}
|
||||
{# Append the variable name to the list of missing variables #}
|
||||
{% set_global missing_vars = missing_vars | concat(with=var_name) -%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- if missing_vars | length > 0 -%}
|
||||
{%- set missing_vars_str = missing_vars | join(sep=", ") -%}
|
||||
{{ throw(message="ERROR: The following variables are included in this page's series introduction (`series_page_introduction_placeholders`) but have not been set in the `series_page_introduction_variables` of this page: " ~ missing_vars_str) }}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if series_page_introduction == "link" -%}
|
||||
<section class="series-page-introduction">
|
||||
<p>{{ series_page_headline | safe }}</p>
|
||||
|
@ -82,3 +104,77 @@ Parameters:
|
|||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{% endmacro %}
|
||||
|
||||
{#
|
||||
Computes the series navigation of a series's page.
|
||||
|
||||
Parameters:
|
||||
- `page`: The page object being part of the series.
|
||||
- `series_section`: The series' section the page belongs to.
|
||||
- `series_ordered_pages`: The series' pages properly ordered (see at the top of this file for an explanation).
|
||||
- `language_strings`: A dictionary containing the translation strings.
|
||||
#}
|
||||
{% macro get_navigation(page, series_section, series_ordered_pages, language_strings) %}
|
||||
{%- if macros_settings::evaluate_setting_priority(setting="show_previous_next_series_article_links", page=page, default_global_value=false) == "true" -%}
|
||||
{%- if series_ordered_pages | length > 1 -%}
|
||||
{% set next_series_label = macros_translate::translate(key="next", default="Next", language_strings=language_strings) %}
|
||||
{% set prev_series_label = macros_translate::translate(key="prev", default="Prev", language_strings=language_strings) %}
|
||||
{% set is_previous = true %}
|
||||
{% set is_next = false %}
|
||||
{%- for series_page in series_ordered_pages -%}
|
||||
{%- if series_page.relative_path == page.relative_path -%}
|
||||
{%- set_global is_previous = false -%}
|
||||
{%- set_global is_next = true -%}
|
||||
{%- else -%}
|
||||
{%- if is_previous -%}
|
||||
{%- set_global prev_series_page = series_page -%}
|
||||
{%- endif -%}
|
||||
{%- if is_next -%}
|
||||
{%- set_global next_series_page = series_page -%}
|
||||
{%- set_global is_next = false-%}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{% if macros_settings::evaluate_setting_priority(setting="invert_previous_next_article_links", page=page, default_global_value=true) == "true" %}
|
||||
{% if prev_series_page %}
|
||||
{% set left_series_link = prev_series_page.permalink %}
|
||||
{% set left_series_label = prev_series_label %}
|
||||
{% set left_series_title = prev_series_page.title %}
|
||||
{% endif %}
|
||||
{% if next_series_page %}
|
||||
{% set right_series_link = next_series_page.permalink %}
|
||||
{% set right_series_label = next_series_label %}
|
||||
{% set right_series_title = next_series_page.title %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if next_series_page %}
|
||||
{% set left_series_link = next_series_page.permalink %}
|
||||
{% set left_series_label = next_series_label %}
|
||||
{% set left_series_title = next_series_page.title %}
|
||||
{% endif %}
|
||||
{% if prev_series_page %}
|
||||
{% set right_series_link = prev_series_page.permalink %}
|
||||
{% set right_series_label = prev_series_label %}
|
||||
{% set right_series_title = prev_series_page.title %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if macros_settings::evaluate_setting_priority(setting="previous_next_article_links_full_width", page=page, default_global_value=true) == "true" %}
|
||||
{%- set full_width_class = "full-width" -%}
|
||||
{% endif %}
|
||||
<nav class="{{ full_width_class | default(value="") }} series-article-navigation">
|
||||
<div>
|
||||
{%- if left_series_link and left_series_label and left_series_title -%}
|
||||
<a href="{{ left_series_link | safe }}" aria-label="{{ left_series_label }}" aria-describedby="left_series_title"><span class="arrow">←</span> {{ left_series_label }}</a>
|
||||
<p aria-hidden="true" id="left_series_title">{{ left_series_title | truncate(length=100, end="…") }}</p>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
<div>
|
||||
{%- if right_series_link and right_series_label and right_series_title -%}
|
||||
<a href="{{ right_series_link | safe }}" aria-label="{{ right_series_label }}" aria-describedby="right_series_title">{{ right_series_label }} <span class="arrow">→</span></a>
|
||||
<p aria-hidden="true" id="right_series_title">{{ right_series_title | truncate(length=100, end="…") }}</p>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
</nav>
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{% endmacro %}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue