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

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

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

765

主题

779

帖子

3万

积分

董事

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

积分
33029
发表于 19-4-4 17:00:18 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                  前段时间,一位使用帝国CMS的朋友问我,帝国的碎片是什么意思,是做什么用的?我是这样回答的:现在很多门户网站的首页的信息大部分不是自动读取的,而是编辑手动添加或推荐的,每个编辑负责一个区块,手动推荐热点信息,分工负责,现在的CMS中的所说有碎片即是这样的区块片段,每个编辑负责一块碎片手动的更新。+ y( |7 M% @( }. J
  那么碎片应该具备哪些功能呢?落叶认为应该具备如下功能:0 ?' x0 o9 q, h: C6 G
  1) 能够选择手动格式化添加文章标题及文章链接、摘要等信息(静态碎片)$ h. t. O, b: R, g" \/ X- q9 W% R
  2) 能够选择使用标签自动调用数据或者供推送数据(动态碎片)6 j( ?# s( l+ L) Q# ?" `
  3) 能够直接使用HTML添加数据(代码碎片)
9 O4 Q, n$ ]0 B2 ^  4) 碎片具有权限设置功能,不同的编辑只能修改具有权限的碎片(碎片编辑权限)
) ?- ^, N5 @% k2 T" ?0 T  5) 碎片更新后能够做到页面不重新生成,内容自动更新(碎片更新)
, s7 }# Z4 }) C# t$ B: l1 l  6) 碎片信息调用灵活(碎片调用)
  N) x/ K5 x0 I7 M  下面就逐点对比分析帝国CMS与PHPCMS的碎片功能:8 v) M8 q/ F! n. s
  1) 静态碎片7 y1 h; L  y' y: K1 s8 o5 I
  帝国CMS和PHPCMS中都具有静态碎片的功能,只是叫法不同。PHPCMS中称作“格式化碎片”,即以表单的形式添加标题、摘要、链接、缩略图等信息。
