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

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

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

761

主题

775

帖子

3万

积分

董事

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

积分
32840
发表于 19-4-4 17:00:18 | 显示全部楼层 |阅读模式      紫钻仅向指定用户开放  
                  前段时间,一位使用帝国CMS的朋友问我,帝国的碎片是什么意思,是做什么用的?我是这样回答的:现在很多门户网站的首页的信息大部分不是自动读取的,而是编辑手动添加或推荐的,每个编辑负责一个区块,手动推荐热点信息,分工负责,现在的CMS中的所说有碎片即是这样的区块片段,每个编辑负责一块碎片手动的更新。9 |: n) |/ B  h* R  b2 G( R, _! q$ ^
  那么碎片应该具备哪些功能呢?落叶认为应该具备如下功能:
4 p$ ]3 F% N; L. M  1) 能够选择手动格式化添加文章标题及文章链接、摘要等信息(静态碎片)
: W0 w- m9 i. _5 x' s: d4 r; ]  2) 能够选择使用标签自动调用数据或者供推送数据(动态碎片)
$ W" y! b9 C# X) B. v$ t- @9 m' v9 b  3) 能够直接使用HTML添加数据(代码碎片)
7 n) `- i, d% D3 X3 r8 Y  E' P  4) 碎片具有权限设置功能,不同的编辑只能修改具有权限的碎片(碎片编辑权限)
7 z: d3 H/ w1 ~- N: V+ `' S/ p  5) 碎片更新后能够做到页面不重新生成,内容自动更新(碎片更新)
. z' E( a& }7 C  6) 碎片信息调用灵活(碎片调用)3 S$ R  m; y& L' b% [0 I
  下面就逐点对比分析帝国CMS与PHPCMS的碎片功能:3 L% ]  y. X7 H! d6 M' S% C
  1) 静态碎片" g; D" U- Z# n- ]% ~( W3 l% w3 |
  帝国CMS和PHPCMS中都具有静态碎片的功能,只是叫法不同。PHPCMS中称作“格式化碎片”,即以表单的形式添加标题、摘要、链接、缩略图等信息。) K. H( Q5 |$ Q6 t6 _7 l! h

( E% d8 r! H! S; e+ p                               
登录/注册后可看大图
  帝国CMS中称“静态碎片”,和PHPCMS不同之处在于帝国的信息数据是单条添加,较之于PHPCMS,方便性稍微差一些,PHPCMS直接一次性填写设定的N条信息后一次提交。: z  D* ]" h% H- S* h. ?5 J

- k% W, [: L/ ?  w- Y) u9 A                               
登录/注册后可看大图
  帝国单条信息添加的优点是可以单独设定每个标题的属性,实际门户网站的“不规则新闻”功能,PHPCMS中虽然也可以通过改下方的单条信息模板来实际,但因为是数据循环,统一操作,如果要像帝国这样实现单条信息的个性化及不规则新闻,那需要作较多的逻辑判断。. P7 ^5 c) c6 F: e8 `
  另外,帝国的单条信息的标题、链链等信息可以通过点击“通过信息ID获取”,实际使用发现,其实是个鸡肋,因为点开后是要直接填写栏目ID和文章  ID来获取,去查看文章的栏目ID和文章ID再去填写的这会儿功夫,还不如直接打开文章复制粘贴下来得快来得直接。PHPCMS中支持能通过关键词搜索信息来添加,设计思路挺不错的,不过实际使用中结果不一定太理想,一般不怎么用,都是直接把要手动推荐的信息,复制标题、链接、摘要粘贴,上传下缩略图,然后保存。) k; _7 S; I6 W
  2) 动态碎片
( q6 j- u5 |9 x- K- V  以前在使用PHPCMS的碎片功能时,落叶一直期待PHPCMS能够实现动态碎片功能,即在PHPCMS的非格式化碎片中可以直接使用PHPCMS  的数据调用标签如TAG标签和GET标签,但实际由于PHPCMS的设计思路是碎片以静态方式保存后引用,没经过PHPCMS的模板引擎处理,所以一直没法实现这个期待。前段时间在测试帝国CMS的碎片功能时,发现帝国CMS提供了动态碎片功能,以为是可以在碎片中能通过内置标签调用数据,结果发现,帝国  CMS的动态标签居然是通过填写栏目ID和文章ID来调用,虽然可以实现动态信息的调用,但仔细想想,这样有意义吗?还是老话,找栏目ID和文章ID这会功夫,复制粘贴下不知快多少!7 q! A' t+ E* u- g: n# a( m. T$ N

1 ^: e/ @4 B( g" O7 z                               
登录/注册后可看大图
  如果让我来设计动态碎片,那一定想办法实现可在碎片中自由使用任何系统标签,退一步讲,按照像帝国CMS这样的思路,通过填写栏目ID和文章ID来获取,至少也加个“浏览”的按钮,让大家直接浏览或者通过关键词搜索已发布过的信息的标题,勾选后批量添加。
1 s$ r1 l+ ~9 Y5 k# y* ?- m  帝国CMS的这个动态碎片功能如果不继续改进(仿照DZX的数据推送功能、或者DEDECMS专题中添加节点数据的操作),无疑是一个败笔。% O& U2 V' J+ x% D7 j+ ?
  3) 代码碎片0 f0 i) }9 r7 `( r6 ?4 C
  代码碎片实际是提供一个文本域或者文本编辑器,可以让站长直接粘贴编辑好的HTML代码或者JS代码来手动添加内容。- w# ]- P$ [* E$ q" A8 f7 \* G: R
  PHPCMS和帝国CMS中都提供了代码碎片的功能,PHPCMS中称作“非格式化碎片”,两者功能一样,只是PHPCMS中做的更简洁一些,就一个FCK编辑器,然后默认编辑模式为代码模式即可,而帝国CMS中默认只是一个textarea,得点击可视化编辑才弹出编辑器界面,想不通帝国CMS为啥要这样做,直接放个编辑器默认为代码模式不是方便多了。在代码模式下添加HTML后,点到非代码模式预览下效果,然后保存不是很好?
" e3 B6 D% [5 T, T' C9 H( w' t  另外,如果是代码碎片中能支持调用系统标签,那将是多么完美,我在PHPCMS论坛看过很多人期待这个需求,不过目前还没有被实现过。* z6 }7 _. W* X! L9 g# ~0 Z/ X8 b
  4) 碎片编辑权限
