AnQiCMS 提供了功能强大的 Markdown 编辑器,它不仅简化了内容创作,还能灵活地处理各种特殊字符和格式,以满足不同内容展示的需求。对于用户而言,理解这些处理方式能更好地发挥编辑器的潜力,输出高质量的页面内容。

启用 Markdown 编辑器

首先,要使用 Markdown 编辑器,需要在安企CMS后台进行简单的设置。您只需前往“全局设置”中的“内容设置”选项,找到并启用 Markdown 编辑器功能即可。开启后,在创建或编辑文档时,内容编辑区域将自动切换为 Markdown 模式,让您能够以纯文本方式编写,同时享受强大的排版能力。

核心的 Markdown 语法支持

安企CMS的 Markdown 编辑器支持标准的 Markdown 语法,这意味着您可以轻松使用常见的格式来组织内容:

  • 标题: 使用 # 符号定义不同层级的标题,例如 # 一级标题## 二级标题
  • 段落与换行: 自然换行即可形成新段落,或在行末使用两个空格加回车强制换行。
  • 强调: 使用 *_ 包裹文本实现斜体(*斜体*),使用 **__ 包裹文本实现粗体(**粗体**)。
  • 列表: 使用 *-+ 创建无序列表,使用数字加 . 创建有序列表。
  • 链接与图片: 使用 [链接文本](URL) 创建超链接,使用 “ 插入图片。
  • 代码块: 使用反引号 包裹行内代码,或使用三个反引号 包裹多行代码块。
  • 引用: 使用 > 符号进行文本引用。

这些基础语法使得内容结构清晰,易于撰写和阅读。

特殊内容的扩展:数学公式与流程图

Markdown 编辑器的一大亮点是其处理复杂格式的能力,例如数学公式和流程图。不过,这些高级功能的最终显示效果,通常需要借助前端页面的第三方 JavaScript 库来渲染,因为 Markdown 本身只负责标记,不负责渲染。

要在您的网站上正确显示这些特殊内容,通常需要在网站模板文件(例如 base.html 或页面头部文件)中引入相应的 CDN 资源:

  1. 统一的 Markdown 样式: 为了让 Markdown 内容在网页上拥有美观且统一的显示效果,您可以引入像 github-markdown-css 这样的样式库。只需在模板的 <head> 部分添加以下代码:
    
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.2.0/github-markdown.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" />
    
  2. 数学公式的呈现: 如果您需要在文章中插入复杂的数学公式,安企CMS编辑器结合 MathJax 库可以很好地实现。引入 MathJax 的 CDN 资源后,您就可以在 Markdown 内容中使用 LaTeX 语法来编写公式,例如:
    • 行内公式:$E=mc^2$
    • 块级公式:$$ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} $$ 在模板的 <head> 部分添加以下代码:
    <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
    
  3. 流程图与图表: 对于流程图、序列图等可视化图表,安企CMS编辑器支持 Mermaid 语法。通过引入 Mermaid JS 库,您的 Markdown 文本将能够被渲染成动态且交互式的图表,例如:
    graph TD;
        A[开始] --> B{判断};
        B -- 是 --> C[操作1];
        B -- 否 --> D[操作2];
        C --> E[结束];
        D --> E;
    
    在模板的 <head> 部分添加以下代码:
    
    <script type="module">
        import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
        mermaid.initialize({ startOnLoad: true });
    </script>
    
    正确配置这些前端资源后,您在 Markdown 编辑器中编写的公式和图表就能在前端页面上正常显示。

内容输出时的特殊字符和格式处理

当您在 AnQiCMS 的 Markdown 编辑器中完成内容创作后,系统在将这些内容展示到网站页面上时,会进行一系列处理以确保格式的正确性和安全性。

对于文档的 Content 字段,如果 Markdown 编辑器是启用的,系统会默认将 Markdown 格式的内容自动转换为 HTML,以便浏览器能够正确解析和显示。但您也可以通过模板标签中的 render 参数,手动控制是否进行这种转换。例如,{% archiveDetail archiveContent with name="Content" render=true %} 会强制转换 Markdown,而 render=false 则不会。

此外,在处理特殊字符和 HTML 标签时,AnQiCMS 也提供了灵活的过滤器。默认情况下,为了防止跨站脚本攻击(XSS)等安全问题,系统会对输出的 HTML 标签和一些特殊字符进行自动转义。这意味着如果您直接在 Markdown 内容中输入 <script> 标签,它会被转换为 &lt;script&gt; 显示,而不是被浏览器执行。

但如果您确定某些 HTML 片段是安全并希望它能被浏览器解析,例如 Markdown 转换后的 HTML 内容,您可以使用 |safe 过滤器。例如,{{archiveContent|safe}} 会告诉系统这段内容是安全的,不需要进行转义,直接以 HTML 形式输出。相反,如果您想强制显示 HTML 标签文本而不是让浏览器解析,|escape 过滤器可以派上用场。

总结

安企CMS的 Markdown 编辑器通过对基础语法的支持,以及对数学公式、流程图等高级内容的扩展能力,为用户提供了高效且灵活的内容创作体验。结合前端渲染库和内容输出时的灵活控制机制,它确保了特殊字符和格式都能得到妥善处理,既保障了内容的丰富性,又兼顾了网站的安全性和可维护性。


常见问题 (FAQ)

  1. 为什么我在后台启用了 Markdown 编辑器并输入了公式,但在前台页面却无法正常显示? 这通常是因为 MathJax 或 Mermaid 等前端渲染库的 CDN 资源未正确引入到您的网站模板(例如 base.html)中。Markdown 编辑器只负责标记和存储内容,而实际的数学公式和流程图渲染是由前端 JavaScript 库完成的。请按照文章中“特殊内容的扩展”部分,检查您的模板是否已添加了相应的 <script><link> 标签。
  2. 我希望 Markdown 编辑器输出的 HTML 内容能被浏览器解析,而不是显示为原始 HTML 标签,应该怎么做? 安企CMS默认会对输出的 HTML 内容进行安全转义,以防止潜在的安全问题。如果您信任 Markdown 转换后的 HTML 内容,并希望浏览器直接解析它,需要在模板中对输出的内容使用 |safe 过滤器。例如,将 {{archive.Content}} 修改为 {{archive.Content|safe}}。但请注意,只对您信任的内容使用 |safe
  3. 如果不小心禁用了 Markdown 编辑器,之前用 Markdown 写的内容会丢失吗? 内容不会丢失。即使您禁用了 Markdown 编辑器,内容仍然以 Markdown 格式存储在数据库中。只是在编辑时会以纯文本形式显示,在前端页面输出时,系统也不会再自动将其转换为 HTML。如果您需要手动控制转换,可以在模板中使用 render 参数,例如 {% archiveDetail archiveContent with name="Content" render=true %},即使编辑器禁用,也可以强制进行 Markdown 到 HTML 的转换。