jekyll-theme-centos 2.52.0.beta.46 → 2.52.0.beta.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/_data/base/bits.yml +5 -5
  3. data/_data/base/locales_schema.yml +142 -9
  4. data/_data/base/social.yml +22 -21
  5. data/_data/base/social_schema.yml +10 -6
  6. data/_data/base/sponsors.yml +41 -0
  7. data/_data/base/sponsors_schema.yml +73 -0
  8. data/_includes/base/announcement.html.liquid +2 -0
  9. data/_includes/base/artwork.html.liquid +2 -0
  10. data/_includes/base/bits.html.liquid +2 -0
  11. data/_includes/base/breadcrumb.html.liquid +2 -0
  12. data/_includes/base/breakingnews.html.liquid +2 -0
  13. data/_includes/base/configuration-variables-nested.html.liquid +98 -0
  14. data/_includes/base/configuration-variables.html.liquid +98 -0
  15. data/_includes/base/copyright.html.liquid +3 -1
  16. data/_includes/base/event.html.liquid +2 -0
  17. data/_includes/base/footer.html.liquid +62 -0
  18. data/_includes/base/locales.html.liquid +2 -1
  19. data/_includes/base/navbar.html.liquid +2 -0
  20. data/_includes/base/project.html.liquid +2 -0
  21. data/_includes/base/shortcut.html.liquid +9 -6
  22. data/_includes/base/social.html.liquid +26 -19
  23. data/_includes/base/sponsors-cards.html.liquid +58 -0
  24. data/_includes/base/sponsors-carousel.html.liquid +78 -0
  25. data/_includes/base/title.html.liquid +2 -0
  26. data/_includes/base/toc.html.liquid +2 -0
  27. data/_layouts/base/default.html +5 -51
  28. data/assets/img/base/example-sponsors-design.png +0 -0
  29. data/assets/img/base/example-sponsors-design.svg +226 -0
  30. data/assets/img/base/example-sponsors-logo-1.png +0 -0
  31. data/assets/img/base/example-sponsors-logo-1.svg +120 -0
  32. data/assets/img/base/example-sponsors-logo-2.png +0 -0
  33. data/assets/img/base/example-sponsors-logo-2.svg +116 -0
  34. data/assets/img/base/example-sponsors-logo-3.png +0 -0
  35. data/assets/img/base/example-sponsors-logo-3.svg +123 -0
  36. data/assets/img/base/example-sponsors-logo-4.png +0 -0
  37. data/assets/img/base/example-sponsors-logo-4.svg +116 -0
  38. data/assets/img/base/example-sponsors-logo-5.png +0 -0
  39. data/assets/img/base/example-sponsors-logo-5.svg +116 -0
  40. data/assets/img/base/example-sponsors-logo-6.png +0 -0
  41. data/assets/img/base/example-sponsors-logo-6.svg +116 -0
  42. data/assets/img/base/example-sponsors-logo-7.png +0 -0
  43. data/assets/img/base/example-sponsors-logo-7.svg +116 -0
  44. data/assets/img/base/example-sponsors-logo-8.png +0 -0
  45. data/assets/img/base/example-sponsors-logo-8.svg +110 -0
  46. data/assets/img/base/page-layout-default.png +0 -0
  47. data/assets/img/base/page-layout-default.svg +1291 -965
  48. data/assets/img/base/page-with-announcement.png +0 -0
  49. data/assets/img/base/page-with-announcement.svg +2 -6
  50. data/assets/img/base/page-with-backtotop.png +0 -0
  51. data/assets/img/base/page-with-backtotop.svg +622 -187
  52. data/assets/img/base/page-with-breakingnews.png +0 -0
  53. data/assets/img/base/page-with-breakingnews.svg +2 -42
  54. data/assets/img/base/page-with-copyright.png +0 -0
  55. data/assets/img/base/page-with-copyright.svg +785 -173
  56. data/assets/img/base/page-with-event.png +0 -0
  57. data/assets/img/base/page-with-event.svg +2 -6
  58. data/assets/img/base/page-with-locales.png +0 -0
  59. data/assets/img/base/page-with-locales.svg +614 -619
  60. data/assets/img/base/page-with-navbar.png +0 -0
  61. data/assets/img/base/page-with-navbar.svg +3 -42
  62. data/assets/img/base/page-with-project.png +0 -0
  63. data/assets/img/base/page-with-project.svg +2 -42
  64. data/assets/img/base/page-with-shortcut.png +0 -0
  65. data/assets/img/base/page-with-shortcut.svg +649 -172
  66. data/assets/img/base/page-with-social.png +0 -0
  67. data/assets/img/base/page-with-social.svg +740 -174
  68. data/assets/img/base/page-with-sponsors.png +0 -0
  69. data/assets/img/base/page-with-sponsors.svg +710 -0
  70. data/assets/img/base/page-with-toc.png +0 -0
  71. data/assets/img/base/page-with-toc.svg +3 -42
  72. metadata +30 -3
  73. /data/assets/img/base/{screenshot-example-1200x600.png → screenshot-1200x600.png} +0 -0
  74. /data/assets/img/base/{screenshot-example-1200x600.svg → screenshot-1200x600.svg} +0 -0
@@ -0,0 +1,98 @@
1
+ {% comment %}
2
+ Generates the top-level property table and initiates the recursive generation
3
+ of separate, nested DataTables for complex properties.
4
+ {% endcomment %}
5
+
6
+ {% assign component = page.component.name %}
7
+ {% assign property_name = "with_" | append: component %}
8
+ {% assign property_name_schema = component | append: "_schema" %}
9
+ {% assign property_schema = include.schema | default: site.data[property_name_schema] | default: site.data.base[property_name_schema] %}
10
+
11
+ {% assign col_name = include.col_name | default: "Name" %}
12
+ {% assign col_type = include.col_type | default: "Type" %}
13
+ {% assign col_default = include.col_default | default: "Default" %}
14
+ {% assign col_description = include.col_description | default: "Description" %}
15
+
16
+ {% assign columns = include.columns | default: property_schema.columns %}
17
+
18
+ {% if property_schema.properties %}
19
+
20
+ {% comment %} 1. Calculate the property count for the top table using | size. {% endcomment %}
21
+ {% assign property_count = property_schema.properties | size %}
22
+
23
+ {% comment %} 2. Determine the CSS classes for the top-level table. {% endcomment %}
24
+ {% assign table_classes = "table dataTable" %}
25
+
26
+ The `{{ page.component.name }}` {{ page.component.type }} {{ pt }} understands the following configuration variables:
27
+
28
+ {% comment %} 3. Render the top-level table completely {% endcomment %}
29
+ <table class="{{ table_classes }}">
30
+ <thead class="table-light">
31
+ <tr>
32
+ <th scope="col">{{ col_name }}</th>
33
+ {% if columns %}
34
+ {% for col in columns %}<th scope="col">{{ col.label }}</th>{% endfor %}
35
+ {% else %}
36
+ <th scope="col">{{ col_type }}</th>
37
+ <th scope="col">{{ col_default }}</th>
38
+ <th scope="col">{{ col_description }}</th>
39
+ {% endif %}
40
+ </tr>
41
+ </thead>
42
+ <tbody>
43
+ {% for property in property_schema.properties -%}
44
+ {% assign prop_key = property[0] %}
45
+ {% assign prop_details = property[1] %}
46
+ <tr>
47
+ <td>{{ prop_key }}</td>
48
+ {% if columns %}
49
+ {% for col in columns %}<td>{{ prop_details[col.key] | strip_newlines | markdownify | default: "—" }}</td>{% endfor %}
50
+ {% else %}
51
+ <td>{{ prop_details.type | strip_newlines | markdownify | default: "—" }}</td>
52
+ <td>{{ prop_details.default | strip_newlines | markdownify | default: "—" }}</td>
53
+ <td>{{ prop_details.description | strip_newlines | markdownify | default: "—" }}</td>
54
+ {% endif %}
55
+ </tr>
56
+ {% endfor -%}
57
+ </tbody>
58
+ </table>
59
+
60
+ {% comment %} 4. Initiate recursive nested table generation (separate loop) {% endcomment %}
61
+ {% for property in property_schema.properties -%}
62
+ {% assign prop_key = property[0] %}
63
+ {% assign prop_details = property[1] %}
64
+
65
+ {% assign nested_properties = nil %}
66
+ {% assign type_desc = "" %}
67
+
68
+ {% comment %} Check for nested structures in the top-level properties {% endcomment %}
69
+ {% if prop_details.type == "object" and prop_details.properties %}
70
+ {% assign nested_properties = prop_details.properties %}
71
+ {% assign type_desc = "dictionary (map)" %}
72
+ {% elsif prop_details.type == "array" and prop_details.items.properties %}
73
+ {% comment %} Handle array of objects {% endcomment %}
74
+ {% assign nested_properties = prop_details.items.properties %}
75
+ {% assign type_desc = "list of dictionaries" %}
76
+ {% endif %}
77
+
78
+ {% if nested_properties %}
79
+ {% assign initial_level = 1 %}
80
+
81
+ {% comment %} Call the recursive include for the first level of nested properties. {% endcomment %}
82
+ {% include base/configuration-variables-nested.html.liquid
83
+ properties=nested_properties
84
+ parent_name=prop_key
85
+ type_desc=type_desc
86
+ level=initial_level
87
+ col_name=col_name
88
+ col_type=col_type
89
+ col_default=col_default
90
+ col_description=col_description
91
+ columns=columns
92
+ %}
93
+ {% endif %}
94
+ {% endfor -%}
95
+
96
+ {% else %}
97
+ The `{{ page.component.name }}` {{ page.component.type }} {{ pt }} doesn't have configuration variables.
98
+ {% endif %}
@@ -31,6 +31,7 @@ Data Source Hierarchy (priority):
31
31
  ================================================================================
