Description
体验了下,相当优秀的项目,大体平移传统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的网页内容表现力太有限了。