[{"data":1,"prerenderedAt":77},["Reactive",2],{"blog-post-markdown-variables-templating-complete-guide":3},{"slug":4,"title":5,"description":6,"excerpt":7,"date":8,"category":9,"author":10,"keywords":11,"readingMinutes":12,"html":13,"headings":14,"tools":52,"related":53},"markdown-variables-templating-complete-guide","Markdown Variables and Templating: Complete Guide for Dynamic Content and Reusable Components","Master Markdown variables, templating, and dynamic content generation using Jekyll, Hugo, MkDocs, and other platforms. Learn to create maintainable documentation with reusable components and data-driven content.","Variables and templating transform static Markdown into dynamic, maintainable documentation systems that eliminate repetition and enable sophisticated content management. While basic Markdown…","2025-08-27","Tutorial","Matthew Rathbone","markdown variables, markdown templating, dynamic markdown, jekyll variables, hugo templating, mkdocs variables, markdown includes, reusable markdown",18,"\u003Cp>Variables and templating transform static Markdown into dynamic, maintainable documentation systems that eliminate repetition and enable sophisticated content management. While basic Markdown provides excellent formatting capabilities, templating features allow you to create reusable components, manage complex data structures, and generate content programmatically across documentation platforms.\u003C/p>\n\u003Ch2 id=\"why-use-markdown-variables-and-templating\">Why Use Markdown Variables and Templating?\u003C/h2>\n\u003Cp>Variable-driven templating provides significant advantages for professional documentation:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Content Consistency\u003C/strong>: Maintain uniform information across multiple documents\u003C/li>\n\u003Cli>\u003Cstrong>Efficient Updates\u003C/strong>: Change values in one location to update entire site\u003C/li>\n\u003Cli>\u003Cstrong>Dynamic Generation\u003C/strong>: Create content from data sources and APIs\u003C/li>\n\u003Cli>\u003Cstrong>Reduced Maintenance\u003C/strong>: Eliminate duplicate content and manual synchronization\u003C/li>\n\u003Cli>\u003Cstrong>Professional Workflow\u003C/strong>: Enable collaborative documentation with clear content separation\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"platform-specific-variable-systems\">Platform-Specific Variable Systems\u003C/h2>\n\u003Ch3 id=\"jekyll-liquid-templating\">Jekyll Liquid Templating\u003C/h3>\n\u003Cp>Jekyll provides comprehensive variable support through Liquid templating engine:\u003C/p>\n\u003Ch4 id=\"site-variables-and-configuration\">Site Variables and Configuration\u003C/h4>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># _config.yml\u003C/span>\n\u003Cspan class=\"hljs-attr\">title:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Documentation Hub&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;2.1.0&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">api_url:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;https://api.example.com/v1&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">support_email:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;support@example.com&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># Custom site variables\u003C/span>\n\u003Cspan class=\"hljs-attr\">company:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;TechCorp&quot;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">address:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;123 Tech Street, Innovation City&quot;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">phone:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;+1 (555) 123-4567&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># Feature flags\u003C/span>\n\u003Cspan class=\"hljs-attr\">features:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">dark_mode:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n  \u003Cspan class=\"hljs-attr\">search:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n  \u003Cspan class=\"hljs-attr\">analytics:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># Environment-specific settings\u003C/span>\n\u003Cspan class=\"hljs-attr\">environments:\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">development\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">staging\u003C/span>  \n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">production\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch4 id=\"using-variables-in-content\">Using Variables in Content\u003C/h4>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\"># Welcome to {{ site.title }}\n\nCurrent version: **{{ site.version }}**\n\nFor technical support, contact us at {{ site.support_email }}.\n\n## API Integration\n\nBase URL: `{{ site.api_url }}`\n\n### Company Information\n\n**{{ site.company.name }}**  \n{{ site.company.address }}  \nPhone: {{ site.company.phone }}\n\n{% if site.features.dark_mode %}\n## Dark Mode Available\nThis documentation supports dark mode for better reading experience.\n{% endif %}\n\n{% unless site.features.analytics %}\n&gt; [!NOTE]\n&gt; Analytics are currently disabled for this environment.\n{% endunless %}\n\u003C/code>\u003C/pre>\u003Ch4 id=\"page-and-post-variables\">Page and Post Variables\u003C/h4>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">---\ntitle: &quot;API Authentication Guide&quot;\nversion: &quot;1.2&quot;\nauthor: &quot;Developer Team&quot;\ntags: [api, authentication, security]\ncustom_data:\n  complexity: &quot;intermediate&quot;\n  duration: &quot;15 minutes&quot;\n---\n\n# {{ page.title }}\n\n**Author**: {{ page.author }}  \n**Version**: {{ page.version }}  \n**Complexity**: {{ page.custom_data.complexity }}  \n**Estimated Time**: {{ page.custom_data.duration }}\n\n{% assign current_year = &quot;now&quot; | date: &quot;%Y&quot; %}\n*Last updated: {{ page.date | date: &quot;%B %d, %Y&quot; }}*  \n*Copyright © {{ current_year }} {{ site.company.name }}*\n\n## Tags\n{% for tag in page.tags %}\n- {{ tag | capitalize }}\n{% endfor %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"advanced-liquid-operations\">Advanced Liquid Operations\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\"># Dynamic Content Generation\n\n## Recent Updates\n{% assign recent_posts = site.posts | where_exp: &quot;post&quot;, &quot;post.date &gt; site.time | date: &#39;%s&#39; | minus: 2592000&quot; %}\n{% for post in recent_posts limit: 5 %}\n- [{{ post.title }}]({{ post.url }}) - {{ post.date | date: &quot;%B %d&quot; }}\n{% endfor %}\n\n## Environment Status\n{% case jekyll.environment %}\n{% when &#39;development&#39; %}\n&gt; [!WARNING]\n&gt; You are viewing the development version of this documentation.\n{% when &#39;production&#39; %}\n&gt; [!SUCCESS]  \n&gt; This is the live production documentation.\n{% else %}\n&gt; [!INFO]\n&gt; Environment: {{ jekyll.environment }}\n{% endcase %}\n\n## Feature Matrix\n{% assign features = &quot;search,analytics,comments,social_sharing&quot; | split: &quot;,&quot; %}\n\n| Feature | Status |\n|:--------|:-------|\n{% for feature in features %}\n{% assign feature_key = feature | replace: &quot;_&quot;, &quot;&quot; %}\n{% if site.features[feature] %}\n| {{ feature | replace: &quot;_&quot;, &quot; &quot; | capitalize }} | ✅ Enabled |\n{% else %}\n| {{ feature | replace: &quot;_&quot;, &quot; &quot; | capitalize }} | ❌ Disabled |\n{% endif %}\n{% endfor %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"data-files-integration\">Data Files Integration\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># _data/team.yml\u003C/span>\n\u003Cspan class=\"hljs-attr\">developers:\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Alice Johnson&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">role:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Senior Developer&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">email:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;alice@example.com&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">github:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;alicej&quot;\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Bob Smith&quot;\u003C/span>  \n    \u003Cspan class=\"hljs-attr\">role:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Frontend Specialist&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">email:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;bob@example.com&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">github:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;bobsmith&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">projects:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">active:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Web Portal&quot;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">status:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;In Development&quot;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">lead:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Alice Johnson&quot;\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Mobile App&quot;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">status:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Testing&quot;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">lead:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Bob Smith&quot;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">completed:\u003C/span>\n    \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;API Redesign&quot;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">status:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Complete&quot;\u003C/span>\n      \u003Cspan class=\"hljs-attr\">lead:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Alice Johnson&quot;\u003C/span>\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-liquid\"># Team Directory\n\n## Development Team\n{% for developer in site.data.team.developers %}\n### {{ developer.name }}\n- **Role**: {{ developer.role }}\n- **Contact**: [{{ developer.email }}](mailto:{{ developer.email }})\n- **GitHub**: [@{{ developer.github }}](https://github.com/{{ developer.github }})\n\n{% endfor %}\n\n## Active Projects\n{% for project in site.data.team.projects.active %}\n| {{ project.name }} | {{ project.status }} | {{ project.lead }} |\n{% endfor %}\n\n## Completed Projects  \n{% assign completed_count = site.data.team.projects.completed | size %}\nWe have successfully completed **{{ completed_count }}** projects:\n\n{% for project in site.data.team.projects.completed %}\n- **{{ project.name }}** (Lead: {{ project.lead }})\n{% endfor %}\n\u003C/code>\u003C/pre>\u003Ch2 id=\"hugo-templating-system\">Hugo Templating System\u003C/h2>\n\u003Cp>Hugo provides powerful templating with Go template engine:\u003C/p>\n\u003Ch3 id=\"site-configuration-variables\">Site Configuration Variables\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># config.yml\u003C/span>\n\u003Cspan class=\"hljs-attr\">title:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Hugo Documentation Site&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">baseURL:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;https://docs.example.com&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;3.2.1&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">params:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">company:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;InnovateTech&quot;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">api_version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;v2&quot;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">support_email:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;help@example.com&quot;\u003C/span>\n  \n  \u003Cspan class=\"hljs-attr\">features:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">search_enabled:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \u003Cspan class=\"hljs-attr\">multilingual:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \u003Cspan class=\"hljs-attr\">dark_mode:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n  \n  \u003Cspan class=\"hljs-attr\">social:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">github:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;https://github.com/company&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">twitter:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;@company&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">linkedin:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;company&quot;\u003C/span>\n\n  \u003Cspan class=\"hljs-attr\">environments:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">development:\u003C/span>\n      \u003Cspan class=\"hljs-attr\">debug:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n      \u003Cspan class=\"hljs-attr\">analytics:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n    \u003Cspan class=\"hljs-attr\">production:\u003C/span>\n      \u003Cspan class=\"hljs-attr\">debug:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n      \u003Cspan class=\"hljs-attr\">analytics:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"page-variables-and-front-matter\">Page Variables and Front Matter\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\n---\ntitle: &quot;Advanced Configuration Guide&quot;\ndate: 2025-08-27\nauthor: &quot;Technical Team&quot;\nversion: &quot;2.1&quot;\ncategories: [&quot;configuration&quot;, &quot;advanced&quot;]\ntags: [&quot;setup&quot;, &quot;deployment&quot;, &quot;optimization&quot;]\ncustom:\n  difficulty: &quot;advanced&quot;\n  estimated\u003Cspan class=\"hljs-emphasis\">_time: &quot;30 minutes&quot;\n  prerequisites: [&quot;basic setup&quot;, &quot;system administration&quot;]\n---\n\n# {{ .Title }}\n\n\u003Cspan class=\"hljs-strong\">**Version**\u003C/span>: {{ .Params.version }}  \n\u003Cspan class=\"hljs-strong\">**Author**\u003C/span>: {{ .Params.author }}  \n\u003Cspan class=\"hljs-strong\">**Difficulty**\u003C/span>: {{ .Params.custom.difficulty | title }}  \n\u003Cspan class=\"hljs-strong\">**Time Required**\u003C/span>: {{ .Params.custom.estimated_\u003C/span>time }}\n\n\u003Cspan class=\"hljs-emphasis\">*Published: {{ .Date.Format &quot;January 2, 2006&quot; }}*\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Prerequisites\u003C/span>\n{{ range .Params.custom.prerequisites }}\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> {{ . | title }}\n{{ end }}\n\n\u003Cspan class=\"hljs-section\">## Categories\u003C/span>\nThis guide covers:\n{{ range .Params.categories }}\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> {{ . | humanize }}\n{{ end }}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"site-wide-variables-and-configuration\">Site-Wide Variables and Configuration\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\n\u003Cspan class=\"hljs-section\"># Welcome to {{ .Site.Title }}\u003C/span>\n\nCurrent documentation version: \u003Cspan class=\"hljs-strong\">**{{ .Site.Params.api\u003Cspan class=\"hljs-emphasis\">_version }}**\n\n## Company Information\n**{{ .Site.Params.company }}**  \nSupport: [\u003Cspan class=\"hljs-string\">{{ .Site.Params.support_email }}\u003C/span>](\u003Cspan class=\"hljs-link\">mailto:{{ .Site.Params.support_email }}\u003C/span>)\n\n## Connect With Us\n- GitHub: [\u003Cspan class=\"hljs-string\">{{ .Site.Params.social.github }}\u003C/span>](\u003Cspan class=\"hljs-link\">{{ .Site.Params.social.github }}\u003C/span>)\n- Twitter: [\u003Cspan class=\"hljs-string\">{{ .Site.Params.social.twitter }}\u003C/span>](\u003Cspan class=\"hljs-link\">https://twitter.com/{{ .Site.Params.social.twitter | replaceRE &quot;^@&quot; &quot;&quot; }}\u003C/span>)\n\n{{ if .Site.Params.features.search_\u003C/span>enabled }}\n## Search Available\nUse the search function to quickly find relevant documentation.\n{{ end }}\n\n{{ $currentEnv := getenv &quot;HUGO\u003Cspan class=\"hljs-emphasis\">_ENV&quot; | default &quot;development&quot; }}\n{{ if eq $currentEnv &quot;development&quot; }}\n&gt; [!WARNING]  \n&gt; You are viewing the development version of this site.\n{{ end }}\n\u003C/span>\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"data-driven-content-generation\">Data-Driven Content Generation\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># data/products.yml\u003C/span>\n\u003Cspan class=\"hljs-attr\">products:\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;CloudSync Pro&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;2.1.0&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">status:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;stable&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">features:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Real-time synchronization&quot;\u003C/span> \n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">&quot;End-to-end encryption&quot;\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Multi-device support&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">pricing:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;$29/month&quot;\u003C/span>\n    \n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;DataAnalyzer&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;1.5.2&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">status:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;beta&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">features:\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Advanced analytics&quot;\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Custom dashboards&quot;\u003C/span>\n      \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-string\">&quot;API integration&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">pricing:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;$49/month&quot;\u003C/span>\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\n\u003Cspan class=\"hljs-section\"># Product Catalog\u003C/span>\n\n{{ range .Site.Data.products.products }}\n\u003Cspan class=\"hljs-section\">## {{ .name }} v{{ .version }}\u003C/span>\n\n\u003Cspan class=\"hljs-strong\">**Status**\u003C/span>: {{ .status | title }}  \n\u003Cspan class=\"hljs-strong\">**Pricing**\u003C/span>: {{ .pricing }}\n\n\u003Cspan class=\"hljs-section\">### Features\u003C/span>\n{{ range .features }}\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> {{ . }}\n{{ end }}\n\n---\n{{ end }}\n\n\u003Cspan class=\"hljs-section\">## Summary\u003C/span>\n\n{{ $stableCount := 0 }}\n{{ $betaCount := 0 }}\n{{ range .Site.Data.products.products }}\n  {{ if eq .status &quot;stable&quot; }}\n\u003Cspan class=\"hljs-code\">    {{ $stableCount = add $stableCount 1 }}\n  {{ else if eq .status &quot;beta&quot; }}\n    {{ $betaCount = add $betaCount 1 }}\n  {{ end }}\n{{ end }}\n\u003C/span>\nWe offer \u003Cspan class=\"hljs-strong\">**{{ len .Site.Data.products.products }}**\u003C/span> products:\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> {{ $stableCount }} stable releases\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> {{ $betaCount }} beta versions\n\u003C/code>\u003C/pre>\u003Ch2 id=\"mkdocs-variables-and-macros\">MkDocs Variables and Macros\u003C/h2>\n\u003Cp>MkDocs supports variables through the macros plugin:\u003C/p>\n\u003Ch3 id=\"configuration-setup\">Configuration Setup\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># mkdocs.yml\u003C/span>\n\u003Cspan class=\"hljs-attr\">site_name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Technical Documentation&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">site_url:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;https://docs.techcorp.com&quot;\u003C/span>\n\u003Cspan class=\"hljs-attr\">site_description:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Comprehensive technical documentation&quot;\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">extra:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;4.2.1&quot;\u003C/span>\n  \u003Cspan class=\"hljs-attr\">company:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;TechCorp Solutions&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">email:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;support@techcorp.com&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">phone:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;+1-800-TECH&quot;\u003C/span>\n  \n  \u003Cspan class=\"hljs-attr\">api:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">base_url:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;https://api.techcorp.com&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">current_version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;v3&quot;\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">features:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">authentication:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \u003Cspan class=\"hljs-attr\">rate_limiting:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \u003Cspan class=\"hljs-attr\">caching:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n\n\u003Cspan class=\"hljs-attr\">plugins:\u003C/span>\n  \u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-attr\">macros:\u003C/span>\n      \u003Cspan class=\"hljs-attr\">module_name:\u003C/span> \u003Cspan class=\"hljs-string\">custom_macros\u003C/span>\n      \u003Cspan class=\"hljs-attr\">include_dir:\u003C/span> \u003Cspan class=\"hljs-string\">includes\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"using-variables-in-content-1\">Using Variables in Content\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># {{ config.site\u003Cspan class=\"hljs-emphasis\">_name }}\n\nWelcome to the official documentation for {{ config.extra.company.name }}.\n\n\u003Cspan class=\"hljs-strong\">**Current Version**\u003C/span>: {{ config.extra.version }}  \n\u003Cspan class=\"hljs-strong\">**API Base URL**\u003C/span>: {{ config.extra.api.base_\u003C/span>url }}/{{ config.extra.api.current\u003Cspan class=\"hljs-emphasis\">_version }}\n\n## Support Information\n\nFor technical support:\n- \u003Cspan class=\"hljs-strong\">**Email**\u003C/span>: {{ config.extra.company.email }}\n- \u003Cspan class=\"hljs-strong\">**Phone**\u003C/span>: {{ config.extra.company.phone }}\n\n{% if config.extra.features.authentication %}\n## Authentication Required\nThis API requires authentication for all endpoints.\n{% endif %}\n\n{% if config.extra.features.rate_\u003C/span>limiting %}\u003C/span>\n\u003Cspan class=\"hljs-section\">## Rate Limiting\u003C/span>\nAPI calls are subject to rate limiting policies.\n{% endif %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"custom-macros-and-functions\">Custom Macros and Functions\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-python\">\u003Cspan class=\"hljs-comment\"># custom_macros.py\u003C/span>\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">define_env\u003C/span>(\u003Cspan class=\"hljs-params\">env\u003C/span>):\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Define custom macros for MkDocs&quot;&quot;&quot;\u003C/span>\n    \n\u003Cspan class=\"hljs-meta\">    @env.macro\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">api_endpoint\u003C/span>(\u003Cspan class=\"hljs-params\">path, method=\u003Cspan class=\"hljs-string\">&quot;GET&quot;\u003C/span>\u003C/span>):\n        base_url = env.conf[\u003Cspan class=\"hljs-string\">&#x27;extra&#x27;\u003C/span>][\u003Cspan class=\"hljs-string\">&#x27;api&#x27;\u003C/span>][\u003Cspan class=\"hljs-string\">&#x27;base_url&#x27;\u003C/span>]\n        version = env.conf[\u003Cspan class=\"hljs-string\">&#x27;extra&#x27;\u003C/span>][\u003Cspan class=\"hljs-string\">&#x27;api&#x27;\u003C/span>][\u003Cspan class=\"hljs-string\">&#x27;current_version&#x27;\u003C/span>]\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">f&quot;**\u003Cspan class=\"hljs-subst\">{method}\u003C/span>** `\u003Cspan class=\"hljs-subst\">{base_url}\u003C/span>/\u003Cspan class=\"hljs-subst\">{version}\u003C/span>/\u003Cspan class=\"hljs-subst\">{path}\u003C/span>`&quot;\u003C/span>\n    \n\u003Cspan class=\"hljs-meta\">    @env.macro  \u003C/span>\n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">status_badge\u003C/span>(\u003Cspan class=\"hljs-params\">status\u003C/span>):\n        colors = {\n            \u003Cspan class=\"hljs-string\">&quot;stable&quot;\u003C/span>: \u003Cspan class=\"hljs-string\">&quot;green&quot;\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&quot;beta&quot;\u003C/span>: \u003Cspan class=\"hljs-string\">&quot;yellow&quot;\u003C/span>, \n            \u003Cspan class=\"hljs-string\">&quot;deprecated&quot;\u003C/span>: \u003Cspan class=\"hljs-string\">&quot;red&quot;\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&quot;new&quot;\u003C/span>: \u003Cspan class=\"hljs-string\">&quot;blue&quot;\u003C/span>\n        }\n        color = colors.get(status.lower(), \u003Cspan class=\"hljs-string\">&quot;gray&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">f&quot;![\u003Cspan class=\"hljs-subst\">{status}\u003C/span>](https://img.shields.io/badge/status-\u003Cspan class=\"hljs-subst\">{status}\u003C/span>-\u003Cspan class=\"hljs-subst\">{color}\u003C/span>)&quot;\u003C/span>\n    \n\u003Cspan class=\"hljs-meta\">    @env.macro\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">feature_matrix\u003C/span>(\u003Cspan class=\"hljs-params\">features\u003C/span>):\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Generate feature comparison table&quot;&quot;&quot;\u003C/span>\n        result = \u003Cspan class=\"hljs-string\">&quot;| Feature | Status |\\n|:--------|:-------|\\n&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> feature, enabled \u003Cspan class=\"hljs-keyword\">in\u003C/span> features.items():\n            status = \u003Cspan class=\"hljs-string\">&quot;✅ Enabled&quot;\u003C/span> \u003Cspan class=\"hljs-keyword\">if\u003C/span> enabled \u003Cspan class=\"hljs-keyword\">else\u003C/span> \u003Cspan class=\"hljs-string\">&quot;❌ Disabled&quot;\u003C/span>\n            result += \u003Cspan class=\"hljs-string\">f&quot;| \u003Cspan class=\"hljs-subst\">{feature.replace(\u003Cspan class=\"hljs-string\">&#x27;_&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>).title()}\u003C/span> | \u003Cspan class=\"hljs-subst\">{status}\u003C/span> |\\n&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> result\n    \n\u003Cspan class=\"hljs-meta\">    @env.variable\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">current_year\u003C/span>():\n        \u003Cspan class=\"hljs-keyword\">from\u003C/span> datetime \u003Cspan class=\"hljs-keyword\">import\u003C/span> datetime\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> datetime.now().year\n\u003C/code>\u003C/pre>\u003Ch3 id=\"advanced-macro-usage\">Advanced Macro Usage\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># API Documentation\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Endpoints\u003C/span>\n\n\u003Cspan class=\"hljs-section\">### User Management\u003C/span>\n{{ api\u003Cspan class=\"hljs-emphasis\">_endpoint(&quot;users&quot;, &quot;GET&quot;) }}\n{{ api_\u003C/span>endpoint(&quot;users&quot;, &quot;POST&quot;) }}\n{{ api\u003Cspan class=\"hljs-emphasis\">_endpoint(&quot;users/{id}&quot;, &quot;PUT&quot;) }}\n\n## Status Information\n\nAPI Status: {{ status_\u003C/span>badge(&quot;stable&quot;) }}\nDocumentation Status: {{ status\u003Cspan class=\"hljs-emphasis\">_badge(&quot;new&quot;) }}\n\n## Feature Availability\n\n{{ feature_\u003C/span>matrix(config.extra.features) }}\n\n---\n\u003Cspan class=\"hljs-emphasis\">*Documentation generated in {{ current_year }}, {{ config.extra.company.name }}*\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"obsidian-templating\">Obsidian Templating\u003C/h2>\n\u003Cp>Obsidian uses a template-based system for note generation:\u003C/p>\n\u003Ch3 id=\"template-files\">Template Files\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">---\n\u003Cspan class=\"hljs-section\"># templates/project-template.md\u003C/span>\nproject: &quot;{{title}}&quot;\nstatus: &quot;planning&quot;\ncreated: &quot;{{date}}&quot;\n\u003Cspan class=\"hljs-section\">tags: [&quot;project&quot;, &quot;{{title|lower}}&quot;]\n---\u003C/span>\n\n\u003Cspan class=\"hljs-section\"># Project: {{title}}\u003C/span>\n\n\u003Cspan class=\"hljs-strong\">**Status**\u003C/span>: {{status|default:&quot;planning&quot;}}  \n\u003Cspan class=\"hljs-strong\">**Created**\u003C/span>: {{date:YYYY-MM-DD}}  \n\u003Cspan class=\"hljs-strong\">**Last Modified**\u003C/span>: {{date:YYYY-MM-DD HH:mm}}\n\n\u003Cspan class=\"hljs-section\">## Project Overview\u003C/span>\n\n\u003Cspan class=\"hljs-section\">### Objectives\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [ ] Define project scope\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [ ] Identify key stakeholders\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [ ] Establish timeline\n\n\u003Cspan class=\"hljs-section\">### Resources\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Team Size**\u003C/span>: \n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Budget**\u003C/span>: \n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Timeline**\u003C/span>: \n\n\u003Cspan class=\"hljs-section\">### Stakeholders\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Project Manager**\u003C/span>: \n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Technical Lead**\u003C/span>: \n\u003Cspan class=\"hljs-bullet\">-\u003C/span> \u003Cspan class=\"hljs-strong\">**Client Contact**\u003C/span>: \n\n\u003Cspan class=\"hljs-section\">## Status Updates\u003C/span>\n\n\u003Cspan class=\"hljs-section\">### {{date:YYYY-MM-DD}}\u003C/span>\nInitial project setup completed.\n\n\u003Cspan class=\"hljs-section\">## Links and References\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [[Project Index]]\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [[Team Directory]]\n\n\u003Cspan class=\"hljs-section\">#project/{{title|lower}} #status/{{status}}\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"dynamic-content-generation\">Dynamic Content Generation\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">---\n\u003Cspan class=\"hljs-section\"># templates/daily-note.md\u003C/span>\n---\n\n\u003Cspan class=\"hljs-section\"># Daily Note: {{date:dddd, MMMM Do YYYY}}\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Quick Stats\u003C/span>\n\u003Cspan class=\"hljs-strong\">**Today&#x27;s Date**\u003C/span>: {{date:YYYY-MM-DD}}  \n\u003Cspan class=\"hljs-strong\">**Day of Year**\u003C/span>: {{date:DDD}}  \n\u003Cspan class=\"hljs-strong\">**Week**\u003C/span>: {{date:W}}\n\n\u003Cspan class=\"hljs-section\">## Daily Agenda\u003C/span>\n\n\u003Cspan class=\"hljs-section\">### Morning (9:00 - 12:00)\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [ ] \n\n\u003Cspan class=\"hljs-section\">### Afternoon (13:00 - 17:00)\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [ ] \n\n\u003Cspan class=\"hljs-section\">### Evening Review\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [ ] Review completed tasks\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [ ] Plan tomorrow&#x27;s priorities\n\n\u003Cspan class=\"hljs-section\">## Notes and Observations\u003C/span>\n\n\n\u003Cspan class=\"hljs-section\">## Links\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [[{{date:YYYY-MM-DD|moment(&quot;YYYY-MM-DD&quot;).subtract(1, &#x27;days&#x27;).format(&quot;YYYY-MM-DD&quot;)}}|Yesterday]]\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [[{{date:YYYY-MM-DD|moment(&quot;YYYY-MM-DD&quot;).add(1, &#x27;days&#x27;).format(&quot;YYYY-MM-DD&quot;)}}|Tomorrow]]\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> [[Weekly Review {{date:YYYY-[W]W}}]]\n\n\u003Cspan class=\"hljs-section\">#daily-notes #{{date:YYYY/MM}}\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"advanced-templating-techniques\">Advanced Templating Techniques\u003C/h2>\n\u003Ch3 id=\"conditional-content-generation\">Conditional Content Generation\u003C/h3>\n\u003Ch4 id=\"jekyll-advanced-conditionals\">Jekyll Advanced Conditionals\u003C/h4>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">---\nproduct: &quot;CloudSync&quot;\ntier: &quot;enterprise&quot;\nfeatures: [&quot;encryption&quot;, &quot;api&quot;, &quot;support&quot;]\n---\n\n# {{ page.product }}\n\n{% assign is_enterprise = false %}\n{% if page.tier == &quot;enterprise&quot; %}\n  {% assign is_enterprise = true %}\n{% endif %}\n\n## Available Features\n\n{% if page.features contains &quot;encryption&quot; %}\n### 🔐 Enterprise Encryption\nAdvanced AES-256 encryption with key management.\n{% endif %}\n\n{% if page.features contains &quot;api&quot; and is_enterprise %}\n### 🔌 API Access\nFull REST API access with {{ page.tier }} tier limits.\n\n**Rate Limits**:\n{% if page.tier == &quot;enterprise&quot; %}\n- 10,000 requests per hour\n- Burst capacity: 100 requests per minute\n{% else %}\n- 1,000 requests per hour  \n- Burst capacity: 20 requests per minute\n{% endif %}\n{% endif %}\n\n{% if page.features contains &quot;support&quot; %}\n### 📞 Support Level\n{% case page.tier %}\n{% when &quot;basic&quot; %}\nCommunity forum support only.\n{% when &quot;professional&quot; %}\nEmail support with 48-hour response time.\n{% when &quot;enterprise&quot; %}\n24/7 phone and email support with dedicated account manager.\n{% endcase %}\n{% endif %}\n\u003C/code>\u003C/pre>\u003Ch4 id=\"hugo-conditional-logic\">Hugo Conditional Logic\u003C/h4>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">---\nproduct\u003Cspan class=\"hljs-emphasis\">_tier: &quot;premium&quot;\nuser_\u003C/span>count: 150\nfeatures:\n  sso: true\n  analytics: true\n  api\u003Cspan class=\"hljs-emphasis\">_access: false\nregions: [&quot;us-east&quot;, &quot;eu-west&quot;, &quot;asia-pacific&quot;]\n---\n\n# Deployment Configuration\n\n{{ $tier := .Params.product_\u003C/span>tier }}\n{{ $userCount := .Params.user\u003Cspan class=\"hljs-emphasis\">_count }}\n\n## Recommended Setup\n\n{{ if gt $userCount 100 }}\n### High-Scale Configuration\nYour user count ({{ $userCount }}) requires enterprise-grade setup.\n\n\u003Cspan class=\"hljs-strong\">**Recommended Infrastructure**\u003C/span>:\n- Load balancer with auto-scaling\n- Multi-region deployment\n- Dedicated database cluster\n{{ else if gt $userCount 50 }}\n### Medium-Scale Configuration  \nStandard setup suitable for {{ $userCount }} users.\n{{ else }}\n### Small-Scale Configuration\nBasic setup for up to {{ $userCount }} users.\n{{ end }}\n\n## Feature Configuration\n\n{{ range $feature, $enabled := .Params.features }}\n{{ if $enabled }}\n### {{ $feature | title | replaceRE &quot;_\u003C/span>&quot; &quot; &quot; }}\n{{ if eq $feature &quot;sso&quot; }}\nSingle Sign-On integration available for {{ $tier }} tier.\n{{ else if eq $feature &quot;analytics&quot; }}\nAdvanced analytics dashboard included.\n{{ else if eq $feature &quot;api\u003Cspan class=\"hljs-emphasis\">_access&quot; }}\nFull API access with tier-appropriate limits.\n{{ end }}\n{{ end }}\n{{ end }}\n\n## Regional Deployment\nAvailable regions:\n{{ range .Params.regions }}\n- {{ . | upper }}\n{{ end }}\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"data-processing-and-transformation\">Data Processing and Transformation\u003C/h3>\n\u003Ch4 id=\"complex-data-manipulation\">Complex Data Manipulation\u003C/h4>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">---\nservers:\n  - name: &quot;web-01&quot;\n    type: &quot;web&quot;\n    status: &quot;active&quot;\n    cpu: 75\n    memory: 60\n    disk: 45\n  - name: &quot;db-01&quot; \n    type: &quot;database&quot;\n    status: &quot;active&quot;\n    cpu: 45\n    memory: 85\n    disk: 70\n  - name: &quot;cache-01&quot;\n    type: &quot;cache&quot;  \n    status: &quot;maintenance&quot;\n    cpu: 20\n    memory: 30\n    disk: 15\n---\n\n# Server Status Dashboard\n\n## Overview\n\n{% assign active_servers = page.servers | where: &quot;status&quot;, &quot;active&quot; %}\n{% assign maintenance_servers = page.servers | where: &quot;status&quot;, &quot;maintenance&quot; %}\n\n**Active Servers**: {{ active_servers | size }}  \n**Under Maintenance**: {{ maintenance_servers | size }}  \n**Total Servers**: {{ page.servers | size }}\n\n## Active Servers\n\n| Server | Type | CPU % | Memory % | Disk % | Status |\n|:-------|:-----|------:|---------:|-------:|:-------|\n{% for server in active_servers %}\n{% assign cpu_status = &quot;🟢&quot; %}\n{% assign memory_status = &quot;🟢&quot; %}\n{% assign disk_status = &quot;🟢&quot; %}\n\n{% if server.cpu &gt; 80 %}{% assign cpu_status = &quot;🔴&quot; %}\n{% elsif server.cpu &gt; 60 %}{% assign cpu_status = &quot;🟡&quot; %}\n{% endif %}\n\n{% if server.memory &gt; 85 %}{% assign memory_status = &quot;🔴&quot; %}\n{% elsif server.memory &gt; 70 %}{% assign memory_status = &quot;🟡&quot; %}\n{% endif %}\n\n{% if server.disk &gt; 80 %}{% assign disk_status = &quot;🔴&quot; %}\n{% elsif server.disk &gt; 60 %}{% assign disk_status = &quot;🟡&quot; %}\n{% endif %}\n\n| {{ server.name }} | {{ server.type | capitalize }} | {{ server.cpu }}% {{ cpu_status }} | {{ server.memory }}% {{ memory_status }} | {{ server.disk }}% {{ disk_status }} | {{ server.status | capitalize }} |\n{% endfor %}\n\n## Resource Alerts\n\n{% assign high_cpu_servers = page.servers | where_exp: &quot;server&quot;, &quot;server.cpu &gt; 75&quot; %}\n{% assign high_memory_servers = page.servers | where_exp: &quot;server&quot;, &quot;server.memory &gt; 80&quot; %}\n{% assign high_disk_servers = page.servers | where_exp: &quot;server&quot;, &quot;server.disk &gt; 75&quot; %}\n\n{% if high_cpu_servers.size &gt; 0 %}\n&gt; [!WARNING]\n&gt; **High CPU Usage**: {{ high_cpu_servers | map: &quot;name&quot; | join: &quot;, &quot; }}\n{% endif %}\n\n{% if high_memory_servers.size &gt; 0 %}\n&gt; [!DANGER]\n&gt; **Critical Memory Usage**: {{ high_memory_servers | map: &quot;name&quot; | join: &quot;, &quot; }}\n{% endif %}\n\n{% if high_disk_servers.size &gt; 0 %}\n&gt; [!WARNING]  \n&gt; **High Disk Usage**: {{ high_disk_servers | map: &quot;name&quot; | join: &quot;, &quot; }}\n{% endif %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"external-data-integration\">External Data Integration\u003C/h3>\n\u003Ch4 id=\"api-data-integration\">API Data Integration\u003C/h4>\n\u003Cpre>\u003Ccode class=\"hljs language-python\">\u003Cspan class=\"hljs-comment\"># Hugo external data integration\u003C/span>\n\u003Cspan class=\"hljs-comment\"># data/github_releases.py\u003C/span>\n\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> requests\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> json\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> os\n\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">fetch_github_releases\u003C/span>():\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Fetch latest releases from GitHub API&quot;&quot;&quot;\u003C/span>\n    url = \u003Cspan class=\"hljs-string\">&quot;https://api.github.com/repos/company/product/releases&quot;\u003C/span>\n    headers = {\n        \u003Cspan class=\"hljs-string\">&#x27;Authorization&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">f&#x27;token \u003Cspan class=\"hljs-subst\">{os.getenv(\u003Cspan class=\"hljs-string\">&quot;GITHUB_TOKEN&quot;\u003C/span>)}\u003C/span>&#x27;\u003C/span>,\n        \u003Cspan class=\"hljs-string\">&#x27;Accept&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;application/vnd.github.v3+json&#x27;\u003C/span>\n    }\n    \n    \u003Cspan class=\"hljs-keyword\">try\u003C/span>:\n        response = requests.get(url, headers=headers)\n        response.raise_for_status()\n        releases = response.json()\n        \n        \u003Cspan class=\"hljs-comment\"># Process and format data\u003C/span>\n        processed_releases = []\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> release \u003Cspan class=\"hljs-keyword\">in\u003C/span> releases[:\u003Cspan class=\"hljs-number\">5\u003C/span>]:  \u003Cspan class=\"hljs-comment\"># Latest 5 releases\u003C/span>\n            processed_releases.append({\n                \u003Cspan class=\"hljs-string\">&#x27;name&#x27;\u003C/span>: release[\u003Cspan class=\"hljs-string\">&#x27;name&#x27;\u003C/span>],\n                \u003Cspan class=\"hljs-string\">&#x27;tag&#x27;\u003C/span>: release[\u003Cspan class=\"hljs-string\">&#x27;tag_name&#x27;\u003C/span>],\n                \u003Cspan class=\"hljs-string\">&#x27;published&#x27;\u003C/span>: release[\u003Cspan class=\"hljs-string\">&#x27;published_at&#x27;\u003C/span>][:\u003Cspan class=\"hljs-number\">10\u003C/span>],\n                \u003Cspan class=\"hljs-string\">&#x27;download_url&#x27;\u003C/span>: release[\u003Cspan class=\"hljs-string\">&#x27;html_url&#x27;\u003C/span>],\n                \u003Cspan class=\"hljs-string\">&#x27;is_prerelease&#x27;\u003C/span>: release[\u003Cspan class=\"hljs-string\">&#x27;prerelease&#x27;\u003C/span>]\n            })\n            \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> processed_releases\n        \n    \u003Cspan class=\"hljs-keyword\">except\u003C/span> Exception \u003Cspan class=\"hljs-keyword\">as\u003C/span> e:\n        \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Error fetching releases: \u003Cspan class=\"hljs-subst\">{e}\u003C/span>&quot;\u003C/span>)\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> []\n\n\u003Cspan class=\"hljs-keyword\">if\u003C/span> __name__ == \u003Cspan class=\"hljs-string\">&quot;__main__&quot;\u003C/span>:\n    releases = fetch_github_releases()\n    \n    \u003Cspan class=\"hljs-comment\"># Write to Hugo data file\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;data/releases.json&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;w&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n        json.dump({\u003Cspan class=\"hljs-string\">&#x27;releases&#x27;\u003C/span>: releases}, f, indent=\u003Cspan class=\"hljs-number\">2\u003C/span>)\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># Release History\u003C/span>\n\n{{ range .Site.Data.releases.releases }}\n\u003Cspan class=\"hljs-section\">## {{ .name }} ({{ .tag }})\u003C/span>\n\n\u003Cspan class=\"hljs-strong\">**Released**\u003C/span>: {{ .published }}  \n\u003Cspan class=\"hljs-strong\">**Type**\u003C/span>: {{ if .is\u003Cspan class=\"hljs-emphasis\">_prerelease }}Pre-release{{ else }}Stable{{ end }}\n\n[\u003Cspan class=\"hljs-string\">Download\u003C/span>](\u003Cspan class=\"hljs-link\">{{ .download_url }}\u003C/span>)\n\n---\n{{ end }}\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch4 id=\"database-integration\">Database Integration\u003C/h4>\n\u003Cpre>\u003Ccode class=\"hljs language-python\">\u003Cspan class=\"hljs-comment\"># MkDocs database integration macro\u003C/span>\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> sqlite3\n\u003Cspan class=\"hljs-keyword\">from\u003C/span> datetime \u003Cspan class=\"hljs-keyword\">import\u003C/span> datetime\n\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">define_env\u003C/span>(\u003Cspan class=\"hljs-params\">env\u003C/span>):\n\u003Cspan class=\"hljs-meta\">    @env.macro\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">query_database\u003C/span>(\u003Cspan class=\"hljs-params\">query, db_path=\u003Cspan class=\"hljs-string\">&quot;data/docs.db&quot;\u003C/span>\u003C/span>):\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Execute database query and return formatted results&quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">try\u003C/span>:\n            conn = sqlite3.connect(db_path)\n            conn.row_factory = sqlite3.Row\n            cursor = conn.cursor()\n            cursor.execute(query)\n            \n            results = cursor.fetchall()\n            conn.close()\n            \n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> results:\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&quot;*No results found*&quot;\u003C/span>\n            \n            \u003Cspan class=\"hljs-comment\"># Convert to markdown table\u003C/span>\n            headers = \u003Cspan class=\"hljs-built_in\">list\u003C/span>(results[\u003Cspan class=\"hljs-number\">0\u003C/span>].keys())\n            table = \u003Cspan class=\"hljs-string\">&quot;| &quot;\u003C/span> + \u003Cspan class=\"hljs-string\">&quot; | &quot;\u003C/span>.join(headers) + \u003Cspan class=\"hljs-string\">&quot; |\\n&quot;\u003C/span>\n            table += \u003Cspan class=\"hljs-string\">&quot;|&quot;\u003C/span> + \u003Cspan class=\"hljs-string\">&quot;|&quot;\u003C/span>.join([\u003Cspan class=\"hljs-string\">&quot;:---&quot;\u003C/span>] * \u003Cspan class=\"hljs-built_in\">len\u003C/span>(headers)) + \u003Cspan class=\"hljs-string\">&quot;|\\n&quot;\u003C/span>\n            \n            \u003Cspan class=\"hljs-keyword\">for\u003C/span> row \u003Cspan class=\"hljs-keyword\">in\u003C/span> results:\n                values = [\u003Cspan class=\"hljs-built_in\">str\u003C/span>(row[header]) \u003Cspan class=\"hljs-keyword\">for\u003C/span> header \u003Cspan class=\"hljs-keyword\">in\u003C/span> headers]\n                table += \u003Cspan class=\"hljs-string\">&quot;| &quot;\u003C/span> + \u003Cspan class=\"hljs-string\">&quot; | &quot;\u003C/span>.join(values) + \u003Cspan class=\"hljs-string\">&quot; |\\n&quot;\u003C/span>\n            \n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> table\n            \n        \u003Cspan class=\"hljs-keyword\">except\u003C/span> Exception \u003Cspan class=\"hljs-keyword\">as\u003C/span> e:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">f&quot;*Database error: \u003Cspan class=\"hljs-subst\">{e}\u003C/span>*&quot;\u003C/span>\n    \n\u003Cspan class=\"hljs-meta\">    @env.macro\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">user_statistics\u003C/span>():\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Get user statistics from database&quot;&quot;&quot;\u003C/span>\n        query = \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;\n        SELECT \n            status,\n            COUNT(*) as count,\n            AVG(last_login_days) as avg_last_login\n        FROM users \n        GROUP BY status\n        ORDER BY count DESC\n        &quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> query_database(query)\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># User Analytics Dashboard\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Current User Statistics\u003C/span>\n\n{{ user\u003Cspan class=\"hljs-emphasis\">_statistics() }}\n\n## Recent Activity\n\n{{ query_\u003C/span>database(&quot;SELECT username, action, timestamp FROM activity\u003Cspan class=\"hljs-emphasis\">_log ORDER BY timestamp DESC LIMIT 10&quot;) }}\n\n*Data updated: {{ current_\u003C/span>year }}-{{ &quot;now&quot; | date: &quot;%m-%d&quot; }}\u003Cspan class=\"hljs-emphasis\">*\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"content-includes-and-reusable-components\">Content Includes and Reusable Components\u003C/h2>\n\u003Ch3 id=\"jekyll-includes-system\">Jekyll Includes System\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-comment\">&lt;!-- _includes/alert.html --&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;alert alert-{{ include.type | default: &#x27;info&#x27; }}&quot;\u003C/span>&gt;\u003C/span>\n  {% if include.title %}\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h4\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;alert-title&quot;\u003C/span>&gt;\u003C/span>{{ include.title }}\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h4\u003C/span>&gt;\u003C/span>\n  {% endif %}\n  {{ include.content | markdownify }}\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-comment\">&lt;!-- _includes/code_block.html --&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;code-block&quot;\u003C/span>&gt;\u003C/span>\n  {% if include.title %}\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;code-title&quot;\u003C/span>&gt;\u003C/span>{{ include.title }}\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  {% endif %}\n  {% if include.language %}\n  ```{{ include.language }}\n  {{ include.code }}\n\u003C/code>\u003C/pre>\u003Cp>  {% else %}\u003C/p>\n\u003Cpre>\u003Ccode>{{ include.code }}\n\u003C/code>\u003C/pre>\u003Cp>  {% endif %}\u003Cbr>  {% if include.caption %}\u003Cbr>  \u003Cdiv class=\"code-caption\">{{ include.caption }}\u003C/div>\u003Cbr>  {% endif %}\u003C/p>\n\u003C/div>\n```\n\n\n\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">&lt;!-- Usage in posts --&gt;\n{% include alert.html type=&quot;warning&quot; title=&quot;Important Notice&quot; content=&quot;Always backup your database before major updates.&quot; %}\n\n{% capture api_example %}\ncurl -X GET &quot;https://api.example.com/users&quot; \\\n     -H &quot;Authorization: Bearer TOKEN&quot; \\\n     -H &quot;Content-Type: application/json&quot;\n{% endcapture %}\n\n{% include code_block.html \n   title=&quot;Get Users API Call&quot; \n   language=&quot;bash&quot; \n   code=api_example \n   caption=&quot;Replace TOKEN with your actual API token&quot; %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"hugo-shortcodes\">Hugo Shortcodes\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-comment\">&lt;!-- layouts/shortcodes/feature-box.html --&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;feature-box feature-{{ .Get &quot;\u003C/span>\u003Cspan class=\"hljs-attr\">type\u003C/span>&quot; | \u003Cspan class=\"hljs-attr\">default\u003C/span> &quot;\u003Cspan class=\"hljs-attr\">default\u003C/span>&quot; }}&quot;&gt;\u003C/span>\n  {{ if .Get &quot;icon&quot; }}\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;feature-icon&quot;\u003C/span>&gt;\u003C/span>{{ .Get &quot;icon&quot; | safeHTML }}\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  {{ end }}\n  {{ if .Get &quot;title&quot; }}\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h3\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;feature-title&quot;\u003C/span>&gt;\u003C/span>{{ .Get &quot;title&quot; }}\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h3\u003C/span>&gt;\u003C/span>\n  {{ end }}\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;feature-content&quot;\u003C/span>&gt;\u003C/span>\n    {{ .Inner | markdownify }}\n  \u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-comment\">&lt;!-- layouts/shortcodes/api-endpoint.html --&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;api-endpoint&quot;\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;api-method method-{{ .Get &quot;\u003C/span>\u003Cspan class=\"hljs-attr\">method\u003C/span>&quot; | \u003Cspan class=\"hljs-attr\">lower\u003C/span> }}&quot;&gt;\u003C/span>{{ .Get &quot;method&quot; | upper }}\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;api-path&quot;\u003C/span>&gt;\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">code\u003C/span>&gt;\u003C/span>{{ .Get &quot;path&quot; }}\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">code\u003C/span>&gt;\u003C/span>\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  {{ if .Get &quot;description&quot; }}\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;api-description&quot;\u003C/span>&gt;\u003C/span>{{ .Get &quot;description&quot; | markdownify }}\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  {{ end }}\n  {{ if .Inner }}\n  \u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">div\u003C/span> \u003Cspan class=\"hljs-attr\">class\u003C/span>=\u003Cspan class=\"hljs-string\">&quot;api-details&quot;\u003C/span>&gt;\u003C/span>{{ .Inner | markdownify }}\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n  {{ end }}\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">div\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-markdown\">&lt;!-- Usage in content --&gt;\n{{&lt; feature-box type=&quot;success&quot; icon=&quot;✅&quot; title=&quot;Easy Integration&quot; &gt;}}\nSimple REST API with comprehensive documentation and SDKs for popular languages.\n{{&lt; /feature-box &gt;}}\n\n{{&lt; api-endpoint method=&quot;POST&quot; path=&quot;/api/v1/users&quot; description=&quot;Create a new user account&quot; &gt;}}\n\u003Cspan class=\"hljs-strong\">**Request Body:**\u003C/span>\n\u003Cspan class=\"hljs-code\">```json\n{\n  &quot;username&quot;: &quot;string&quot;,\n  &quot;email&quot;: &quot;string&quot;,\n  &quot;password&quot;: &quot;string&quot;\n}\u003C/span>\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>Response:\u003C/strong> User object with generated ID\u003Cbr>{{&lt; /api-endpoint &gt;}}\u003C/p>\n\u003Cpre>\u003Ccode>\n\n## Variable Validation and Error Handling\n\n### Input Validation\n\n\n```liquid\n&lt;!-- Jekyll variable validation --&gt;\n{% assign required_vars = &quot;title,version,author&quot; | split: &quot;,&quot; %}\n{% assign missing_vars = &quot;&quot; %}\n\n{% for var in required_vars %}\n  {% assign var_value = page[var] %}\n  {% unless var_value %}\n    {% if missing_vars == &quot;&quot; %}\n      {% assign missing_vars = var %}\n    {% else %}\n      {% assign missing_vars = missing_vars | append: &quot;, &quot; | append: var %}\n    {% endif %}\n  {% endunless %}\n{% endfor %}\n\n{% if missing_vars != &quot;&quot; %}\n&gt; [!ERROR]\n&gt; **Missing Required Variables**: {{ missing_vars }}\n&gt; \n&gt; Please add the following to your front matter:\n&gt; ```yaml\n&gt; {{ missing_vars | split: &quot;, &quot; | join: &quot;: \n&gt; &quot; | append: &quot;: &quot; }}\n&gt; ```\n{% else %}\n# {{ page.title }}\n*Version {{ page.version }} by {{ page.author }}*\n{% endif %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"error-safe-variable-access\">Error-Safe Variable Access\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">&lt;!-- Hugo safe variable access --&gt;\n{{ $title := .Title | default &quot;Untitled Document&quot; }}\n{{ $version := .Params.version | default &quot;1.0.0&quot; }}\n{{ $author := .Params.author | default &quot;Anonymous&quot; }}\n\n\u003Cspan class=\"hljs-section\"># {{ $title }}\u003C/span>\n\n{{ if .Params.draft }}\n\u003Cspan class=\"hljs-quote\">&gt; [!WARNING]  \u003C/span>\n\u003Cspan class=\"hljs-quote\">&gt; This is a draft document and may contain incomplete information.\u003C/span>\n{{ end }}\n\n\u003Cspan class=\"hljs-strong\">**Document Info:**\u003C/span>\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Version: {{ $version }}\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Author: {{ $author }}\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> Last Modified: {{ .Lastmod.Format &quot;2006-01-02&quot; }}\n\n{{ with .Params.prerequisites }}\n\u003Cspan class=\"hljs-section\">## Prerequisites\u003C/span>\n{{ range . }}\n\u003Cspan class=\"hljs-bullet\">-\u003C/span> {{ . }}\n{{ end }}\n{{ end }}\n\n{{ with .Params.related\u003Cspan class=\"hljs-emphasis\">_docs }}\n## Related Documentation\n{{ range . }}\n- [\u003Cspan class=\"hljs-string\">{{ .title }}\u003C/span>](\u003Cspan class=\"hljs-link\">{{ .url }}\u003C/span>)\n{{ end }}\n{{ end }}\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"performance-optimization-for-variable-heavy-sites\">Performance Optimization for Variable-Heavy Sites\u003C/h2>\n\u003Ch3 id=\"caching-strategies\">Caching Strategies\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">&lt;!-- Jekyll caching for expensive operations --&gt;\n{% assign cache_key = &quot;team_directory_&quot; | append: site.time | date: &quot;%Y%m%d&quot; %}\n{% assign cached_content = site.data.cache[cache_key] %}\n\n{% unless cached_content %}\n  {% capture team_directory %}\n    {% for person in site.data.team %}\n      {% include person_card.html person=person %}\n    {% endfor %}\n  {% endcapture %}\n  \n  &lt;!-- In a real implementation, you&#39;d save this to a cache file --&gt;\n  {% assign cached_content = team_directory %}\n{% endunless %}\n\n{{ cached_content }}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"variable-preprocessing\">Variable Preprocessing\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-python\">\u003Cspan class=\"hljs-comment\"># MkDocs preprocessing optimization\u003C/span>\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> os\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> json\n\u003Cspan class=\"hljs-keyword\">from\u003C/span> pathlib \u003Cspan class=\"hljs-keyword\">import\u003C/span> Path\n\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">preprocess_variables\u003C/span>():\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Preprocess and cache variable computations&quot;&quot;&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-comment\"># Load configuration\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;mkdocs.yml&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n        config = yaml.safe_load(f)\n    \n    \u003Cspan class=\"hljs-comment\"># Compute expensive values once\u003C/span>\n    preprocessed = {\n        \u003Cspan class=\"hljs-string\">&#x27;build_time&#x27;\u003C/span>: datetime.now().isoformat(),\n        \u003Cspan class=\"hljs-string\">&#x27;file_count&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(\u003Cspan class=\"hljs-built_in\">list\u003C/span>(Path(\u003Cspan class=\"hljs-string\">&#x27;docs&#x27;\u003C/span>).rglob(\u003Cspan class=\"hljs-string\">&#x27;*.md&#x27;\u003C/span>))),\n        \u003Cspan class=\"hljs-string\">&#x27;total_size&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">sum\u003C/span>(f.stat().st_size \u003Cspan class=\"hljs-keyword\">for\u003C/span> f \u003Cspan class=\"hljs-keyword\">in\u003C/span> Path(\u003Cspan class=\"hljs-string\">&#x27;docs&#x27;\u003C/span>).rglob(\u003Cspan class=\"hljs-string\">&#x27;*&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">if\u003C/span> f.is_file()),\n        \u003Cspan class=\"hljs-string\">&#x27;last_commit&#x27;\u003C/span>: get_last_commit_hash(),\n        \u003Cspan class=\"hljs-string\">&#x27;contributors&#x27;\u003C/span>: get_contributor_list(),\n    }\n    \n    \u003Cspan class=\"hljs-comment\"># Cache results\u003C/span>\n    os.makedirs(\u003Cspan class=\"hljs-string\">&#x27;cache&#x27;\u003C/span>, exist_ok=\u003Cspan class=\"hljs-literal\">True\u003C/span>)\n    \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;cache/preprocessed.json&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;w&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n        json.dump(preprocessed, f, indent=\u003Cspan class=\"hljs-number\">2\u003C/span>)\n\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">define_env\u003C/span>(\u003Cspan class=\"hljs-params\">env\u003C/span>):\n    \u003Cspan class=\"hljs-comment\"># Load preprocessed data\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">try\u003C/span>:\n        \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;cache/preprocessed.json&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n            preprocessed = json.load(f)\n    \u003Cspan class=\"hljs-keyword\">except\u003C/span> FileNotFoundError:\n        preprocess_variables()\n        \u003Cspan class=\"hljs-keyword\">with\u003C/span> \u003Cspan class=\"hljs-built_in\">open\u003C/span>(\u003Cspan class=\"hljs-string\">&#x27;cache/preprocessed.json&#x27;\u003C/span>) \u003Cspan class=\"hljs-keyword\">as\u003C/span> f:\n            preprocessed = json.load(f)\n    \n    \u003Cspan class=\"hljs-comment\"># Make available as variables\u003C/span>\n    \u003Cspan class=\"hljs-keyword\">for\u003C/span> key, value \u003Cspan class=\"hljs-keyword\">in\u003C/span> preprocessed.items():\n        env.variables[key] = value\n\u003C/code>\u003C/pre>\u003Ch2 id=\"integration-with-documentation-workflows\">Integration with Documentation Workflows\u003C/h2>\n\u003Cp>Variables and templating work excellently alongside other advanced Markdown features. When combined with \u003Ca href=\"/blog/markdown-multi-column-layouts-complete-guide\">multi-column layouts\u003C/a>, variables enable dynamic content presentation that adapts to different data sources while maintaining consistent formatting across columns.\u003C/p>\n\u003Cp>For comprehensive technical documentation, variables complement \u003Ca href=\"/blog/markdown-syntax-highlighting-complete-guide\">syntax highlighting\u003C/a> by providing dynamic code examples that reflect current configuration values, API versions, and environment-specific settings.\u003C/p>\n\u003Cp>When creating interactive documentation with \u003Ca href=\"/blog/markdown-collapsible-sections-guide\">collapsible sections\u003C/a>, variables enable conditional content expansion based on user preferences, feature flags, or document complexity levels.\u003C/p>\n\u003Ch2 id=\"troubleshooting-common-issues\">Troubleshooting Common Issues\u003C/h2>\n\u003Ch3 id=\"variable-resolution-problems\">Variable Resolution Problems\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Variables not rendering correctly across platforms\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Col>\n\u003Cli>Check platform-specific syntax requirements\u003C/li>\n\u003Cli>Verify variable scope and availability  \u003C/li>\n\u003Cli>Use fallback values for missing variables\u003C/li>\n\u003Cli>Test with minimal variable examples\u003C/li>\n\u003C/ol>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">&lt;!-- Jekyll debugging --&gt;\n{% assign debug_mode = site.debug | default: false %}\n{% if debug_mode %}\n&lt;details&gt;\n&lt;summary&gt;Debug Information&lt;/summary&gt;\n\n**Site Variables Available:**\n- title: {{ site.title }}\n- version: {{ site.version }}\n- environment: {{ jekyll.environment }}\n\n**Page Variables:**\n- layout: {{ page.layout }}\n- date: {{ page.date }}\n- categories: {{ page.categories | join: &quot;, &quot; }}\n\n&lt;/details&gt;\n{% endif %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"performance-issues-with-large-datasets\">Performance Issues with Large Datasets\u003C/h3>\n\u003Cp>\u003Cstrong>Problem\u003C/strong>: Slow site generation with extensive variable processing\u003C/p>\n\u003Cp>\u003Cstrong>Solutions\u003C/strong>:\u003C/p>\n\u003Col>\n\u003Cli>Implement caching for expensive computations\u003C/li>\n\u003Cli>Use pagination for large datasets\u003C/li>\n\u003Cli>Preprocess data during build time\u003C/li>\n\u003Cli>Optimize template logic and filters\u003C/li>\n\u003C/ol>\n\u003Cpre>\u003Ccode class=\"hljs language-python\">\u003Cspan class=\"hljs-comment\"># Optimization example for MkDocs\u003C/span>\n\u003Cspan class=\"hljs-meta\">@env.macro\u003C/span>\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">paginated_content\u003C/span>(\u003Cspan class=\"hljs-params\">data, page=\u003Cspan class=\"hljs-number\">1\u003C/span>, per_page=\u003Cspan class=\"hljs-number\">10\u003C/span>\u003C/span>):\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Return paginated results to improve performance&quot;&quot;&quot;\u003C/span>\n    start = (page - \u003Cspan class=\"hljs-number\">1\u003C/span>) * per_page\n    end = start + per_page\n    \n    \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n        \u003Cspan class=\"hljs-string\">&#x27;items&#x27;\u003C/span>: data[start:end],\n        \u003Cspan class=\"hljs-string\">&#x27;total&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(data),\n        \u003Cspan class=\"hljs-string\">&#x27;page&#x27;\u003C/span>: page,\n        \u003Cspan class=\"hljs-string\">&#x27;pages&#x27;\u003C/span>: math.ceil(\u003Cspan class=\"hljs-built_in\">len\u003C/span>(data) / per_page),\n        \u003Cspan class=\"hljs-string\">&#x27;per_page&#x27;\u003C/span>: per_page\n    }\n\u003C/code>\u003C/pre>\u003Ch2 id=\"best-practices-for-maintainable-templates\">Best Practices for Maintainable Templates\u003C/h2>\n\u003Ch3 id=\"variable-naming-conventions\">Variable Naming Conventions\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-yaml\">\u003Cspan class=\"hljs-comment\"># Consistent naming strategy\u003C/span>\n\u003Cspan class=\"hljs-attr\">site:\u003C/span>\n  \u003Cspan class=\"hljs-attr\">meta:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">title:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Documentation Hub&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;2.1.0&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">description:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;Comprehensive technical documentation&quot;\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">company:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">name:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;TechCorp&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">url:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;https://techcorp.com&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">email:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;support@techcorp.com&quot;\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">features:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">search_enabled:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \u003Cspan class=\"hljs-attr\">dark_mode:\u003C/span> \u003Cspan class=\"hljs-literal\">true\u003C/span>\n    \u003Cspan class=\"hljs-attr\">analytics_enabled:\u003C/span> \u003Cspan class=\"hljs-literal\">false\u003C/span>\n    \n  \u003Cspan class=\"hljs-attr\">api:\u003C/span>\n    \u003Cspan class=\"hljs-attr\">base_url:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;https://api.techcorp.com&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">version:\u003C/span> \u003Cspan class=\"hljs-string\">&quot;v3&quot;\u003C/span>\n    \u003Cspan class=\"hljs-attr\">rate_limit:\u003C/span> \u003Cspan class=\"hljs-number\">1000\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch3 id=\"documentation-and-comments\">Documentation and Comments\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-liquid\">&lt;!-- \n  Template: product-overview.html\n  Purpose: Generate product feature comparison\n  \n  Required variables:\n  - products (array): List of products with features\n  - comparison_mode (string): &quot;basic&quot; or &quot;detailed&quot;\n  \n  Optional variables:\n  - highlight_product (string): Product name to highlight\n  - show_pricing (boolean): Display pricing information\n--&gt;\n\n{% comment %}\n  Input validation and defaults\n{% endcomment %}\n{% assign products = include.products | default: site.data.products %}\n{% assign mode = include.comparison_mode | default: &quot;basic&quot; %}\n{% assign highlight = include.highlight_product %}\n{% assign show_pricing = include.show_pricing | default: false %}\n\n{% if products.size == 0 %}\n  &lt;p&gt;&lt;em&gt;No products available for comparison.&lt;/em&gt;&lt;/p&gt;\n{% else %}\n  {% comment %} Render comparison table {% endcomment %}\n  &lt;!-- Table rendering logic here --&gt;\n{% endif %}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"version-control-and-collaboration\">Version Control and Collaboration\u003C/h3>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">&lt;!-- Template versioning example --&gt;\n&lt;!--\n  Template Version: 2.1.0\n  Last Updated: 2025-08-27\n  Author: Documentation Team\n  \n  Changelog:\n\u003Cspan class=\"hljs-bullet\">  -\u003C/span> 2.1.0: Added error handling for missing data\n\u003Cspan class=\"hljs-bullet\">  -\u003C/span> 2.0.0: Restructured for better mobile support  \n\u003Cspan class=\"hljs-bullet\">  -\u003C/span> 1.5.0: Added conditional pricing display\n  \n  Dependencies:\n\u003Cspan class=\"hljs-bullet\">  -\u003C/span> Bootstrap 5.x for styling\n\u003Cspan class=\"hljs-bullet\">  -\u003C/span> Font Awesome 6.x for icons\n\u003Cspan class=\"hljs-bullet\">  -\u003C/span> Site data: products.yml, features.yml\n--&gt;\n\u003C/code>\u003C/pre>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\n\u003Cp>Markdown variables and templating transform static documentation into dynamic, maintainable systems that adapt to changing requirements and scale effectively with team growth. Whether you&#39;re managing simple configuration values or complex data-driven content generation, mastering these templating techniques enables sophisticated documentation workflows that reduce maintenance burden while improving content consistency.\u003C/p>\n\u003Cp>The key to successful variable implementation lies in understanding your platform&#39;s specific capabilities, establishing clear naming conventions, and designing templates with reusability and maintainability in mind. By combining the techniques covered in this guide with proper planning and documentation standards, you can create flexible, powerful documentation systems that serve both current needs and future growth.\u003C/p>\n\u003Cp>Remember to test variable resolution across target platforms, implement appropriate error handling for missing data, and optimize performance for large datasets. With proper attention to these details, variables and templating become invaluable tools for creating professional, scalable, and maintainable documentation that adapts to your organization&#39;s evolving needs.\u003C/p>\n",[15,19,22,25,28,31,34,37,40,43,46,49],{"id":16,"text":17,"level":18},"why-use-markdown-variables-and-templating","Why Use Markdown Variables and Templating?",2,{"id":20,"text":21,"level":18},"platform-specific-variable-systems","Platform-Specific Variable Systems",{"id":23,"text":24,"level":18},"hugo-templating-system","Hugo Templating System",{"id":26,"text":27,"level":18},"mkdocs-variables-and-macros","MkDocs Variables and Macros",{"id":29,"text":30,"level":18},"obsidian-templating","Obsidian Templating",{"id":32,"text":33,"level":18},"advanced-templating-techniques","Advanced Templating Techniques",{"id":35,"text":36,"level":18},"content-includes-and-reusable-components","Content Includes and Reusable Components",{"id":38,"text":39,"level":18},"performance-optimization-for-variable-heavy-sites","Performance Optimization for Variable-Heavy Sites",{"id":41,"text":42,"level":18},"integration-with-documentation-workflows","Integration with Documentation Workflows",{"id":44,"text":45,"level":18},"troubleshooting-common-issues","Troubleshooting Common Issues",{"id":47,"text":48,"level":18},"best-practices-for-maintainable-templates","Best Practices for Maintainable Templates",{"id":50,"text":51,"level":18},"conclusion","Conclusion",[],[54,62,70],{"slug":55,"title":56,"description":57,"excerpt":58,"date":59,"category":9,"author":10,"keywords":60,"readingMinutes":61},"markdown-custom-html-components-complete-guide","Markdown Custom HTML Components and Extensions: Complete Guide for Dynamic Content Creation and Interactive Documentation","Master Markdown custom HTML components, shortcodes, and extensions for interactive documentation, dynamic content generation, and enhanced reader experiences. Learn component development, templating, and integration strategies.","Advanced Markdown custom HTML components and extensions enable the creation of dynamic, interactive documentation that transcends traditional static content limitations through sophisticated…","2025-10-03","markdown custom components, markdown html extensions, markdown shortcodes, interactive markdown, dynamic markdown content, custom markdown elements, markdown templating, markdown component development",33,{"slug":63,"title":64,"description":65,"excerpt":66,"date":67,"category":9,"author":10,"keywords":68,"readingMinutes":69},"react-markdown-rendering-guide","React Markdown Rendering: Complete Guide for Dynamic Content Display and Component Integration","Master React Markdown rendering with advanced techniques for dynamic content display, custom components, syntax highlighting, and performance optimization. Learn integration patterns, security considerations, and real-world implementation examples.","React Markdown rendering enables dynamic content display by converting Markdown text into React components, providing powerful flexibility for content-driven applications, documentation systems,…","2025-09-20","react markdown rendering, react markdown component, markdown to react, dynamic markdown rendering, react markdown parser, markdown react integration, react markdown syntax highlighting, custom react markdown components",16,{"slug":71,"title":72,"description":73,"excerpt":74,"date":75,"category":9,"author":10,"keywords":76,"readingMinutes":61},"markdown-dynamic-content-generation-complete-guide","Markdown Dynamic Content Generation: Complete Guide for Automated Documentation and Data-Driven Content Creation","Master dynamic Markdown content generation with templating systems, data binding, automated documentation generation, and programmatic content creation. Learn to build scalable, maintainable documentation workflows that generate content from data sources automatically.","Dynamic Markdown content generation transforms static documentation workflows into powerful, data-driven systems that automatically create, update, and maintain content based on external data…","2025-10-13","markdown dynamic content, markdown templates, automated documentation generation, data-driven markdown, markdown templating systems, programmatic content creation, dynamic documentation workflows, markdown automation",1792184941126]