隽永东方重磅推出的 Imagination & Inspiration Show Time (简称:I.I Show Time) 活动如期举行,本次分享创意和灵感的是Fans Fan,以下简单记录一下此次分享的精彩瞬间:

Fans Fan

Fans Fan分享了一款很不错的WordPress插件:Slideshow Gallery,这款插件适合用来作为产品详情页面的图片展示,可自动滚动,带缩略图,点击放大为lightbox的相册效果。

WordPress-Slideshow-Gallery

如何解决此类冲突呢?

最近在优化WordPress的过程当中,发现BuddyPress载入的global.js里边包含的 jQuery easing 脚本与其他很多常用的 Slideshow Gallery, Easy Nivo Slider等插件水火不相容,两者无论如何都无法共存,这样就得取舍了,要么卸载BuddyPress,要么抛弃Slideshow,但是这两种显然都不是理想的解决方案,那么换个思路试试看,如何能让两者不一起出现,于是找到了一款很不错的插件:Plugin Organizer 通过这款插件可以控制任意一个页面需要载入哪些插件,不要载入哪些插件,这样我只需要把分别需要用到BuddyPress和SlideShow的页面完全独立开来,让他们彼此没有碰到一块的机会就不会出现冲突了,当然这个解决方案还是不够完美,实际操作过程中发现,如果把BuddyPress等插件通过该插件进行全局的不载入,然后到实际BuddyPress的页面再单独载入,不过问题来了,进行了全局的排除,那么势必对所有要用到的页面都得挨个去定义载入,尽管这个插件可以进行网址子目录的包含之类的功能,但是假设新建了很多不同的Group和Forum等的时候,就变得很不可控了,毕竟BuddyPress类的站点,好多都是在用她来搭建一个全局的社会化站点,现在因为有插件的冲突,我们人为的去阻止了这个全局化,肯定不是一个理想方案。

我们都知道WordPress站点BuddyPress化以后,新增了很多全站的功能,比如站内短信互动,动态跟踪等特性,如果对BuddyPress进行全局的不载入,那么这些功能都只能放弃了,因此对于大多数用BuddyPress来做社会化站点的情况来说,这个方案直接pass了,那么我们再换个思路来设法解决这个问题,也就是既然提示的是jQuery easing的冲突,那么我们是否可以把jQuery easing从BuddyPress的global.js里边剥离出来,单独将这个js载入到具体涉及要用到jQuery easing的页面,而据我检测发现,要用到这个模块的也就是很少的几个地方,比如activity的发布表单,如果没了jQuery easing,这个表单就失效了,还有几个地方也都类似,那么就好办了,我们直接把这个模块剥离出来,然后把这个存成一个单独的jquery-easing.js的文件,载入到专门用来载入到BuddyPress核心页面的头部header-buddypress.php里边,这样其他非buddypress页面就完美实现了两者的共存,经测试完全可行。

总结

这个教程主要以思路为主,不直接将里边的代码贴出来,事实上好多时候授人与鱼,不如授人予渔,直接贴代码出来仅仅可以解决一个实际的问题,而我们都知道,WordPress和BuddyPress的版本经常更新,插件也是,兼容性问题千变万化,如果不能举一反三,很难实际的解决问题。