( U. F) k; F) a4 E6 a4 `& q: ^9 v
9 M& m6 d* A* B' j9 V
                               
登录/注册后可看大图
  帝国CMS中称“静态碎片”,和PHPCMS不同之处在于帝国的信息数据是单条添加,较之于PHPCMS,方便性稍微差一些,PHPCMS直接一次性填写设定的N条信息后一次提交。2 f8 p5 b6 E; Y0 G7 a
' R* l2 y# l) ?( {( M, J
                               
登录/注册后可看大图
  帝国单条信息添加的优点是可以单独设定每个标题的属性,实际门户网站的“不规则新闻”功能,PHPCMS中虽然也可以通过改下方的单条信息模板来实际,但因为是数据循环,统一操作,如果要像帝国这样实现单条信息的个性化及不规则新闻,那需要作较多的逻辑判断。! a: d( g2 N: J( \, V# j
  另外,帝国的单条信息的标题、链链等信息可以通过点击“通过信息ID获取”,实际使用发现,其实是个鸡肋,因为点开后是要直接填写栏目ID和文章  ID来获取,去查看文章的栏目ID和文章ID再去填写的这会儿功夫,还不如直接打开文章复制粘贴下来得快来得直接。PHPCMS中支持能通过关键词搜索信息来添加,设计思路挺不错的,不过实际使用中结果不一定太理想,一般不怎么用,都是直接把要手动推荐的信息,复制标题、链接、摘要粘贴,上传下缩略图,然后保存。
$ E1 V8 z) M+ u  2) 动态碎片; D+ f$ @' o8 y% ]; G- @8 [
  以前在使用PHPCMS的碎片功能时,落叶一直期待PHPCMS能够实现动态碎片功能,即在PHPCMS的非格式化碎片中可以直接使用PHPCMS  的数据调用标签如TAG标签和GET标签,但实际由于PHPCMS的设计思路是碎片以静态方式保存后引用,没经过PHPCMS的模板引擎处理,所以一直没法实现这个期待。前段时间在测试帝国CMS的碎片功能时,发现帝国CMS提供了动态碎片功能,以为是可以在碎片中能通过内置标签调用数据,结果发现,帝国  CMS的动态标签居然是通过填写栏目ID和文章ID来调用,虽然可以实现动态信息的调用,但仔细想想,这样有意义吗?还是老话,找栏目ID和文章ID这会功夫,复制粘贴下不知快多少!; h) P, o5 O# j

! s$ K0 p! X8 S" T5 A6 q                               
登录/注册后可看大图
  如果让我来设计动态碎片,那一定想办法实现可在碎片中自由使用任何系统标签,退一步讲,按照像帝国CMS这样的思路,通过填写栏目ID和文章ID来获取,至少也加个“浏览”的按钮,让大家直接浏览或者通过关键词搜索已发布过的信息的标题,勾选后批量添加。7 X" Y6 g+ r* w0 d& O
  帝国CMS的这个动态碎片功能如果不继续改进(仿照DZX的数据推送功能、或者DEDECMS专题中添加节点数据的操作),无疑是一个败笔。
  L8 d+ D% ~. f$ G! L- v$ D% ~" ~( ?  3) 代码碎片& n3 p7 A# Y0 k/ R* u$ u
  代码碎片实际是提供一个文本域或者文本编辑器,可以让站长直接粘贴编辑好的HTML代码或者JS代码来手动添加内容。
* A0 Q+ g. j  P' E! W: P  PHPCMS和帝国CMS中都提供了代码碎片的功能,PHPCMS中称作“非格式化碎片”,两者功能一样,只是PHPCMS中做的更简洁一些,就一个FCK编辑器,然后默认编辑模式为代码模式即可,而帝国CMS中默认只是一个textarea,得点击可视化编辑才弹出编辑器界面,想不通帝国CMS为啥要这样做,直接放个编辑器默认为代码模式不是方便多了。在代码模式下添加HTML后,点到非代码模式预览下效果,然后保存不是很好?
5 \0 D5 R  s4 Y" Y8 q2 Y0 X  另外,如果是代码碎片中能支持调用系统标签,那将是多么完美,我在PHPCMS论坛看过很多人期待这个需求,不过目前还没有被实现过。9 W  f& ~' F& h0 ^% v
  4) 碎片编辑权限
# u/ x& a! j  h: Y# J( [/ P  r+ H  门户网站首页不同区块的编辑各司其职,维护自己管理的区块的文章的推送,为了方便管理和考核,必然需要完善的编辑权限控制,这一点,帝国CMS和PHPCMS的碎片功能在添加碎片时都有考虑到,并且提供了相应的功能。
% N' V5 [/ F) J) c5 k5 C  PHPCMS中则是通过角色来实现的,帝国CMS中则除了通过用户组控制外,另外可以通过“部门”来控制,甚至细化到具体会员,这一点帝国CMS做的细致一些,不过,帝国CMS中的“部门”和PHPCMS的“角色”相当,实现二者的权限功能是相当的,因为PHPCMS中只要自定义个角色,然后把需要赋予权限的用户添加到角色下,即可实现对用户的细化。从现在主流权限控制系统RBAC来看,PHPCMS的设计更主流一些。
9 G$ s! e6 t, v9 f9 i6 C  PHPCMS的碎片权限设置如下图:% ^0 F- C3 t: h; G* w

3 l; ~1 X, @: X; u" V" K1 A                               
登录/注册后可看大图
  帝国CMS的碎片权限设置如下图:# n8 a! p: e- \( t/ b
0 a; B. j' Y' S
                               
登录/注册后可看大图
  5) 碎片更新6 ?- M& i* P6 k' v, p6 F, s  W, k
  对于碎片的更新,最好的预期是,碎片信息更新后,引用碎片的文件无需重新生成,即可自动更新,不过,貌似如果生成静态的页面中调用碎片的,能实现这一需求的只有在PHPCMS中开启SHTML才能实现。8 \1 P. \8 z# n0 ?$ ^* {" n. h5 y
  PHPCMS中开启SHTML支持,然后把文章生成.shtml扩展名的文件后,所有碎片的引用方式都直接采用SSI指令引用(PHPCMS中的碎片是以HTML文件存储的,如果不开启SHTML支持,那么碎片静态文件能过file_get_contents函数读取整合到静态文件中生成,如果开启  SHTML,则使用SSI指令引用。)通过SSI指令引用的碎片HTML内容更新后,SHTML页面无需重新生成,其内容也会自动跟着更新,这点非常不错。
% [0 q# a. k8 \7 `5 x  帝国CMS中的碎片信息是直接存储在数据库中的,使用标签读取,没有也不会有这样的功能。
8 `- L& A9 m2 c  另外,PHPCMS中碎片信息的更新,可以是可视化的,在后台模板可视化管理处,直接点击碎片即可进入进行编辑。帝国CMS中碎片单条信息实际仍然是单条记录,和普通文章的添加、编辑没啥区别。
) q9 T% n4 ^+ H" K; Z6 U( H  6) 碎片调用0 V* b+ J( ?! i" q8 R
  PHPCMS中的碎片的调用是非常简单的,在PHPCMS任何模板的任何位置,直接使用block函数调用即可,如即可调用名为testsp的碎片的整个信息。  M/ Y2 \0 `# E5 n0 G
  至于帝国CMS中,碎片的调用,使用碎片标签[spinfo]碎片变量名,显示条数,标题截取数[/spinfo]来实际,实际和其它文章数据的调用没啥区别。0 A: S8 c9 W6 I* K1 d" a8 b

' N8 X' {% t! m* R' S* o            
网站简介

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