Crayon Syntax Highlighter代码高亮插件与fancybox图片暗箱冲突的解决方法

所属分类: CMS教程 / WordPress 阅读数: 619
收藏 0 赞 0 分享
其实,这是一个历史遗留问题,在最开始建站的时候就已经出现了,在知更鸟主题和Crayon Syntax Highlighter这个插件之间,我最终选择了前者。
在知更鸟主题环境下启用Crayon Syntax Highlighter插件,会出现如下冲突情况:

①、图片暗箱失效
②、下载暗箱失效
③、公告不能滚动
刚接触建站时,张戈也是一个绝对的菜鸟,除了运维啥都不会,出现这些问题时,只能舍弃其中一个。。。
随着接触建站时间的增长,已经能够编写一般的php和js脚本、会修改绝大部分网站功能了。这次给公司做百科网站时,再一次用到了Crayon Syntax Highlighter这个插件,依然如同初恋,爱不释手!
秉着再次重逢,绝不放手的心态,决心要让知更鸟和Crayon Syntax Highlighter插件共存!

一、冲突分析

熟练的按下F12,开始debug:



看来是JQuery的问题,要不就是重复加载JQ冲突了,要不就是没加载成功,进一步查看源代码:

头部已加载JQ:

 赫然发现底部也加载了JQ:

看来是插件未判断JQ环境,就强行加载导致了冲突!

二、着手解决

网上随便搜了一把,就找到了避免JQ重复加载的方法。将如下代码添加到主题的function.php当中即可:

PHP Code复制内容到剪贴板
  1. //禁止加载默认jq库   
  2. if ( !is_admin() ) { // 后台不禁止   
  3. function my_init_method() {   
  4. wp_deregister_script( 'jquery' ); // 取消原有的 jquery 定义   
  5. }   
  6. add_action('init''my_init_method');   
  7. }   
  8. wp_deregister_script( 'l10n' );  

保存后,立即试了下效果,发现之前的问题倒是解决了,但是Crayon Syntax Highlighter的浮动标题出了问题,不能动了。查看下源代码,发现不但之前底部加载的JQ没了,而且插件相关的JS也都没了!原来上面的代码是禁止所有由wp_footer函数输出的js啊??

三、基本解决

不过,这算是小问题了,先把上面的代码屏蔽,然后打开文章源代码,把除重复加载的JQ之外的其他代码全部拷贝一份,然后粘贴到footer.php或header.php的相应位置即可:

PHP Code复制内容到剪贴板
  1. <!-- 代码高亮 -->   
  2. <?php if ( is_single() ) { ?>   
  3. <script type='text/javascript'>   
  4. /* <![CDATA[ */  
  5. var quicktagsL10n = {"closeAllOpenTags":"\u5173\u95ed\u6240\u6709\u6253\u5f00\u7684\u6807\u7b7e","closeTags":"\u5173\u95ed\u6807\u7b7e","enterURL":"\u8f93\u5165URL","enterImageURL":"\u8f93\u5165\u56fe\u50cfURL","enterImageDescription":"\u4e3a\u56fe\u50cf\u8f93\u5165\u63cf\u8ff0","fullscreen":"\u5168\u5c4f","toggleFullscreen":"\u5207\u6362\u5168\u5c4f\u6a21\u5f0f","textdirection":"\u6587\u672c\u65b9\u5411","toggleTextdirection":"\u5207\u6362\u7f16\u8f91\u5668\u6587\u672c\u4e66\u5199\u65b9\u5411"};   
  6. /* ]]> */  
  7. </script>   
  8. <script type='text/javascript' src='http://res.zhangge.net/wp-includes/js/quicktags.min.js?ver=4.0'></script>   
  9. <script type='text/javascript'>   
  10. /* <![CDATA[ */  
  11. var CrayonSyntaxSettings = {"version":"2.6.6","is_admin":"0","ajaxurl":"http:\/\/zhangge.net\/wp-admin\/admin-ajax.php","prefix":"crayon-","setting":"crayon-setting","selected":"crayon-setting-selected","changed":"crayon-setting-changed","special":"crayon-setting-special","orig_value":"data-orig-value","debug":""};   
  12. var CrayonSyntaxStrings = {"copy":"\u4f7f\u7528 %s \u590d\u5236\uff0c\u4f7f\u7528 %s \u7c98\u8d34\u3002","minimize":"\u70b9\u51fb\u5c55\u5f00\u4ee3\u7801"};   
  13. var CrayonTagEditorSettings = {"home_url":"http:\/\/zhangge.net","css":"crayon-te","css_selected":"crayon-selected","code_css":"#crayon-code","url_css":"#crayon-url","url_info_css":"#crayon-te-url-info","lang_css":"#crayon-lang","title_css":"#crayon-title","mark_css":"#crayon-mark","range_css":"#crayon-range","inline_css":"crayon-inline","inline_hide_css":"crayon-hide-inline","inline_hide_only_css":"crayon-hide-inline-only","hl_css":"#crayon-highlight","switch_html":"#content-html","switch_tmce":"#content-tmce","tinymce_button_generic":".mce-btn","tinymce_button":"a.mce_crayon_tinymce,.mce-i-crayon_tinymce","tinymce_button_unique":"mce_crayon_tinymce","tinymce_highlight":"mce-active","submit_css":"#crayon-te-ok","cancel_css":"#crayon-te-cancel","content_css":"#crayon-te-content","dialog_title_css":"#crayon-te-title","submit_wrapper_css":"#crayon-te-submit-wrapper","data_value":"data-value","attr_sep":":","css_sep":"_","fallback_lang":"sh","dialog_title_add":"\u63d2\u5165\u4ee3\u7801\u9ad8\u4eae","dialog_title_edit":"\u7f16\u8f91\u4ee3\u7801\u9ad8\u4eae","submit_add":"\u63d2\u5165","submit_edit":"\u4fdd\u5b58","bar":"#crayon-te-bar","bar_content":"#crayon-te-bar-content","extensions":{"scpt":"applescript","applescript":"applescript","swf":"as","fla":"as","cs":"c#","h":"c++","hh":"c++","hpp":"c++","hxx":"c++","h++":"c++","cc":"c++","cpp":"c++","cxx":"c++","c++":"c++","pas":"delphi","java":"java","class":"java","jar":"java","mv":"miva","mvc":"miva","mvt":"miva","m":"objc","mm":"objc","pl":"perl","py":"python","pyw":"python","pyc":"python","pyo":"python","pyd":"python","rb":"ruby","rbx":"ruby","rhtml":"ruby","vbs":"vb"}};   
  14. var CrayonSyntaxSettings = {"version":"2.6.6","is_admin":"0","ajaxurl":"http:\/\/zhangge.net\/wp-admin\/admin-ajax.php","prefix":"crayon-","setting":"crayon-setting","selected":"crayon-setting-selected","changed":"crayon-setting-changed","special":"crayon-setting-special","orig_value":"data-orig-value","debug":""};   
  15. var CrayonSyntaxStrings = {"copy":"\u4f7f\u7528 %s \u590d\u5236\uff0c\u4f7f\u7528 %s \u7c98\u8d34\u3002","minimize":"\u70b9\u51fb\u5c55\u5f00\u4ee3\u7801"};   
  16. /* ]]> */  
  17. </script>   
  18. <script type='text/javascript' src='http://res.zhangge.net/wp-content/plugins/crayon-syntax-highlighter/js/min/crayon.te.min.js?ver=2.6.6'></script>   
  19. <?php } ?>    
  20. <!-- 代码高亮 -->  

全部保存后,代码高亮正常了,公告也动了,尼玛图片暗箱居然点击后会弹出2次?关了第一层,里面还有第二层...

四、彻底解决

分别看了一下2层弹出图片的ID,发现是不一样的,一种是鸟哥主题的fancybox-img,另一个是colorbox,我有没安装colorbox暗箱插件,哪来的?
最终发现是Crayon Syntax Highlighter插件的crayon.te.min.js带colorbox暗箱功能,导致同时出现了2次图片弹出!真是冤家聚头。。。
最后,我用了一个简单的方法,就解决了这个问题:
尼玛,不是弹2次么?那我把其中一个hidden不就行了??
于是找到由Crayon Syntax Highlighter插件弹出的那个图片的ID,然后对这个ID设置隐藏CSS属性就搞定了!
解决办法:将以下代码添加到上面的高亮代码当中:

CSS Code复制内容到剪贴板
  1. <style type="text/css">   
  2. #colorbox {   
  3.    display:none !important;   
  4.  }   
  5. </style>  

或者,将以下代码添加到主题的style.css当中:

CSS Code复制内容到剪贴板
  1. #colorbox {   
  2.    display:none !important;   
  3.  }  

就能隐藏ID为colorbox的弹出图片,从而变相解决了重复弹出的问题!
至此,Crayon Syntax Highlighter插件终于和知更鸟主题和睦共处了!真是不容易啊....
值得注意的是,JQuery请使用1.7~1.8左右版本,太高版本中可能会缺少知更鸟主题部分所需功能。
五、强迫症

作为一个中度强迫症,张戈花了几乎一整天的时间,将博客200多篇文章的高亮代码,纯手工替换为Crayon Syntax Highlighter高亮模式,我勒个去啊,真是累得一逼!!!

更多精彩内容其他人还在看

wordpress wp_list_categories(分类的链接列表)的使用方法

用分类做为导航拦及wp_list_categories的用法,下面是具体的示例,感兴趣的朋友可以参考下哈
收藏 0 赞 0 分享

wordpress通过当前文章的ID获取文章标题内容简介的信息

wordpress通过当前文章的ID获取文章的信息用的极多,在wordpress二次开发中经常会使用到,本文将详细介绍,需要了解的朋友可以参考下
收藏 0 赞 0 分享

wordpress获取当前文章的评论数实现代码

wordpress获取当前文章的评论数,是每一个使用wordpress的朋友所疑惑不解的地方,本文将给出解决方法,可供参考
收藏 0 赞 0 分享

wordpress添加更新数据库等操作提示报错

很长时间没有动过wordpress里的布局了,当我进行添加和更新操作时,连连报错,于是搜集整理一些,拿出来和大家分享
收藏 0 赞 0 分享

WordPress高级自定义布局的内容编辑器(TinyMCE)模板

WordPress的编辑器TinyMCE是一个非常强大的工具,对于网页设计师来说,使用WordPress的编辑器TinyMCE是没什么困难的,但是对于那些不怎么了解HTML的人来说却用起来不是那么的得心应手
收藏 0 赞 0 分享

WordPress手动修改文章排列顺序摆脱按发布时间升降序排列

我们常见的WordPress站点文章排序,通常情况下是按发布时间的升序或降序方式排列,想手动修改文章的排列方式,可以随意更改文章的排列位置这种排序方式几乎可以满足我们的特殊需求了
收藏 0 赞 0 分享

wordpress如何设置文章置顶以及区分置顶文章与普通文章

很多博客都有自己的置顶文章,除了位置差异外,跟其他文章是没有任何区别的,那我们怎样才能将它们区别开来呢,本文将介绍几种方法,需要的朋友可以参考下
收藏 0 赞 0 分享

WordPress插件和主题编写时cookie应如何设置

编写WordPressc插件和主题的时候,经常需要用到cookie,但是如果你在WordPress主题文件中直接使用php的setcookie()来发送cookie,那是完全不行的,我怀疑WordPress初始化的时候已经发送了其他输出,才导致setcookie失效
收藏 0 赞 0 分享

Dreamweaver代码的格式化功能掌控html代码的格式

今天偶然发现了Dreamweaver的一个非常有用的功能,就是代码的格式化功能,我们写的html或者css代码都计较混乱,难以阅读,等到所使用的标签越来越多,嵌套越来越深,这时我们已经很难去掌控html代码的格式问题了
收藏 0 赞 0 分享

如何给wordpress创建动态的置顶文章长时间引起注意

置顶文章的作用是希望长时间引起读者注意,可以表明站点的简介、版权声明、友情链接的交换原则等;本文将介绍如何给wordpress创建动态的置顶文章,需要了解的朋友可以参考下
收藏 0 赞 0 分享
查看更多