xugj_assignを使った DHTML menu で、Home を表示したい。


色々な情報を参考にして、xugj_assign.phpを使ったタブ型メニューや "List based DHTML menu" http://www.dhtmlgoodies.com/ を組み込んだテーマを作成してみました。

最初は、xugj_assign.phpのバージョンが古かったり、"xugj_menu_uls" 関連の記述がコメントアウトになっていたりして、少々はまりましたが・・・何とかうまく表示することができるようになりました。

しかし、"xugj_menu_uls" を利用した場合、Home（トップページのリンク）が表示されず各モジュールのリストだけが出るのですね。
とりあえず、トップページのリンクを divでくるんで、absolute指定でメニューの横に並べることで、見た目はちゃんとしたメニューにはなりましたが・・・ちょっと気持ちがすっきりしないんです。

できればトップページのリンクを "xugj_menu_uls" の ul 内に入れて、綺麗なメニュー構造にしたいと思っております。

まずは、皆さんにお聞きする前に自分でやってみようと思いまして、xugj_assign.php の "xugj_menu_uls" に関連する記述につき、下記のように5行目を追加してみました。（ここでは説明のため、行番号を追記しております。）

1. $this->assign( 'xugj_menu_uls' , xugj_assign_display_menu_ul_recursively( $united_menus ) ) ;
2. function xugj_assign_display_menu_ul_recursively( $level_menus , $dirname = '' )
3. {
4.	$ret = "<ul>\n" ;
5.	$ret .= "<li>\n<a href=\"".XOOPS_URL.'/'.$dirname."\">".Home."</a>\n</li>\n" ;
6.	foreach( $level_menus as $menu ) {
7.		if( ! empty( $menu['dirname'] ) ) $dirname = $menu['dirname'] ;
8.		$ret .= "<li>\n<a href=\"".XOOPS_URL.'/modules/'.$dirname.'/'.$menu['url']."\">".$menu['name']."</a>\n" ;
9.		if( ! empty( $menu['sub'] ) && is_array( $menu['sub'] ) ) $ret .= xugj_assign_display_menu_ul_recursively( $menu['sub'] , $dirname ) ;
10.		$ret .= "</li>\n" ;
11.	}
12.	return $ret . "</ul>\n" ;
13.}

これで、Home のリンクは出現してくれたんですが、他モジュールのリンクのサブメニュー部分にもそれぞれ Home が追加されてしまい、ちょっと混乱しております。

識者の皆様からは、PHPの勉強をしなさい！　と言われそうですが・・・
すいません。良い方法をお教えいただければ幸いです。



参考サイト
xugj_assign.php を作ろう
http://www.xugj.org/modules/d3forum/index.php?topic_id=125&autologin_loop_check=1

テーマ高機能化スクリプト xugj_assign.php
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=405

Smarty小ネタやカスタマイズマニュアルなどを拝見







246行目あたりから最後までの "xugj_menu_uls" 関連の記述がコメントアウトになっていたので、このコメントを外して有効にしてみた。

$this->assign( 'xugj_menu_uls' , xugj_assign_display_menu_ul_recursively( $united_menus ) ) ;
function xugj_assign_display_menu_ul_recursively( $level_menus , $dirname = '' )
{
	$ret = "<ul>\n" ;
	$ret .= "<li>\n<a href=\"".XOOPS_URL.'/'.$dirname."\">".Home."</a>\n</li>\n" ;
	foreach( $level_menus as $menu ) {
		if( ! empty( $menu['dirname'] ) ) $dirname = $menu['dirname'] ;
		$ret .= "<li>\n<a href=\"".XOOPS_URL.'/modules/'.$dirname.'/'.$menu['url']."\">".$menu['name']."</a>\n" ;
		if( ! empty( $menu['sub'] ) && is_array( $menu['sub'] ) ) $ret .= xugj_assign_display_menu_ul_recursively( $menu['sub'] , $dirname ) ;
		$ret .= "</li>\n" ;
	}
	return $ret . "</ul>\n" ;
}



$this->assign( 'xugj_menu_uls' , xugj_assign_display_menu_ul_recursively( $united_menus ) ) ;
function xugj_assign_display_menu_ul_recursively( $level_menus , $dirname = '' )
{
  $ret = "<ul id=\"navmenu\">\n" ;
	foreach( $level_menus as $menu ) {
		if( ! empty( $menu['dirname'] ) ) $dirname = $menu['dirname'] ;
		$ret .= "<li class=\"$dirname\">\n<a href=\"".XOOPS_URL.'/modules/'.$dirname.'/'.$menu['url']."\">".$menu['name']."</a>\n" ;
		if( ! empty( $menu['sub'] ) && is_array( $menu['sub'] ) ) $ret .= xugj_assign_display_menu_ul_recursively( $menu['sub'] , $dirname ) ;
		$ret .= "</li>\n" ;
	}
	return $ret . "</ul>\n" ;
}