32
32
  {% endcomment %}
33
33
 
34
+ {%- if page.with_copyright -%}
34
35
  {%- assign copyright = include.data | default: page.with_copyright_data | default: site.data.copyright | default: site.data.base.copyright %}
35
36
 
36
37
  {%- comment %} === Presentation === {% endcomment %}
@@ -53,4 +54,5 @@ Data Source Hierarchy (priority):
53
54
  {%- endcapture -%}
54
55
 
55
56
  {%- comment %} --- HTML --- {% endcomment %}
56
- <div class="my-3 text-center">Copyright &copy; {{ site.time | date: "%Y" }} {{ copyright_author }} {{ copyright_links }}</div>
57
+ <div class="my-1">Copyright &copy; {{ site.time | date: "%Y" }} {{ copyright_author }} {{ copyright_links }}</div>
58
+ {%- endif -%}
@@ -34,6 +34,7 @@ Data Source Hierarchy (priority):
34
34
  ================================================================================
35
35
  {% endcomment %}
36
36
 
37
+ {%- if page.with_event -%}
37
38
  {%- assign events = include.data | default: page.with_event_data | default: site.data.event | default: site.data.base.event %}
38
39
 
39
40
  {%- comment %} === Presentation === {% endcomment %}
@@ -87,3 +88,4 @@ Data Source Hierarchy (priority):
87
88
  </div>
88
89
  {% endfor %}
89
90
  </div>
91
+ {%- endif -%}
@@ -0,0 +1,62 @@
1
+ {%- assign navbar_brand_image = navbar.brand_image | default: schema.brand_image.default %}
2
+ {%- assign navbar_brand_image_class = navbar.brand_image_class | default: schema.brand_image_class.default %}
3
+ {%- assign navbar_brand_image_height = navbar.brand_image_height | default: schema.brand_image_height.default %}
4
+ {%- assign navbar_brand_manifestation = navbar.brand_manifestation | default: schema.brand_manifestation.default %}
5
+ {%- assign navbar_brand_manifestation_class = navbar.brand_manifestation_class | default: schema.brand_manifestation_class.default %}
6
+
7
+ {%- if page.with_footer -%}
8
+
9
+ <div class="container">
10
+
11
+ <div class="row justify-content-between align-items-start gx-5">
12
+
13
+ <div class="col-sm-12 col-lg-4">
14
+ {%- if navbar_brand_image != "" %}
15
+ <a class="navbar-brand" href="{{ site.baseurl }}/">
16
+
17
+ <img
18
+ class="d-inline-block align-text-middle me-2{% if navbar_brand_image_class != "" %} {{ navbar_brand_image_class }}{% endif %}"
19
+ src="{{ site.baseurl }}/assets/img/{{ navbar_brand_image }}"
20
+ height="{{ navbar_brand_image_height }}"
21
+ alt="{{ site.title }}" />
22
+
23
+ {%- if navbar_brand_manifestation != "" %}
24
+ <span class="d-inline-block align-text-middle fs-6 border-start border-1 border-light opacity-75 ps-3{% if navbar_brand_manifestation_class != "" %} {{ navbar_brand_manifestation_class }}{% endif %}">{{ navbar_brand_manifestation }}</span>
25
+ {%- endif %}
26
+
27
+ </a>
28
+ {%- endif %}
29
+ {% if site.description %}
30
+ <p class="mt-2 mb-5">{{ site.description }}</p>
31
+ {% endif %}
32
+
33
+ {% include base/sponsors-carousel.html.liquid -%}
34
+ </div>
35
+
36
+ {% if page.with_shortcut %}
37
+ <div class="col-sm-12 col-lg-5">
38
+ {% include base/shortcut.html.liquid %}
39
+ </div>
40
+ {% endif %}
41
+
42
+ {% if page.with_locales or page.with_social %}
43
+ <div class="col-sm-12 col-lg-3 pb-5">
44
+ {% include base/locales.html.liquid %}
45
+ {% include base/social.html.liquid %}
46
+ </div>
47
+ {% endif %}
48
+
49
+ </div>
50
+ </div>
51
+
52
+ {% if page.with_copyright %}
53
+ <div class="container">
54
+ <div class="row justify-content-between align-items-center py-3">
55
+ <div class="col">
56
+ {% include base/copyright.html.liquid %}
57
+ </div>
58
+ </div>
59
+ </div>
60
+ {% endif %}
61
+
62
+ {%- endif -%}
@@ -44,7 +44,8 @@ Locale Detection:
44
44
 
45
45
  {%- if page.with_locales and configured_locales %}
46
46
 
47
- <div class="dropdown">
47
+ <p class="mb-2">Change page language:</p>
48
+ <div class="dropdown mb-4">
48
49
  <button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Languages">
49
50
  <i class="fa-solid fa-language me-1"></i> {{ site.data.base.languages[current_locale] }} ({{ current_locale }})
50
51
  </button>
@@ -30,6 +30,7 @@ Data Source Hierarchy (priority):
30
30
  ================================================================================
31
31
  {% endcomment %}
32
32
 
33
+ {%- if page.with_navbar -%}
33
34
  {%- assign navbar = include.data | default: page.with_navbar_data | default: site.data.navbar | default: site.data.base.navbar %}
34
35
  {%- assign schema = site.data.base.navbar_schema.properties["with_navbar_data"].properties %}
35
36
 
@@ -104,3 +105,4 @@ Data Source Hierarchy (priority):
104
105
 
105
106
  </div>
106
107
  </nav>
108
+ {%- endif -%}
@@ -27,6 +27,7 @@ Data Source Hierarchy (priority):
27
27
  ================================================================================
28
28
  {% endcomment %}
29
29
 
30
+ {%- if page.with_project -%}
30
31
  {%- assign project = include.data | default: page.with_project_data | default: site.data.project | default: site.data.base.project %}
31
32
 
32
33
  {% assign project_class = project.class | default: "flex-column text-bg-dark bg-image" %}
@@ -88,3 +89,4 @@ Data Source Hierarchy (priority):
88
89
  {%- endif %}
89
90
  </div>
90
91
  </div>
92
+ {%- endif -%}
@@ -33,6 +33,7 @@ Conditional Logic:
33
33
  ================================================================================
34
34
  {% endcomment %}
35
35
 
