修改K2的Menu部分

K2的menu直接使用了WordPress的page,导致所有的page都会被当作menu放在页面上方。老早就想改掉一下,一部分page作为menu放在页面上方,一部分放在sidebar。

首先要替换掉header.php里显示menu的部分:

<?php wp_list_pages('sort_column=menu_order&depth=1&title_li='); ?>

替换为:

<?php
define("MENU_IDS","109,105,2"); //需要显示的文章的ID
$menu_ids = explode(',', MENU_IDS);
foreach ($menu_ids as $menu_id) {
	$menu_post = get_post($menu_id);
	echo '<li class="page_item"><a hre f="' . get_permalink($menu_post->ID) . '" title="' . $menu_post->post_title . '">' . $menu_post->post_title . '</a></li>' . "\n";
}
?>

之所以要用define定义常量,是因为这个东西在sidebar里还要用到,直接定义变量是不可以的,又懒得用全局变量了。sidebar里加上的代码是:

<?php /* Pages */ if (is_home()) { ?>
<div class="sb-pages">
<h2><?php _e('Pages','k2_domain'); ?></h2>
<ul>
<?php
$page_ids = array(222, 122, 205); //后面需要断行的文章的ID
$result = wp_list_pages('sort_column=menu_order&depth=1&exclude=' . MENU_IDS . '&echo=0&title_li=');
$result_a = explode("\n", $result);
foreach ($page_ids as $page_id) {
	$url = get_permalink($page_id);
	foreach ($result_a as $a => $b) {
		if (!(strpos($b, $url)===FALSE))
		$result_a[$a] = str_replace('</li>', '<div style="height:8px; margin:0;" /></li>', $result_a[$a]);
	}
}
echo implode("\n", $result_a);
?>
</ul>
</div>
<?php } ?>

Update:修正archive日期错误,应该使用其他变量比如$menu_post而不是$post。

Update2:今天开始用K2的SBM,新写了一个module来做这个事情。

本文共有 8 条评论修改K2的Menu部分


  1. 1 Dennys

    您好, 請問上面提到的 SBM module 有開放下載嗎?
    另外就是請教一下, 除了直接修改 header.php 之外, 是否有辦法在 header 新增某些 link 指到其他頁面? 或者是說新增某些 page, 但這個 page 是固定指到某個 URL 的? 譬如在 K2 使用 Extended Live Archive 時, 就會有個 Archive 的 page, 然後會轉到 /Archive 這個 URL.

  2. 2 yskin

    没有放出下载。。。还没弄好。

    现在我的Blog的设计只能设置一部分page在menu上,一部分在右边。最近忙着校对WordPress 2.0.7中文包的那1388条字符串,WordPress 2.1又马上发布了,忙啊。我晓得N多人需要在menu那里做链接指向其他网站,等什么时候你看到我的menu出现了我的flickr链接的时候,那么就是改好啦 :)

  3. 3 Dennys
  4. 4 yskin

    看两个插件的名字就知道,这是两个转向插件,利用PHP程序来让访问者转向另外一个页面。下载看了一下,两个是一样的,都是页面模版(page template)。它的原理是,当你访问这个页面时,会返回一个HTTP头,要求页面刷新到另一个地址。

    这是个办法,不过更像是没办法的办法。如果这样做,就等于是添加了一个page,比如地址是http://yskin.net/about/,而当访问者点击进入这个地址时,浏览器会收到刷新请求,从而转到新的地址,比如http://www.flickr.com。

    如果非要用这个办法,其实可以更简单一点。编辑.htaccess文件,加入Redirect /about/ http://www.flickr.com/这样的代码就可以了。

    一个绕了一圈的办法,而非直接的办法,慎用慎用。

  1. 1 在 Wordpress 將某個 page/post 轉到其他 URL 的作法 at Dennys’ blog
    Pingback2007-1-26 9:23 下午
  2. 2 将K2的page有选择的放入sidebar at Ks Home
    Pingback2007-5-23 10:04 上午
  3. 3 K2中将page有选择的放入sidebar at Ks Home
    Pingback2007-5-30 8:35 下午
  4. 4 K2中将page有选择的放入sidebar - Ks Home
    Pingback2007-6-27 11:16 上午

请留下您的评论: