基于 Markor 的 Jekyll 博客写作指南:理解 jekyll-post.md 模板与 Markdown 前端元数据机制
移动开发【免费下载链接】markorText editor - Notes ToDo (for Android) - Markdown, todo.txt, plaintext, math, ..项目地址https://gitcode.com/gh_mirrors/ma/markor点击查看免费下载output_article基于 Markor 的 Jekyll 博客写作指南从模板文件到 Front Matter 渲染机制导读本文以 Markor 内置模板 app/src/main/assets/templates/jekyll-post.md 为切入点系统讲解在 Android 设备上使用 Markor 编写 Jekyll 博客文章的完整工作流从模板中的 YAML Front Matter前置元数据字段含义、Markor 内置的 Jekyll 语法扩展到新建文件时的模板加载与占位符替换机制。读完本文你将掌握如何在 Markor 中直接产出符合 Jekyll 规范、可直接推送至 GitHub Pages 等静态站点的 Markdown 博文并能理解预览模式下 Front Matter 被解析和渲染的底层原理。一、模板全貌一份为 Jekyll 预置的 Markdown 博文骨架Markor 在应用内置资产目录assets/templates下随包分发了一批文档模板AppSettings.java 中的getBuiltinTemplates()通过AssetManager.list(templates)枚举并读取该目录下的全部文件其中 jekyll-post.md 专为 Jekyll 静态博客定制。模板完整内容如下--- layout: post tags: [] categories: [] #date: 2019-06-25 13:14:15 #excerpt: #image: BASEURL/assets/blog/img/.png #description: #permalink: title: title ---可以看到这是一份形简意丰的骨架正文区为空真正有价值的是文件顶部的 YAML Front Matter 块。它与 Jekyll 官方对博文文件的要求完全对齐——Jekyll 要求每篇文章在文件开头用---包裹的 YAML 块声明元数据Markor 恰好把这一步做成了开箱即用的模板。值得注意的是仓库中还存在同主题的 AsciiDoc 版本 app/src/main/assets/templates/jekyll-post.adoc以及用于演示的实际示例文件 samples/2029-01-01-jekyll-post.md、samples/2029-01-01-jekyll-post.adoc。示例文件名带2029-01-01日期前缀正是 Jekyll 标准的文章命名约定见本文第五节。二、Front Matter 字段逐项解析模板中的每一行字段都有明确的 Jekyll 语义下面逐一说明其作用、取值方式与在 Markor 中的表现。2.1 布局与标题必填核心字段字段模板默认值作用layoutpost指定 Jekyll 使用的布局模板对应站点_layouts/post.html几乎所有博文都应保持posttitletitle文章标题会在站点列表页、RSS 与title标签中展示写作时务必替换其中title建议保留单引号包裹——Jekyll 的 YAML 解析器基于 Ruby对未加引号、含特殊字符的字符串容易误解析引号是安全写法。2.2 标签与分类内容组织字段tags: [] categories: []两个字段默认是空数组但取值方式不同tags文章标签可写为[markdown, android]或 YAML 列表形式tags: - markdown - android在 Markor 的预览渲染中tags会被特殊处理源码 MarkdownTextConverter.java 中有一条专门的分支——当tags恰好只有一个元素且形如[tag1,tag2,tag3]时会先按逗号拆分、再通过LinkedHashSet去重保序最终展开为独立的标签项同时模板的 CSSCSS_FRONTMATTER会为标签渲染圆角胶囊样式。categories文章分类Jekyll 用它生成分类归档页支持层级结构如[tech, android]。2.3 被注释的可选字段按需启用模板用#注释保留了四个常用可选字段取消注释即可启用字段默认示例用途date2019-06-25 13:14:15手动固定发布时间不设置时 Jekyll 使用文件名中的日期前缀excerpt自定义文章摘要不设置时 Jekyll 自动截取正文开头imageBASEURL/assets/blog/img/.png封面图路径注意BASEURL是占位符应替换为站点根路径如/assets/blog/img/xxx.pngpermalink空自定义文章 URL如/blog/my-post留空时使用默认的/:categories/:year/:month/:day/:title规则description空页面描述通常用于 SEO meta 标签这种默认必填字段开启、可选字段注释保留的设计让模板既能开箱即用又保留了完整的扩展空间。三、Markor 如何解析与渲染 Jekyll 语法模板之所以能无缝工作是因为 Markor 的 Markdown 转换器在底层集成了对 Jekyll 语法的完整支持。证据集中在 MarkdownTextConverter.java3.1 解析器扩展注册转换器基于 flexmark-java 构建在flexmarkExtensions列表中显式注册了与 Jekyll 直接相关的三个扩展源码 L126-L147JekyllTagExtension.create(), // 识别 {% ... %} 标签语法 JekyllFrontMatterExtension.create(), // 识别 --- 包裹的 Front Matter 块 YamlFrontMatterExtension.create(), // 将 Front Matter 解析为结构化 YAML这意味着即使没有开启任何额外选项Markor 在预览模式中也能正确把---之间的 YAML 块从正文中剥离出来解析而不会把它误当作水平分割线或正文文本。3.2 Front Matter 的可视化渲染Markor 默认不会把 Front Matter 原样显示在预览中而是按需渲染成结构化信息条。其逻辑位于 MarkdownTextConverter.java L216-L241只有当文档以---开头且满足以下任一条件时才触发解析用户在设置中配置了要显示的 YAML 键AppSettings.getMarkdownShownYamlFrontMatterKeys()正文中出现了{{ post.xxx }}形式的令牌YAML_FRONTMATTER_TOKEN_PATTERN正则匹配。通过extractYamlAttributes()用YamlFrontMatterExtension单独解析得到MapString, ListString形式的键值对。仅渲染白名单内的属性每个属性包装为front-matter-item容器整体放入.front-matter-container并注入CSS_FRONTMARTTER样式——这就是预览中顶部那条标题、标签胶囊、描述信息条的来源。3.3 正文内的{{ post.xxx }}令牌替换这是模板与 Markor 交互最巧妙的一环。在 Jekyll 站点中正文可以使用{{ page.title }}、{{ page.tags }}等 Liquid 变量Markor 在本地预览时无法运行 Jekyll于是实现了近似机制源码 replaceTokens() 会扫描正文中的{{ post.attr }}令牌并把对应 YAML 属性的值经过去引号、HTML 转义、--→–破折号处理回填进去最终渲染为高亮的post-item-attr标签。例如若 Front Matter 中声明了tags: [markdown, android]正文某处写入本文标签{{ post.tags }}预览时会自动显示为两个独立的标签条目。这让你在手机上写作时就能即时看到标签、标题等元数据最终会以什么形态出现在页面上。3.4 Jekyll Liquid 令牌的本地化替代模板注释与正文中可能出现{{ site.time | date: %x }}、{{ site.baseurl }}这类 Liquid 表达式。Markor 在转换时做了两处替换MarkdownTextConverter.java L299-L300markup markup.replace({{ site.baseurl }}, ..) .replace(TOKEN_SITE_DATE_JEKYLL, TOKEN_POST_TODAY_DATE);{{ site.baseurl }}被替换为..——因为 Markor 中 Jekyll 文章通常存放在_posts目录该目录相对于站点根目录恰好上跳一级图片等资源引用如![](../assets/img/x.png)因此可正确解析{{ site.time | date: %x }}被替换为{{ post.date_today }}后者在 TextConverterBase.java 中最终被替换为设备当前的本地化日期字符串。这套机制让 Markor 的预览与 Jekyll 站点的最终渲染保持一致本地所见即线上所得。四、在 Markor 中使用模板新建博文模板的消费入口是新建文件对话框对应源码 NewFileDialog.java。4.1 模板加载流程NewFileDialog.java L156-L162 将三部分来源合并进模板下拉框第一项固定为空文件R.string.empty_file接着是用户在设置中配置的 snippets 目录下的所有纯文本片段文件getSnippetFiles()最后是内置模板getBuiltinTemplates()即assets/templates下的全部文件——jekyll-post.md就在这里。4.2 文件名自动生成选中jekyll-post.md模板后对话框会用模板文件名自动建议标题与扩展名jekyll-post.mdNewFileDialog.java L173-L188标题格式可通过格式输入框定制支持{{title}}占位符与yyyy-MM-ddTHHmmss等日期格式默认规则见 NewFileDialog.java L244-L257确认后模板内容作为新文件内容写入模板名与格式偏好会被记住下次新建同类型文件时自动预选NewFileDialog.java L311-L315。4.3 与 AsciiDoc 模板的对照若你的博客使用 AsciiDocJekyll 同样支持可对照参考 jekyll-post.adoc它以 My Title起头用:page-subtitle:、:page-tags:、:page-last-updated:等文档属性承载元数据并通过ifndef::env-site[]条件块实现本地预览显示副标题、线上 Jekyll 站点不重复显示的差异化渲染。两份模板体现了 Markor 对 Markdown / AsciiDoc 双格式 Jekyll 工作流的完整覆盖。五、写作到发布的完整流程结合模板与 Markor 的功能一条完整的移动端 Jekyll 写作链路如下新建文件打开新建文件对话框模板选择jekyll-post.md标题格式可设置为 Jekyll 规范的yyyy-MM-dd-{{title}}日期前缀便于 Jekyll 识别发布时间。填写元数据把title: title替换为真实标题按需填写tags、categories取消注释date、excerpt、permalink等可选字段。写作正文利用 Markor 的 Markdown 全语法支持任务列表、表格、脚注、数学公式 KaTeX、Mermaid 图表等均由 MarkdownTextConverter.java 注册的 flexmark 扩展提供需要展示元数据时在正文中写{{ post.tags }}等令牌。本地预览切换预览模式Front Matter 会渲染为信息条{{ site.baseurl }}与日期令牌被替换为本地可解析值图片路径经escapeSpacesInLink()处理空格转%20见 MarkdownTextConverter.java L349-L376。归档发布将文件放入 Jekyll 仓库的_posts目录Markor 检测到_posts/blog/post文件夹时还会自动为预览注入目录 TOC见 MarkdownTextConverter.java L244-L259经 Git 推送后由 Jekyll 构建发布。值得强调的是模板中注释字段与文件命名都遵循 Jekyll 官方约定YYYY-MM-DD-title.ext、---定界符、layout必填因此只要不删改 Front Matter 结构Markor 产出的文件即可直接进入 Jekyll 构建流水线无需二次编辑。六、小结jekyll-post.md虽仅十余行却是 Markor 面向 Jekyll 博客场景的核心载体它既是可复制的写作骨架又是测试 Markor Jekyll 语法支持的天然样例。配合 MarkdownTextConverter.java 中的 Jekyll 扩展注册、Front Matter 白名单渲染与令牌替换机制以及 NewFileDialog.java 的模板加载流程你完全可以在手机端完成建文件—填元数据—写作—预览—归档的 Jekyll 博客全流程且预览结果与线上渲染保持一致。 /output_article赞分享移动开发【免费下载链接】markorText editor - Notes ToDo (for Android) - Markdown, todo.txt, plaintext, math, ..项目地址https://gitcode.com/gh_mirrors/ma/markor点击查看免费下载相关推荐Jekyll 博客写作实战基于 _posts 目录的纯文本博客系统Jekyll 博客写作实战基于 _posts 目录的纯文本博客系统 核心主题 Jekyll 是博客感知的静态站点生成器其博客功能完全由文本文件驱动——前端CMS使用 Devbox 搭建可复现的 Jekyll 博客开发环境基于 examples/stacks/jekyll 模板使用 Devbox 搭建可复现的 Jekyll 博客开发环境基于 examples/stacks/jekyll 模板 本指南以本仓库 examples/st开发工具CLIacademicpages.github.io CV 页面搭建指南基于 Jekyll 的 Markdown 简历模板解析academicpages.github.io CV 页面搭建指南基于 Jekyll 的 Markdown 简历模板解析 本篇技术指南围绕 academicp前端文档上一篇掌握UnrealPakViewerPak文件解析从入门到精通下一篇UnrealPakViewerUE4资源包解析全攻略——从加密容器到资产洞察创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

cherry-markdown 版本演进全解析:从 0.5 到 0.11 的核心能力、构建体系与安全演进

cherry-markdown 版本演进全解析:从 0.5 到 0.11 的核心能力、构建体系与安全演进

前端UI组件富文本 【免费下载链接】cherry-markdown ✨ A Markdown Editor 项目地址: https://gitcode.com/GitHub_Trending/ch/cherry-markdown 点击查看 免费下载 cherry-markdown 是一款基于 Web 的 Markdown 编辑器,本文以仓库内 packages/cherry-m…

2026/10/3 13:38:43 阅读更多 →
Umi-OCR 离线OCR使用指南:4个场景跑通截图、批量图片与PDF识别

Umi-OCR 离线OCR使用指南:4个场景跑通截图、批量图片与PDF识别

Umi-OCR 离线OCR使用指南:4个场景跑通截图、批量图片与PDF识别 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置…

2026/10/3 13:37:43 阅读更多 →
PlotJuggler 4 WebAssembly 部署实战:从多线程构建到跨源隔离的 HTTPS 发布

PlotJuggler 4 WebAssembly 部署实战:从多线程构建到跨源隔离的 HTTPS 发布

数据可视化桌面应用数据分析 【免费下载链接】PlotJuggler The Time Series Visualization Tool that you deserve. 项目地址: https://gitcode.com/gh_mirrors/pl/PlotJuggler 点击查看 免费下载 PlotJuggler 4 的浏览器版本是一个静态的、启用多线程(…

2026/10/3 13:37:42 阅读更多 →

最新新闻

STM32 SDIO 4bit模式下HAL_SD_ConfigWideBusOperation卡死原因与排查

STM32 SDIO 4bit模式下HAL_SD_ConfigWideBusOperation卡死原因与排查

先说结论:这个问题十有八九不是你代码写错了,而是HAL_SD_ConfigWideBusOperation这个函数在4bit模式下,对SD卡的初始化时序、时钟分频和硬件连接非常敏感。我当初调这个问题调了整整一个下午,最后发现罪魁祸首竟然是CubeMX里一个不…

2026/10/3 14:55:14 阅读更多 →
64位系统下断针即时打印:Access驱动与打印链路完整落地

64位系统下断针即时打印:Access驱动与打印链路完整落地

简介:这份资源是一款面向针式打印机用户的断针免修与打印优化工具,专为仍在使用针式打印机处理票据、单据、多联纸打印的办公与财务场景打造,尤其适合遇到打印针断裂、打印质量下降却不想送修或更换设备的用户。压缩包为zip格式,整…

2026/10/3 14:55:14 阅读更多 →
OpenShell使用指南:为Windows 11找回经典开始菜单

OpenShell使用指南:为Windows 11找回经典开始菜单

如果你是从Windows 7时代一路用过来的老用户,升级到Windows 11之后的第一反应八成和我一样:开始菜单怎么变成这样了?点开全是推荐内容,想找控制面板要再多点好几次。我去年换了新笔电,系统自带Windows 11,用…