36
+ {%- if page.with_shortcut -%}
36
37
  {%- assign shortcut = include.data
37
38
  | default: page.with_shortcut_data
38
39
  | default: page.with_navbar_data
@@ -44,22 +45,24 @@ Conditional Logic:
44
45
 
45
46
  {%- comment %} === Presentation === {% endcomment %}
46
47
  {% if shortcut_navitems.size > 0 %}
47
- <div class="d-flex flex-wrap justify-content-center m-2">
48
+ <div class="d-flex flex-wrap justify-content-evenly mb-4">
49
+
48
50
  {% for section in shortcut_navitems -%}
49
- <div class="px-4 text-center">
50
- <div class="h6">{{ section.name | upcase }}</div>
51
- <ul class="px-4 mb-4">
51
+ <div class="pe-4">
52
+ <div class="h6">{% if section.icon %}<i class="{{ section.icon }} me-1"></i>{% endif %}{{ section.name }}</div>
53
+ <ul class="px-0 mb-4">
52
54
  {% for item in section.menu -%}
53
55
  <li class="list-unstyled my-1">
54
56
  {% include base/link.html.liquid
55
57
  name = item.name
56
58
  link = item.link
57
- color = "light"
59
+ color = "primary"
58
60
  %}
59
61
  </li>
60
62
  {% endfor %}
61
63
  </ul>
62
64
  </div>
63
65
  {% endfor %}
64
- </div>
66
+ </div>
65
67
  {% endif %}
68
+ {%- endif -%}
@@ -13,7 +13,7 @@ Strategic Design Logic:
13
13
  - Accessibility-first approach with proper ARIA labels
14
14
  - Centered layout for prominent footer or banner placement
15
15
 
16
- Required Inputs (from data objects):
16
+ Required Fields (per item in the media array):
17
17
  - link: URL for the social media or external platform
18
18
  - icon: Icon class for Font Awesome (e.g., 'fa-brands fa-github')
19
19
  - name: Platform name for accessibility label (e.g., 'GitHub')
@@ -37,23 +37,30 @@ Conditional Logic:
37
37
  ================================================================================
38
38
  {% endcomment %}
39
39
 
40
- {%- assign social = include.data | default: page.with_social_data | default: site.data.social | default: site.data.base.social %}
40
+ {%- assign social = include.data | default: page.with_social_data | default: site.data.social | default: site.data.base.social %}
41
+ {%- assign social_class = social.class | default: site.data.base.social_schema.properties.with_social_data.properties.class.default %}
42
+ {%- assign social_preamble = social.preamble | default: site.data.base.social_schema.properties.with_social_data.properties.preamble.default %}
43
+ {%- assign social_preamble_class = social.preamble_class | default: site.data.base.social_schema.properties.with_social_data.properties.preamble_class.default %}
44
+ {%- assign social_media = social.media | default: site.data.base.social_schema.properties.with_social_data.properties.media.default %}
41
45
 
42
- {%- comment %} === Presentation === {% endcomment %}
43
- {% if site.description %}
44
- <div class="lead text-center mb-2">{{ site.description }}</div>
46
+ {% if page.with_social %}
47
+ <div {% if social_class != "" %}class="{{ social_class }}"{% endif %}>
48
+
49
+ {%- comment %} === Presentation (Begin) === {% endcomment %}
50
+ {%- if social_preamble %}
51
+ <p class="{{ social_preamble_class }}">{{ social_preamble }}</p>
52
+ {%- endif %}
53
+
54
+ {%- for item in social_media -%}
55
+ {%- include base/link.html.liquid
56
+ class = "btn btn-outline-primary m-1"
57
+ link = item.link
58
+ role = "button"
59
+ icon = item.icon
60
+ aria_label = item.name
61
+ data_bs_title = item.name
62
+ %}
63
+ {%- endfor %}
64
+ {%- comment %} === Presentation (End) === {% endcomment %}
65
+ </div>
45
66
  {% endif %}
46
- <div class="text-center">
47
- {%- for item in social -%}
48
- {%- include base/link.html.liquid
49
- class = "btn btn-primary ms-0 m-2 fs-5"
50
- link = item.link
51
- role = "button"
52
- icon = item.icon
53
- aria_label = item.name
54
- data_bs_toggle = "tooltip"
55
- data_bs_title = item.name
56
- data_bs_placement = "bottom"
57
- %}
58
- {%- endfor %}
59
- </div>
@@ -0,0 +1,58 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Sponsors Cards Component
4
+ Purpose: Renders sponsor logos as a horizontal row of linked cards with
5
+ border styling. Suitable for inline or content-area placement.
6
+ ================================================================================
7
+
8
+ Strategic Design Logic:
9
+ - Multi-level data source hierarchy for flexible configuration
10
+ - Card-based layout for content-area or inline sponsor display
11
+ - Active-flag filtering to soft-delete without data removal
12
+
13
+ Required Fields (per item in the members array):
14
+ - name: Sponsor display name (used as alt text)
15
+ - image: Logo source — bare filename (resolved via image_base_path) or absolute URL
16
+ - url: Sponsor website URL
17
+
18
+ Optional Data Fields:
19
+ - image_base_path: Base path for bare filenames (default: /assets/img/base/)
20
+
21
+ Optional Inputs (from include):
22
+ - data: Sponsors data object (overrides all fallbacks)
23
+
24
+ Data Source Hierarchy (in priority order):
25
+ 1. include.data - Explicitly passed sponsors data object
26
+ 2. page.with_sponsors_data - Page front matter configuration
27
+ 3. site.data.sponsors - Site-specific sponsors configuration
28
+ 4. site.data.base.sponsors - Theme default sponsors data
29
+
30
+ Conditional Logic:
31
+ - Component renders only when page.with_sponsors is true
32
+ - Members filtered by is_active != false
33
+ ================================================================================
34
+ {% endcomment %}
35
+
36
+ {%- assign sponsors = include.data | default: page.with_sponsors_data | default: site.data.sponsors | default: site.data.base.sponsors -%}
37
+ {%- assign sponsors_members = sponsors.members | default: site.data.base.sponsors_schema.properties.with_sponsors_data.properties.members.default -%}
38
+ {%- assign sponsors_image_base = sponsors.image_base_path | default: site.data.base.sponsors_schema.properties.with_sponsors_data.properties.image_base_path.default -%}
39
+
40
+ {%- if page.with_sponsors -%}
41
+ <div class="d-flex flex-wrap justify-content-between py-4 my-4 border-top border-bottom border-top-1 border-bottom-1">
42
+
43
+ {%- comment %} === Presentation (Begin) === {% endcomment %}
44
+ {%- for member in sponsors_members -%}
45
+ {%- if member.is_active != false %}
46
+ <div class="card border-light m-4" style="max-height: 60px; max-width: 242px">
47
+ {%- if member.image contains "https://" or member.image contains "http://" -%}
48
+ <a href="{{ member.url }}"><img src="{{ member.image }}" class="card-img-top rounded" style="max-height: 60px; max-width: 242px" alt="{{ member.name }}"></a>
49
+ {%- else -%}
50
+ <a href="{{ member.url }}"><img src="{{ site.baseurl }}{{ sponsors_image_base }}{{ member.image }}" class="card-img-top rounded" style="max-height: 60px; max-width: 242px" alt="{{ member.name }}"></a>
51
+ {%- endif -%}
52
+ </div>
53
+ {%- endif -%}
54
+ {%- endfor %}
55
+ {%- comment %} === Presentation (End) === {% endcomment %}
56
+
57
+ </div>
58
+ {%- endif -%}
@@ -0,0 +1,78 @@
1
+ {% comment %}
2
+ ================================================================================
3
+ Template: Sponsors Carousel Component
4
+ Purpose: Renders sponsor logos as a Bootstrap carousel with optional title and
5
+ message. Automatically cycles through active sponsors.
6
+ ================================================================================
7
+
8
+ Strategic Design Logic:
9
+ - Multi-level data source hierarchy for flexible configuration
10
+ - Carousel display with fade transition for visual polish
11
+ - Markdown-enabled message for rich introductory text
12
+ - Active-flag filtering to soft-delete without data removal
13
+
14
+ Required Fields (per item in the members array):
15
+ - name: Sponsor display name (used as alt text)
16
+ - image: Logo source — bare filename (resolved via image_base_path) or absolute URL
17
+ - url: Sponsor website URL
18
+
19
+ Optional Data Fields:
20
+ - image_base_path: Base path for bare filenames (default: /assets/img/base/)
21
+
22
+ Optional Inputs (from include):
23
+ - data: Sponsors data object (overrides all fallbacks)
24
+ - id: Carousel element ID (default: "sponsorsCarousel")
25
+ - with_title: Set false to suppress title/message block
26
+
27
+ Data Source Hierarchy (in priority order):
28
+ 1. include.data - Explicitly passed sponsors data object
29
+ 2. page.with_sponsors_data - Page front matter configuration
30
+ 3. site.data.sponsors - Site-specific sponsors configuration
31
+ 4. site.data.base.sponsors - Theme default sponsors data
32
+
33
+ Conditional Logic:
34
+ - Component renders only when page.with_sponsors is true
35
+ - Title/message block suppressed when include.with_title is false
36
+ - Members filtered by is_active != false
37
+ ================================================================================
38
+ {% endcomment %}
39
+
40
+ {%- assign sponsors = include.data | default: page.with_sponsors_data | default: site.data.sponsors | default: site.data.base.sponsors -%}
41
+ {%- assign sponsors_title = sponsors.title | default: site.data.base.sponsors_schema.properties.with_sponsors_data.properties.title.default -%}
42
+ {%- assign sponsors_icon = sponsors.icon | default: site.data.base.sponsors_schema.properties.with_sponsors_data.properties.icon.default -%}
43
+ {%- assign sponsors_message = sponsors.message | default: site.data.base.sponsors_schema.properties.with_sponsors_data.properties.message.default -%}
44
+ {%- assign sponsors_members = sponsors.members | default: site.data.base.sponsors_schema.properties.with_sponsors_data.properties.members.default -%}
45
+ {%- assign sponsors_image_base = sponsors.image_base_path | default: site.data.base.sponsors_schema.properties.with_sponsors_data.properties.image_base_path.default -%}
46
+
47
+ {%- assign carousel_id = include.id | default: "sponsorsCarousel" -%}
48
+
49
+ {%- if page.with_sponsors -%}
50
+ <div id="{{ carousel_id }}" class="d-flex flex-wrap mb-5">
51
+
52
+ {%- comment %} === Presentation (Begin) === {% endcomment %}
53
+ {%- if include.with_title != false %}
54
+ <div class="h6"><i class="{{ sponsors_icon }}"></i> {{ sponsors_title }}</div>
55
+ {{ sponsors_message | markdownify | decorate_links }}
56
+ {%- endif %}
57
+
58
+ <div class="carousel slide carousel-fade" data-bs-ride="carousel">
59
+ <div class="carousel-inner">
60
+ {%- for member in sponsors_members -%}
61
+ {%- if member.is_active != false %}
62
+ <div class="carousel-item{% if forloop.first %} active{% endif %}">
63
+ <div class="w-100 align-middle" style="height: 80px; width: 262px">
64
+ {%- if member.image contains "https://" or member.image contains "http://" -%}
65
+ <a href="{{ member.url }}"><img src="{{ member.image }}" class="rounded" style="max-height: 60px; max-width: 242px" alt="{{ member.name }}"></a>
66
+ {%- else -%}
67
+ <a href="{{ member.url }}"><img src="{{ site.baseurl }}{{ sponsors_image_base }}{{ member.image }}" class="rounded" style="max-height: 60px; max-width: 242px" alt="{{ member.name }}"></a>
68
+ {%- endif -%}
69
+ </div>
70
+ </div>
71
+ {%- endif -%}
72
+ {%- endfor %}
73
+ </div>
74
+ </div>
75
+ {%- comment %} === Presentation (End) === {% endcomment %}
76
+
77
+ </div>
78
+ {%- endif -%}
@@ -34,6 +34,7 @@ Conditional Logic:
34
34
  ================================================================================
35
35
  {% endcomment %}
36
36
 
37
+ {%- if page.with_title -%}
37
38
  {%- assign title_data = include.data | default: page.with_title_data | default: site.data.title | default: site.data.base.title %}
38
39
  {%- assign title_schema = site.data.base.title_schema.properties["with_title_data"].properties %}
39
40
 
@@ -50,3 +51,4 @@ Conditional Logic:
50
51
  <div class="{{ title_lead_class }}">{{ title_lead }}</div>
51
52
  {% endif %}
52
53
  </div>
54
+ {%- endif -%}
@@ -40,6 +40,7 @@ Data Source Hierarchy (in priority order):
40
40
  ================================================================================
41
41
  {% endcomment %}
42
42
 
43
+ {%- if page.with_toc -%}
43
44
  {%- assign toc = include.data | default: page.with_toc_data | default: site.data.toc | default: site.data.base.toc %}
44
45
  {%- assign toc_schema = site.data.base.toc_schema.properties["with_toc_data"].properties %}
45
46
 
@@ -89,3 +90,4 @@ Data Source Hierarchy (in priority order):
89
90
  </div>
90
91
  </div>
91
92
  </div>
93
+ {%- endif -%}
@@ -3,43 +3,24 @@
3
3
  {% include base/head.html.liquid -%}
4
4
  <body id="top" class="bg-body">
5
5
 
6
- {%- if page.with_navbar -%}
7
6
  {% include base/navbar.html.liquid -%}
8
- {%- endif -%}
9
7
 
10
- {% if page.with_project %}
11
8
  {% include base/project.html.liquid %}
12
- {% endif %}
13
9
 
14
- {%- if page.with_breakingnews and page.with_breakingnews_data.size > 0 -%}
15
10
  {% include base/breakingnews.html.liquid -%}
16
- {%- endif -%}
17
11
 
18
12
  <main class="container py-3">
19
13
 
20
- {%- if page.with_announcement and page.with_announcement_data.size > 0 -%}
21
14
  {%- include base/announcement.html.liquid %}
22
- {%- endif -%}
23
15
 
24
- {% if page.with_bits %}
25
16
  {% include base/bits.html.liquid %}
26
- {% endif %}
27
17
 
28
- {% if page.with_event %}
29
18
  {% include base/event.html.liquid %}
30
- {% endif %}
31
19
 
32
- {% if page.with_breadcrumb or page.with_locales %}
20
+ {% if page.with_breadcrumb %}
33
21
  <div class="row small mb-3">
34
22
  <div class="col">
35
- {% if page.with_breadcrumb %}
36
- {% include base/breadcrumb.html.liquid %}
37
- {% endif %}
38
- </div>
39
- <div class="col-auto">
40
- {% if page.with_locales %}
41
- {% include base/locales.html.liquid %}
42
- {% endif %}
23
+ {% include base/breadcrumb.html.liquid %}
43
24
  </div>
44
25
  </div>
45
26
  {% endif %}
@@ -63,7 +44,7 @@
63
44
  {% if page.with_toc %}
64
45
  <div class="row mb-3">
65
46
  <div class="{{ site.data.base.content.class | default: 'col' }}">
66
- {% include base/toc.html.liquid %}
47
+ {% include base/toc.html.liquid %}
67
48
  </div>
68
49
  </div>
69
50
  {% endif %}
@@ -79,35 +60,8 @@
79
60
  </main>
80
61
 
81
62
  {% if page.with_footer %}
82
- <footer class="footer small text-bg-dark">
83
-
84
- <div class="container">
85
- {% if page.with_shortcut %}
86
- <div class="row p-4 pb-0 text-bg-centos-purple-600">
87
- {% include base/shortcut.html.liquid %}
88
- </div>
89
- {% endif %}
90
-
91
- {% if page.with_social %}
92
- <div class="row p-4 text-light text-bg-centos-purple-700 border-top border-5 border-centos-purple-600 rounded-bottom">
93
- {% include base/social.html.liquid %}
94
- </div>
95
- {% endif %}
96
-
97
- {% if page.with_sponsors %}
98
- <div class="row mt-2">
99
- {% include sponsors/carousel.html -%}
100
- </div>
101
- {% endif %}
102
-
103
- {% if page.with_copyright %}
104
- <div class="row">
105
- {% include base/copyright.html.liquid %}
106
- </div>
107
- {% endif %}
108
-
109
- </div>
110
-
63
+ <footer class="footer small bg-dark text-centos-purple-100 pt-5">
64
+ {% include base/footer.html.liquid -%}
111
65
  </footer>
112
66
  {% endif %}
113
67