WPINK CMS主题添加下拉分类导航列表, 向下兼容IE低版本

时间: 2009-12-28 / 分类: 技巧 / 浏览次数: 324 次 / 4个评论 发表评论

WPINK CMS 主题是WPYOU最新发布的一款Wordpress CMS主题, 主题以红色为主色, 主题预留了多个符合Google AdSense尺寸的广告位, 方便嵌入广告. 但是这个主题的一个遗憾就是没有内置下拉分类导航模式, 这对于CMS主题来说是一个不大不小缺陷.

CMS网站可以容纳较多的内容和分类, 所以下拉导航菜单是不可缺少的.

Wordpress可以通过参数调出多级菜单, 只要配合相应的CSS, Wordpress也可以设计出媲美其他CMS程序的多级导航菜单.

既然Wordpress已经支持这种导航模式, 我们就可以为WPINK CMS主题打造和Ei2U.COM一样的下拉二级分类导航.

达到这种效果只需要三步,

首先, 打开header.php

找到

  1. <?php echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2><span>$3</span></a>', wp_list_categories('echo=0&orderby=id&title_li=&depth=1')); ?>

替换成

  1. <?php echo preg_replace('@\<li([^>]*)>\<a([^>]*)>(.*?)\<\/a>@i', '<li$1><a$2><span>$3</span></a>', wp_list_categories('echo=0&orderby=id&title_li=&depth=2')); ?>

完成第一步, 现在打开style.css

