腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题

织梦、帝国及PHPCMS对比(4):碎片功能分析

0
回复
1682
查看
[复制链接]

765

主题

779

帖子

3万

积分

董事

Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72Rank: 72

积分
33025
发表于 19-4-4 17:00:18 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                  前段时间,一位使用帝国CMS的朋友问我,帝国的碎片是什么意思,是做什么用的?我是这样回答的:现在很多门户网站的首页的信息大部分不是自动读取的,而是编辑手动添加或推荐的,每个编辑负责一个区块,手动推荐热点信息,分工负责,现在的CMS中的所说有碎片即是这样的区块片段,每个编辑负责一块碎片手动的更新。
: K* g; U0 p3 a6 |  那么碎片应该具备哪些功能呢?落叶认为应该具备如下功能:# u0 g0 W1 y9 r; b$ J/ d$ P
  1) 能够选择手动格式化添加文章标题及文章链接、摘要等信息(静态碎片)4 U/ D; {+ V* Q1 E% u$ s
  2) 能够选择使用标签自动调用数据或者供推送数据(动态碎片)' J, h% A* ?. e# y& X
  3) 能够直接使用HTML添加数据(代码碎片)
7 P( x& h! S; ~: D$ T0 x' ~  4) 碎片具有权限设置功能,不同的编辑只能修改具有权限的碎片(碎片编辑权限). v( Y* l+ a% F- P5 k+ b% Z
  5) 碎片更新后能够做到页面不重新生成,内容自动更新(碎片更新)
2 s$ ?3 S4 B9 s5 Q3 w. ?. |  6) 碎片信息调用灵活(碎片调用)
5 r8 O2 F( j$ t  下面就逐点对比分析帝国CMS与PHPCMS的碎片功能:
! m5 b" r; s: G  c5 s, {  1) 静态碎片
2 R& T; A. n9 M6 a/ x  帝国CMS和PHPCMS中都具有静态碎片的功能,只是叫法不同。PHPCMS中称作“格式化碎片”,即以表单的形式添加标题、摘要、链接、缩略图等信息。
% c2 o$ \4 a  {0 W8 b! o2 z
" p+ K" ~9 R4 t3 P
                               
登录/注册后可看大图
  帝国CMS中称“静态碎片”,和PHPCMS不同之处在于帝国的信息数据是单条添加,较之于PHPCMS,方便性稍微差一些,PHPCMS直接一次性填写设定的N条信息后一次提交。
+ w  e6 F6 r; L/ {  q) W

! P; h# d7 E! q  P% U                               
登录/注册后可看大图
  帝国单条信息添加的优点是可以单独设定每个标题的属性,实际门户网站的“不规则新闻”功能,PHPCMS中虽然也可以通过改下方的单条信息模板来实际,但因为是数据循环,统一操作,如果要像帝国这样实现单条信息的个性化及不规则新闻,那需要作较多的逻辑判断。
' C- W# r4 e2 i) F  另外,帝国的单条信息的标题、链链等信息可以通过点击“通过信息ID获取”,实际使用发现,其实是个鸡肋,因为点开后是要直接填写栏目ID和文章  ID来获取,去查看文章的栏目ID和文章ID再去填写的这会儿功夫,还不如直接打开文章复制粘贴下来得快来得直接。PHPCMS中支持能通过关键词搜索信息来添加,设计思路挺不错的,不过实际使用中结果不一定太理想,一般不怎么用,都是直接把要手动推荐的信息,复制标题、链接、摘要粘贴,上传下缩略图,然后保存。
  p  T0 I8 r, j* c. y  2) 动态碎片
9 x- o6 \8 Y; i4 S' D  以前在使用PHPCMS的碎片功能时,落叶一直期待PHPCMS能够实现动态碎片功能,即在PHPCMS的非格式化碎片中可以直接使用PHPCMS  的数据调用标签如TAG标签和GET标签,但实际由于PHPCMS的设计思路是碎片以静态方式保存后引用,没经过PHPCMS的模板引擎处理,所以一直没法实现这个期待。前段时间在测试帝国CMS的碎片功能时,发现帝国CMS提供了动态碎片功能,以为是可以在碎片中能通过内置标签调用数据,结果发现,帝国  CMS的动态标签居然是通过填写栏目ID和文章ID来调用,虽然可以实现动态信息的调用,但仔细想想,这样有意义吗?还是老话,找栏目ID和文章ID这会功夫,复制粘贴下不知快多少!
# X- a" R/ r4 s0 r
" ^! Y9 e; ?# _& L" m) D
                               
登录/注册后可看大图
  如果让我来设计动态碎片,那一定想办法实现可在碎片中自由使用任何系统标签,退一步讲,按照像帝国CMS这样的思路,通过填写栏目ID和文章ID来获取,至少也加个“浏览”的按钮,让大家直接浏览或者通过关键词搜索已发布过的信息的标题,勾选后批量添加。9 h  X7 B$ J4 P+ B+ Z# `+ X, ]
  帝国CMS的这个动态碎片功能如果不继续改进(仿照DZX的数据推送功能、或者DEDECMS专题中添加节点数据的操作),无疑是一个败笔。
