代码实现 WordPress Archives 页面
这几天 Forece 一直在精简博客中的各种插件、JS、CSS 等等。发现很多插件都自己调用了 WordPress 库中自带的 JS。比如这篇文章我原来用的 Clean Archives Reloaded 插件。是一个用来建立 WordPress 博客中归档页面的插件。非常简单易用。不过里边的 JQuery 效果调用了 WordPress 目录里边自带的 Jquery 库文件。而我又在 Header.php 中加载了 Google 的 Jquery 库。重复了,那么就直接干掉吧。又精简了一个插件。
下面是详细步骤(引用自 zww 博客)
1. 把下面的 archives_list_SHe 函数代码扔进主题的 functions.php 里面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | function archives_list_SHe() { global $wpdb,$month; $lastpost = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_date <'" . current_time('mysql') . "' AND post_status='publish' AND post_type='post' AND post_password='' ORDER BY post_date DESC LIMIT 1"); $output = get_option('SHe_archives_'.$lastpost); if(empty($output)){ $output = ''; $wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE 'SHe_archives_%'"); $q = "SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month, count(ID) as posts FROM $wpdb->posts p WHERE post_date <'" . current_time('mysql') . "' AND post_status='publish' AND post_type='post' AND post_password='' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC"; $monthresults = $wpdb->get_results($q); if ($monthresults) { foreach ($monthresults as $monthresult) { $thismonth = zeroise($monthresult->month, 2); $thisyear = $monthresult->year; $q = "SELECT ID, post_date, post_title, comment_count FROM $wpdb->posts p WHERE post_date LIKE '$thisyear-$thismonth-%' AND post_date AND post_status='publish' AND post_type='post' AND post_password='' ORDER BY post_date DESC"; $postresults = $wpdb->get_results($q); if ($postresults) { $text = sprintf('%s %d', $month[zeroise($monthresult->month,2)], $monthresult->year); $postcount = count($postresults); $output .= '<ul class="archives-list"><li><span class="archives-yearmonth">' . $text . ' (' . count($postresults) . ' ' . __('篇文章','freephp') . ')</span><ul class="archives-monthlisting">' . "\n"; foreach ($postresults as $postresult) { if ($postresult->post_date != '0000-00-00 00:00:00') { $url = get_permalink($postresult->ID); $arc_title = $postresult->post_title; if ($arc_title) $text = wptexturize(strip_tags($arc_title)); else $text = $postresult->ID; $title_text = __('View this post','freephp') . ', "' . wp_specialchars($text, 1) . '"'; $output .= '<li>' . mysql2date('d日', $postresult->post_date) . ': ' . "<a href='$url' title='$title_text'>$text</a>"; $output .= ' (' . $postresult->comment_count . ')'; $output .= '</li>' . "\n"; } } } $output .= '</ul></li></ul>' . "\n"; } update_option('SHe_archives_'.$lastpost,$output); }else{ $output = '<div class="errorbox">'. __('Sorry, no posts matched your criteria.','freephp') .'</div>' . "\n"; } } echo $output; } |
2. 复制一份主题的 page.php 更名为 archives.php,然后在最顶端加入:
1 2 3 4 5 | <?php /* Template Name: archives */ ?> |
再然后找到类似 ,在其下面加入如下代码(2010.7.21 edit)
1 2 | <a id="expand_collapse" href="#">全部展开/收缩</a> <div id="archives"><?php archives_list_SHe(); ?></div> |
进wp后台添加一新页面,在右侧栏模板选择 archives
3. 如果你的主题本身加载了 jQuery 库,那么继续把下面的 jQ 代码加上去,就会有滑动伸缩效果了
1 2 3 4 5 6 7 8 9 10 11 12 13 | /* 存档页面 jQ伸缩 */ $('#expand_collapse,.archives-yearmonth').css({cursor:"s-resize"}); $('#archives ul li ul.archives-monthlisting').hide(); $('#archives ul li ul.archives-monthlisting:first').show(); $('#archives ul li span.archives-yearmonth').click(function(){$(this).next().slideToggle('fast');return false;}); //以下下是全局的操作 $('#expand_collapse').toggle( function(){ $('#archives ul li ul.archives-monthlisting').slideDown('fast'); }, function(){ $('#archives ul li ul.archives-monthlisting').slideUp('fast'); }); |
css 样式可以通过 #archive 来定义
Refference:
Zwwooooo Blog - 代码实现WordPress归档页面模板[速度很快] - http://zww.me/archives/25209
从Archives.php 再然后找到类似 ,在其下面加入如下代码(2010.7.21 edit)。
掉了
说句实话 我都不知道这个是啥东西。
我用的可以在后台编辑页面修改显示方式的
这个很强大啊
都没怎么折腾这些哦
留下个记号,顺便收藏了,以后用得着
技术含量太高!
你也用上了,哈
现在还不敢这样折腾博客。
技术不过关!!!
把小辉网的链接更新下吧 新的是:(www.biyage.com 碧雅阁)
好的,这就处理。
这个功能我还是看你用这个插件我就跟着用了。现在嘛又换代码了。。
因为和我的Jquery库冲突了。
我也用的这个
暂时不想弄,等跟你一样有点了家底儿再弄。
不好意思,一不小心就抢了个沙发。