找到/* Main Navigation */注释, 将注释下的所有样式替换为

  1. /* Main Navigation */
  2. .navigation{ padding:0px 15px; width:930px; height:40px;}
  3. .navigation li{ position:relative;float:left;z-index:2; height:26px; margin:8px 0px 6px; font-size:14px; color:#DDD;}
  4. .navigation li a:link, .navigation li a:visited{ float:left; margin:0px 2px; padding-left:10px; height:26px; line-height:25px; color:#DDD; text-decoration:none; cursor:pointer; display:block;}
  5. .navigation li a span{ padding:1px 8px 6px 0px; display:inline-block;}
  6. .navigation li ul {position:absolute;top:32px;left:0px;display:none;z-index:1000;width:150px;opacity:.90;filter:alpha(opacity=90);-moz-opacity:0.9;background:#4D4D4D;}
  7. .navigation li:hover ul {display:block;}
  8. .navigation li ul li {list-style:none;font-size:12px;float:left;clear:both;}
  9. .navigation li ul li a {color:#ddd;width:125px;line-height:2.5em;text-decoration:none;display:block;border-bottom:1px solid #1A2736;text-indent:0;height:auto;padding-left:10px;padding-right:10px;}

最后一步, 这一步是为了让IE6或者IE5.5这些低版本的浏览器支持hover类, 如果不打算添加对低版本IE的支持, 可以省略这一步.

Ei2U推荐header上添加了对所有版本号小于IE7的IE浏览器会自动加载这段来达到我们的效果. 效率上会比用js技术更迅速及高效!

打开记事本, 将下面的代码

  1. <attach event="ondocumentready" handler="parseStylesheets" />
  2. <script>
  3. var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,
  4. currentSheet, doc = window.document, hoverEvents = [], activators = {
  5. onhover:{on:'onmouseover', off:'onmouseout'},
  6. onactive:{on:'onmousedown', off:'onmouseup'},
  7. onunknown:{on:'onfocus', off:'onblur'}
  8. }
  9.  
  10. function parseStylesheets() {
  11. if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
  12. window.attachEvent('onunload', unhookHoverEvents);
  13. var sheets = doc.styleSheets, l = sheets.length;
  14. for(var i=0; i<l; i++)
  15. parseStylesheet(sheets[i]);
  16. }
  17. function parseStylesheet(sheet) {
  18. if(sheet.imports) {
  19. try {
  20. var imports = sheet.imports, l = imports.length;
  21. for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
  22. } catch(securityException){}
  23. }
  24.  
  25. try {
  26. var rules = (currentSheet = sheet).rules, l = rules.length;
  27. for(var j=0; j<l; j++) parseCSSRule(rules[j]);
  28. } catch(securityException){}
  29. }
  30.  
  31. function parseCSSRule(rule) {
  32. var select = rule.selectorText, style = rule.style.cssText;
  33. if(!csshoverReg.test(select) || !style) return;
  34. var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
  35. var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
  36. var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
  37. var affected = select.replace(/:(hover|active|unknown).*$/, '');
  38. var elements = getElementsBySelect(affected);
  39. if(elements.length == 0) return;
  40.  
  41. currentSheet.addRule(newSelect, style);
  42. for(var i=0; i<elements.length; i++)
  43. new HoverElement(elements[i], className, activators[pseudo]);
  44. }
  45.  
  46. function HoverElement(node, className, events) {
  47. if(!node.hovers) node.hovers = {};
  48. if(node.hovers[className]) return;
  49. node.hovers[className] = true;
  50. hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
  51. hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
  52. }
  53. function hookHoverEvent(node, type, handler) {
  54. node.attachEvent(type, handler);
  55. hoverEvents[hoverEvents.length] = {
  56. node:node, type:type, handler:handler
  57. };
  58. }
  59.  
  60. function unhookHoverEvents() {
  61. for(var e,i=0; i<hoverEvents.length; i++) {
  62. e = hoverEvents[i];
  63. e.node.detachEvent(e.type, e.handler);
  64. }
  65. }
  66.  
  67. function getElementsBySelect(rule) {
  68. var parts, nodes = [doc];
  69. parts = rule.split(' ');
  70. for(var i=0; i<parts.length; i++) {
  71. nodes = getSelectedNodes(parts[i], nodes);
  72. } return nodes;
  73. }
  74. function getSelectedNodes(select, elements) {
  75. var result, node, nodes = [];
  76. var identify = (/\#([a-z0-9_-]+)/i).exec(select);
  77. if(identify) {
  78. var element = doc.getElementById(identify[1]);
  79. return element? [element]:nodes;
  80. }
  81. var classname = (/\.([a-z0-9_-]+)/i).exec(select);
  82. var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
  83. var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
  84. for(var i=0; i<elements.length; i++) {
  85. result = tagName? elements[i].all.tags(tagName):elements[i].all;
  86. for(var j=0; j<result.length; j++) {
  87. node = result[j];
  88. if(classReg && !classReg.test(node.className)) continue;
  89. nodes[nodes.length] = node;
  90. }
  91. }
  92. return nodes;
  93. }
  94. </script>

保存为”csshover.htc”, 注意后缀名为htc. 上传到WPINK主题目录的js目录上, 然后在header.php上添加

  1. <!--[if lt IE 7]>
  2. <style type="text/css">
  3. body {behavior:url("<?php bloginfo('template_url'); ?>/js/csshover.htc");}
  4. </style>
  5. <![endif]-->

这样就完成了! 刷新一下主题看看效果吧! 有什么问题可以在Ei2U留言交流.

4个评论

  1. vk
    2010/02/10 at 03:48:21

    博主 你好 请教下WPBoxedTech底部加密代码怎么破解 谢谢了 如果能破解请发破解后的代码到我邮箱
    将不胜感激

  2. 深海の八爪鱼
    2010/02/05 at 08:42:01

    请问楼主的主题能分享一下吗?可以的话麻烦发我邮箱~谢谢

    • EI
      2010/02/05 at 21:28:55

      我只是修改了颜色而已, 没什么特别的地方, 你可以下载原始的WPINK主题, 现在用的主题最主要的就是Logo不同而已, 不打算共享呵呵…

发表评论

您的昵称 *

您的邮箱 *

您的网站

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif

站内所有评论和相关回复不会有任何邮件通知, 如有需要请订阅本站评论.