+ I" F% s/ I8 \/ _  3) 代码碎片
) v4 a  H+ [+ U. {8 C7 I* E  代码碎片实际是提供一个文本域或者文本编辑器,可以让站长直接粘贴编辑好的HTML代码或者JS代码来手动添加内容。8 [3 T; f3 Y, `0 N) S' J
  PHPCMS和帝国CMS中都提供了代码碎片的功能,PHPCMS中称作“非格式化碎片”,两者功能一样,只是PHPCMS中做的更简洁一些,就一个FCK编辑器,然后默认编辑模式为代码模式即可,而帝国CMS中默认只是一个textarea,得点击可视化编辑才弹出编辑器界面,想不通帝国CMS为啥要这样做,直接放个编辑器默认为代码模式不是方便多了。在代码模式下添加HTML后,点到非代码模式预览下效果,然后保存不是很好?
# N* C0 c4 g" p* a" }  另外,如果是代码碎片中能支持调用系统标签,那将是多么完美,我在PHPCMS论坛看过很多人期待这个需求,不过目前还没有被实现过。  L  F2 Z' b) l+ }: c
  4) 碎片编辑权限
* r# B, P3 R! ?7 B1 i  门户网站首页不同区块的编辑各司其职,维护自己管理的区块的文章的推送,为了方便管理和考核,必然需要完善的编辑权限控制,这一点,帝国CMS和PHPCMS的碎片功能在添加碎片时都有考虑到,并且提供了相应的功能。- m) N* D$ b" Y1 e2 l+ T
  PHPCMS中则是通过角色来实现的,帝国CMS中则除了通过用户组控制外,另外可以通过“部门”来控制,甚至细化到具体会员,这一点帝国CMS做的细致一些,不过,帝国CMS中的“部门”和PHPCMS的“角色”相当,实现二者的权限功能是相当的,因为PHPCMS中只要自定义个角色,然后把需要赋予权限的用户添加到角色下,即可实现对用户的细化。从现在主流权限控制系统RBAC来看,PHPCMS的设计更主流一些。
  m2 e- b/ s9 |" q- |" J: h  PHPCMS的碎片权限设置如下图:# r. l4 w, b9 Q0 |- ^. Q% [

/ ]4 ]( C$ o) [                               
登录/注册后可看大图
  帝国CMS的碎片权限设置如下图:5 X' h6 [6 S- @- B( @! Y
. ^: ~6 f6 P8 K9 d/ Y4 z, y
                               
登录/注册后可看大图
  5) 碎片更新" c- S; J9 J& t- K6 k8 Q. W
  对于碎片的更新,最好的预期是,碎片信息更新后,引用碎片的文件无需重新生成,即可自动更新,不过,貌似如果生成静态的页面中调用碎片的,能实现这一需求的只有在PHPCMS中开启SHTML才能实现。
% c9 i$ Y- D  Y/ `8 N5 c- t$ g  PHPCMS中开启SHTML支持,然后把文章生成.shtml扩展名的文件后,所有碎片的引用方式都直接采用SSI指令引用(PHPCMS中的碎片是以HTML文件存储的,如果不开启SHTML支持,那么碎片静态文件能过file_get_contents函数读取整合到静态文件中生成,如果开启  SHTML,则使用SSI指令引用。)通过SSI指令引用的碎片HTML内容更新后,SHTML页面无需重新生成,其内容也会自动跟着更新,这点非常不错。
6 W3 x' ]! i( i# B3 T  帝国CMS中的碎片信息是直接存储在数据库中的,使用标签读取,没有也不会有这样的功能。4 Z/ U. U3 A* O6 B. p; S" c
  另外,PHPCMS中碎片信息的更新,可以是可视化的,在后台模板可视化管理处,直接点击碎片即可进入进行编辑。帝国CMS中碎片单条信息实际仍然是单条记录,和普通文章的添加、编辑没啥区别。) S( L  I$ o; z) y3 q9 [) A5 e) c
  6) 碎片调用0 H  A3 J) [' C# \
  PHPCMS中的碎片的调用是非常简单的,在PHPCMS任何模板的任何位置,直接使用block函数调用即可,如即可调用名为testsp的碎片的整个信息。" w: h' u  s0 y# s9 Q
  至于帝国CMS中,碎片的调用,使用碎片标签[spinfo]碎片变量名,显示条数,标题截取数[/spinfo]来实际,实际和其它文章数据的调用没啥区别。7 w1 T. ]1 U  l2 j1 k, `

& Z. S+ _( W2 E3 q  Z4 Z9 _            
网站简介

球球发,是一家 Discuz! 商业插件、风格模板、网站源码、 Discuz!运营维护技术等于一体的交流分享网站,全站95%的资源都是免费下载,对于资源我们是每天更新,每个亲测资源最新最全---球球发(如果我们有侵犯了您权益的资源请联系我们删除