2026/10/3 14:55:13 阅读更多 →
杭州AI短剧工具链实测:从剧本到成片的全流程盘点

杭州AI短剧工具链实测:从剧本到成片的全流程盘点

2026年开春,我花了差不多两周时间,把杭州地面上叫得上号的AI短剧和视频工具挨个注册、充钱、跑通了一遍。这活儿听起来没什么技术含量,但真做起来挺费劲——不是工具不够多,而是工具多到让人挑花眼,每家宣传话术又都长…

2026/10/3 14:55:13 阅读更多 →
业务人员不会写 SQL,能不能自己做数据分析?先过这 6 个前提,别急着上 AI 问数

业务人员不会写 SQL,能不能自己做数据分析?先过这 6 个前提,别急着上 AI 问数

老板在会上说"以后数据自己查,别什么事都找 IT",IT 负责人下来就开始选工具。三个月后工具买回来了、账号也开了一批,业务打开看两眼,关掉,转头还是发微信让 IT 导 Excel。 这件事的关键从来不在工具。业务自…

2026/10/3 14:55:13 阅读更多 →
赛后情书:用情绪浓度与细节锚点写出动人记录

赛后情书:用情绪浓度与细节锚点写出动人记录

比分牌定格的瞬间,场馆里两种颜色的声音撞在一起,而我在人声中最先听见的,是自己轻轻呼出一口气的声音。就在那一刻,我掏出手机,在备忘录里写下三个字:"给他写。"——这个"他"&#xf…

2026/10/3 14:54:13 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →