8000 希望强化Markdown的支持,支持内容短代码等 · Issue #78 · fesiong/anqicms · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
希望强化Markdown的支持,支持内容短代码等 #78
Open
@pdhapy

Description

@pdhapy

体验了下,相当优秀的项目,大体平移传统PHP CMS的整体功能,对传统CMS比较熟悉的话用着相当自然,CMS基本功能可用,而且支持Markdown很方便,但功能还比较基础希望能强化一下对内容的处理:

1、 模板中的过滤器很强大,但是不能在编写的文章内容里调用,太可惜了,不知道是BUG,使用方式不对,这么强大的功能在内容里调用不了,有点浪费。 比如说:

定义变量赋值标签 https://www.anqicms.com/manual-common/99.html

我在文章内容中使用 {{ 定义 }} 后,在模板中将其使用特定的格式转换后再输出成最终内容,当前试了一下不行,只能在独立的字段中使用?

双比如说这个,过滤器:将一行文字按空格拆分成数组 https://www.anqicms.com/manual-filter/253.html 真的很有用,但是也同样没办法在文章内容中调用,如:

... 上文... 

{% set colors = "red black.. " %}

...下文...

# 想遍历转化为

{% for item in colors %}
<li>{{item}}</li>/
{% endfor %}

后再输出到页面中,不生效。

建议:
1).过滤器可以在内容中使用 {{ }}定义给模析解析调用;
2).过滤器增加个命名空间,以区别不类型的内容,使用不同的模板片段来解析替换成特定的Html输出,如: {{youtube vid }},或者是类似于这种 {{book tilte="书名" cover="封面图片地址" author="作者名称" }},模板中先用book的HTML代码片段来渲染后再输出,如

... 文章上文... 

<!-- TEMPLATES/shortcode/book.html-->
<div class="book">
<p>{{ book.title}}</p>
<img src="{{ book.cover}}" />
<p>{{ book.author}}</p>
</div>

...文章下文...

3). 上述2).的过滤器对应的模板片段,可以保存成独立的html模板,沿用当用的设定不变,或采用预定格式的模板文件名(如:shortcode-book.html来对应为上例的book过滤器),也可以像传统CMS那样,以内容块(Block)的方式统一保存在库里。 这两种方式相比,独立的模板文件会更好维护一下,因为也可以直接在后台的模板编辑器中编辑。

综合而言,没错,这个就是 Hugo 中的短代码Shortcode功能,在markdown正文内容中自定义了部分数据后,使用单独的HTML的模板片段将其转换后再输出到整体内容中。 官方文档:https://gohugo.io/content-management/shortcodes/ https://gohugo.io/templates/shortcode/ 中文https://hugo.opendocs.io/content-management/shortcodes/

感觉现有的功能差一点就实现了,只是还是没办法在内容中使用,这大大削弱了这套CMS的 Markdown 应该场景,没有这个功能,正文中每加一本书都得插入一段HTML。

要知道这个功能是 Hugo 能火的原之一,因为这个功能直接扩展了Markdown处理成html后的无限表现力。 而且这个功能处理好了后,**和传统的 HTML 编辑的方式也同时兼容和一起使用,不冲突。 **

2、 Markdown 解析器建议考虑下换用 goldmark, https://github.com/yuin/goldmark 做为Hugo的御用解析器,在功能和性能上很平衡,兼容性也更好,MIT协议,在Hugo的加持下,开发者维护很活跃。

3、 Markdown 后台编辑器,不妨考虑下vditor, https://github.com/Vanessa219/vditor 也是国产,MIT协议。 支持当前流行的块编辑,也支持Markdown传统的分屏编辑,功能强大,甚至功能过多了,需要调配才能用着稍顺手,同时有点重,不过对于后台应用问题倒不是很大,同时,对于插入HTML片段的支持也不是太好,这是Markdown编辑器的通病。根源在于,都使用 Markdown 了,如果支持还需要大量使用HTML,那一定是对Markdown的支持还不够完善,如果上述的 {{ }} ShortCode 支持后,才根本上解决Mardown内容中过多HTML混用的问题。 当前字节的这个编辑器,中规中矩,对于一些标签不支持,如引用缩进的 > , 还是V1 版本,说是在开发V2,但也都快两年没更新了,当然也不是说不能用,毕竟这个最后还是要靠解析器来转成html输出,解析器比这个重要多了。

4、 支持SqlLite,SQLlite+灵活的静态化,对于常见网站完全够用了。 当然如果能同时增加对PostgreSQL就更好了,之前也有人提过。 但对SQLite的支持应该是最常用到的,一般的个人或企业网站没有多少是内容过几十万的。

5、 增加内容目录(TOC)的支持,可以在模板中使用标签调用显示TOC内容目录,用现有的GoQuery就可以,本想试一下,但是没办法自己太菜了,用默认的前台后台代码在本地都没有跑起来,编译时有几个包出错,应该是环境没配好。 Goquery 实现TOC参考: https://segmentfault.com/a/1190000042544118 实现后,这套CMS做文档站也是没问题的,甚至于说很合适,Markdown、 静态化,文档站完美。

总结:

完善对Markdown的支持,不仅可以拓展AnqiCMS的应用范围,不仅是大型网站、外贸站,企业站,流行的静态个人博客,文档站,都是游刃有余。 再支持SQLITE的话,吸引部分 Hugo 和 Hexo 的用户转过来也不是不可能的,毕竟,对于这部分用户:本地优先(MD文件或Sqlite)、单运行文件、全站静态化,也就是最核心的需求了。因而如果还能有个文件夹呢的 Markdown 文件导入,没有什么理由拒绝的。 而对于 Markdown 的支持关键还是第一点【内容短代码】,不然Markdown的网页内容表现力太有限了。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0