AnQiCMS作为一个功能强大的内容管理系统,在内容创作和展示方面提供了极大的灵活性。对于习惯使用Markdown语法进行写作的用户来说,AnQiCMS同样提供了便捷的支持,让内容创作者能够专注于文字本身,而无需过多关注排版细节。从2.1.1版本起,AnQiCMS便深度集成了Markdown编辑器的支持,使得文档内容的Markdown格式化和网页渲染变得轻而易举。

要实现AnQiCMS文档内容的自动Markdown转换并在网页中正确渲染,主要涉及到两个层面:首先是在后台启用Markdown编辑功能,确保内容以Markdown格式录入;其次是在前端模板中,通过特定的标签和辅助代码,将这些Markdown内容解析并美观地展示出来。

一、后台启用Markdown编辑器

首先,要确保系统已经开启了Markdown编辑功能。这如同为您的AnQiCMS内容创作流程配备了一把趁手的工具。操作步骤非常直观:

  1. 登录AnQiCMS后台:使用您的管理员账号进入系统管理界面。
  2. 导航至“全局设置”:在后台左侧菜单栏中,找到并点击“全局设置”选项。
  3. 选择“内容设置”:在“全局设置”的子菜单中,点击进入“内容设置”页面。
  4. 勾选并保存:在内容设置页面,您会看到一个名为“启用Markdown编辑器”的选项,请务必勾选它。勾选后,点击页面底部的“保存”按钮,让设置生效。

一旦启用,您在发布或编辑文档(如文章、产品、单页面、标签内容等)时,相应的内容输入框将支持Markdown语法输入。这意味着您可以直接使用# 标题**加粗***斜体*- 列表项等简洁的Markdown标记来组织您的内容。

二、前端模板中正确渲染Markdown内容

后台设置完成后,接下来就是在前端模板中,让这些Markdown内容能够被浏览器正确解析并美观地展示出来。这需要对AnQiCMS的模板标签和过滤器有基本的了解。

1. 基础内容渲染

AnQiCMS的模板系统非常灵活,它通过特定的标签和过滤器来处理内容。对于文档、分类、页面或标签的详情内容,通常会使用archiveDetailcategoryDetailpageDetailtagDetail等标签来获取。这些标签内部的Content字段承载着您的Markdown文本。

要让Markdown文本在网页上显示为HTML,我们需要在模板中对其进行处理。这里有两种常用方法:

  • 使用|render过滤器:在输出内容时,通过管道符|连接render过滤器。
  • 在标签中添加render=true参数:直接在内容详情标签内部设置render参数。

同时,为了确保解析后的HTML代码能够被浏览器正确渲染而不是作为纯文本显示,我们还需要配合使用|safe过滤器|safe告诉模板引擎,这段内容是安全的HTML,无需进行自动转义。

以下是一个在文档详情页中渲染Markdown内容的示例:

{# 假设您正在文档详情页,archiveContent变量包含了Markdown内容 #}
{# 方法一:使用 |render 过滤器处理Markdown并用 |safe 避免转义 #}
<div class="markdown-body">
    {% archiveDetail archiveContent with name="Content" %}{{ archiveContent|render|safe }}
</div>

{# 方法二:在标签内部直接指定render=true参数,同样需要 |safe 避免转义 #}
<div class="markdown-body">
    {% archiveDetail articleContent with name="Content" render=true %}{{ articleContent|safe }}
</div>

请注意,|renderrender=true是实现Markdown到HTML转换的关键。如果缺少这一步,即使内容是Markdown格式,前端也只会将其作为普通文本显示,而不会将其解析成带有格式的HTML。

2. 样式增强:美化Markdown排版

虽然内容被转换成了HTML,但原生的HTML元素通常样式朴素。为了让Markdown内容呈现出更好的视觉效果,例如代码块、列表、引用等的排版,我们需要引入一些CSS样式。AnQiCMS的官方文档推荐使用github-markdown-css,它能让您的Markdown内容看起来就像GitHub上的渲染效果一样,简洁而专业。

要引入这个样式表,您需要将以下代码添加到您的模板文件(通常是template/{您的模板目录}/base.html或主布局文件)的<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" />

引入CSS后,您可能还需要在包裹Markdown渲染内容的HTML元素上添加markdown-body类,以确保样式能够正确应用,例如:

<div class="markdown-body">
    {# 这里是您的Markdown渲染内容,如 {{ archiveContent|render|safe }} #}
</div>

3. 特殊内容渲染:数学公式和流程图

Markdown本身可以表示数学公式和流程图,但浏览器无法直接识别并绘制它们。这需要借助特定的JavaScript库来解释和渲染。AnQiCMS的Markdown编辑器也支持这些特殊内容的输入,要使其在前端正常显示,您需要引入相应的第三方库。

  • 数学公式的正确显示(MathJax)

    对于数学公式,MathJax是一个非常流行且功能强大的JavaScript显示引擎。它能够将LaTeX、MathML等格式的数学表达式渲染成高质量的公式图片或SVG/HTML。

    请将以下代码添加到您的base.html或其他适当的模板文件的<head>标签关闭前:

    <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
    
  • 流程图的正确显示(MermaidJS)

    MermaidJS是一个基于JavaScript的图表绘制工具,它允许您使用简单的文本语法创建流程图、序列图、甘特图等。

    请将以下代码添加到您的base.html或其他适当的模板文件的<head>标签关闭前:

    ”`html