1 }& O3 Z: w6 P  门户网站首页不同区块的编辑各司其职,维护自己管理的区块的文章的推送,为了方便管理和考核,必然需要完善的编辑权限控制,这一点,帝国CMS和PHPCMS的碎片功能在添加碎片时都有考虑到,并且提供了相应的功能。
" l  I4 b. a! |: C4 b" s) z& U( L5 C  PHPCMS中则是通过角色来实现的,帝国CMS中则除了通过用户组控制外,另外可以通过“部门”来控制,甚至细化到具体会员,这一点帝国CMS做的细致一些,不过,帝国CMS中的“部门”和PHPCMS的“角色”相当,实现二者的权限功能是相当的,因为PHPCMS中只要自定义个角色,然后把需要赋予权限的用户添加到角色下,即可实现对用户的细化。从现在主流权限控制系统RBAC来看,PHPCMS的设计更主流一些。
2 a$ G2 a0 v2 V$ m  PHPCMS的碎片权限设置如下图:
+ D0 T: w' V) F5 F7 R5 k# L) r, E. E

/ c! @7 u: N  g% [* l' k                               
登录/注册后可看大图
  帝国CMS的碎片权限设置如下图:2 b4 `2 \  R) q+ N7 N* i4 x

* y  v! n2 s& d  t* o0 q5 U  g                               
登录/注册后可看大图
  5) 碎片更新) C7 D/ c: d9 W$ ]+ n. N
  对于碎片的更新,最好的预期是,碎片信息更新后,引用碎片的文件无需重新生成,即可自动更新,不过,貌似如果生成静态的页面中调用碎片的,能实现这一需求的只有在PHPCMS中开启SHTML才能实现。
; t$ l  |+ k  d% T# P  PHPCMS中开启SHTML支持,然后把文章生成.shtml扩展名的文件后,所有碎片的引用方式都直接采用SSI指令引用(PHPCMS中的碎片是以HTML文件存储的,如果不开启SHTML支持,那么碎片静态文件能过file_get_contents函数读取整合到静态文件中生成,如果开启  SHTML,则使用SSI指令引用。)通过SSI指令引用的碎片HTML内容更新后,SHTML页面无需重新生成,其内容也会自动跟着更新,这点非常不错。
1 O# N. d- }2 e* j# D$ J) i  帝国CMS中的碎片信息是直接存储在数据库中的,使用标签读取,没有也不会有这样的功能。# q  d3 k% G. j2 l# _) `
  另外,PHPCMS中碎片信息的更新,可以是可视化的,在后台模板可视化管理处,直接点击碎片即可进入进行编辑。帝国CMS中碎片单条信息实际仍然是单条记录,和普通文章的添加、编辑没啥区别。
: _4 ?! F" q& g  6) 碎片调用% N+ y- C& B5 e# ]) ]. |! c
  PHPCMS中的碎片的调用是非常简单的,在PHPCMS任何模板的任何位置,直接使用block函数调用即可,如即可调用名为testsp的碎片的整个信息。
3 o7 s. P! }" g3 B7 M  至于帝国CMS中,碎片的调用,使用碎片标签[spinfo]碎片变量名,显示条数,标题截取数[/spinfo]来实际,实际和其它文章数据的调用没啥区别。1 h1 j; b3 y5 C! V* M2 k

/ o8 B6 B  }9 J' ]+ P            
网站简介

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