WPINK CMS主题添加下拉分类导航列表, 向下兼容IE低版本
WPINK CMS 主题是WPYOU最新发布的一款Wordpress CMS主题, 主题以红色为主色, 主题预留了多个符合Google AdSense尺寸的广告位, 方便嵌入广告. 但是这个主题的一个遗憾就是没有内置下拉分类导航模式, 这对于CMS主题来说是一个不大不小缺陷.
CMS网站可以容纳较多的内容和分类, 所以下拉导航菜单是不可缺少的.
Wordpress可以通过参数调出多级菜单, 只要配合相应的CSS, Wordpress也可以设计出媲美其他CMS程序的多级导航菜单.
既然Wordpress已经支持这种导航模式, 我们就可以为WPINK CMS主题打造和Ei2U.COM一样的下拉二级分类导航.
达到这种效果只需要三步,
首先, 打开header.php
找到
- <?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')); ?>
替换成
- <?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 */注释, 将注释下的所有样式替换为
- /* Main Navigation */
- .navigation{ padding:0px 15px; width:930px; height:40px;}
- .navigation li{ position:relative;float:left;z-index:2; height:26px; margin:8px 0px 6px; font-size:14px; color:#DDD;}
- .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;}
- .navigation li a span{ padding:1px 8px 6px 0px; display:inline-block;}
- .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;}
- .navigation li:hover ul {display:block;}
- .navigation li ul li {list-style:none;font-size:12px;float:left;clear:both;}
- .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技术更迅速及高效!
打开记事本, 将下面的代码
- <attach event="ondocumentready" handler="parseStylesheets" />
- <script>
- var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,
- currentSheet, doc = window.document, hoverEvents = [], activators = {
- onhover:{on:'onmouseover', off:'onmouseout'},
- onactive:{on:'onmousedown', off:'onmouseup'},
- onunknown:{on:'onfocus', off:'onblur'}
- }
- function parseStylesheets() {
- if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
- window.attachEvent('onunload', unhookHoverEvents);
- var sheets = doc.styleSheets, l = sheets.length;
- for(var i=0; i<l; i++)
- parseStylesheet(sheets[i]);
- }
- function parseStylesheet(sheet) {
- if(sheet.imports) {
- try {
- var imports = sheet.imports, l = imports.length;
- for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
- } catch(securityException){}
- }
- try {
- var rules = (currentSheet = sheet).rules, l = rules.length;
- for(var j=0; j<l; j++) parseCSSRule(rules[j]);
- } catch(securityException){}
- }
- function parseCSSRule(rule) {
- var select = rule.selectorText, style = rule.style.cssText;
- if(!csshoverReg.test(select) || !style) return;
- var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
- var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
- var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
- var affected = select.replace(/:(hover|active|unknown).*$/, '');
- var elements = getElementsBySelect(affected);
- if(elements.length == 0) return;
- currentSheet.addRule(newSelect, style);
- for(var i=0; i<elements.length; i++)
- new HoverElement(elements[i], className, activators[pseudo]);
- }
- function HoverElement(node, className, events) {
- if(!node.hovers) node.hovers = {};
- if(node.hovers[className]) return;
- node.hovers[className] = true;
- hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
- hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
- }
- function hookHoverEvent(node, type, handler) {
- node.attachEvent(type, handler);
- hoverEvents[hoverEvents.length] = {
- node:node, type:type, handler:handler
- };
- }
- function unhookHoverEvents() {
- for(var e,i=0; i<hoverEvents.length; i++) {
- e = hoverEvents[i];
- e.node.detachEvent(e.type, e.handler);
- }
- }
- function getElementsBySelect(rule) {
- var parts, nodes = [doc];
- parts = rule.split(' ');
- for(var i=0; i<parts.length; i++) {
- nodes = getSelectedNodes(parts[i], nodes);
- } return nodes;
- }
- function getSelectedNodes(select, elements) {
- var result, node, nodes = [];
- var identify = (/\#([a-z0-9_-]+)/i).exec(select);
- if(identify) {
- var element = doc.getElementById(identify[1]);
- return element? [element]:nodes;
- }
- var classname = (/\.([a-z0-9_-]+)/i).exec(select);
- var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
- var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
- for(var i=0; i<elements.length; i++) {
- result = tagName? elements[i].all.tags(tagName):elements[i].all;
- for(var j=0; j<result.length; j++) {
- node = result[j];
- if(classReg && !classReg.test(node.className)) continue;
- nodes[nodes.length] = node;
- }
- }
- return nodes;
- }
- </script>
保存为”csshover.htc”, 注意后缀名为htc. 上传到WPINK主题目录的js目录上, 然后在header.php上添加
- <!--[if lt IE 7]>
- <style type="text/css">
- body {behavior:url("<?php bloginfo('template_url'); ?>/js/csshover.htc");}
- </style>
- <![endif]-->
这样就完成了! 刷新一下主题看看效果吧! 有什么问题可以在Ei2U留言交流.
2010/02/10 at 03:48:21
博主 你好 请教下WPBoxedTech底部加密代码怎么破解 谢谢了 如果能破解请发破解后的代码到我邮箱
将不胜感激
2010/02/11 at 12:06:33
你可以看看这篇文章, 已经写得很详细了…
http://www.chsweb.cn/?p=662
2010/02/05 at 08:42:01
请问楼主的主题能分享一下吗?可以的话麻烦发我邮箱~谢谢
2010/02/05 at 21:28:55
我只是修改了颜色而已, 没什么特别的地方, 你可以下载原始的WPINK主题, 现在用的主题最主要的就是Logo不同而已, 不打算共享呵呵…