PEAK XOOPS - your menu in englishin japanese

your menu

  • You cannot open a new topic into this forum
  • Guests cannot post into this forum

normal your menu

msg# 1
Previous post - Next post | Parent - Children.1 | Posted on 2003/12/16 13:12
Luxus  二等兵   Posts: 1
i like your dynamic menu alot.. nice hack :D
it think i will grab it for my new site..
ahh before i forget i hope u read my mail about newbb
Votes:9 Average:2.22

normal Re: your menu

msg# 1.1
Previous post - Next post | Parent - Children.1 .2 | Posted on 2003/12/17 15:27
GIJOE  先任軍曹   Posts: 4110
hi Luxus.

This is not a hack but a theme.
I inserted these codes into theme.html of imago05
<{php}>
global $xoopsModule , $xoopsUser ;
$xoops_url = XOOPS_URL ;
$submenu_str = "" ;
$mainmenu_str = "
  <tr> 
    <td class='head_menu_left' width='15'> </td>
    <td class='head_menu'>
      <a href='$xoops_url/'>HOME</a> |
      <a href='$xoops_url/modules/news/'>NEWS</a> |
      <a href='$xoops_url/modules/mydownloads/'>DOWNLOADS</a> |
      <a href='$xoops_url/modules/xhnewbb/'>FORUMS</a> |
      <a href='$xoops_url/modules/piCal/'>piCal</a> |
      <a href='$xoops_url/modules/myalbum/'>myAlbum-P</a> |
    </td>
    <td class='head_menu_right'></td>
  </tr>\n" ;

if( isset( $xoopsModule ) && is_object( $xoopsModule ) ) {
	$dirname = $xoopsModule->getVar( 'dirname' ) ;
	$mainmenu_str = str_replace( "/modules/$dirname/'" , "/modules/$dirname/' style='background: #C0CCD9;'" , $mainmenu_str ) ;
	$sublinks =& $xoopsModule->subLink();
	if( count( $sublinks ) > 0 ) {
		$submenu_str .= "  <tr>\n    <td class='sub_menu_left' width='15'> </td>\n    <td class='sub_menu'>\n     " ;
		foreach( $sublinks as $sublink ) {
			$submenu_str .= "<a href='$xoops_url/modules/$dirname/{$sublink['url']}'>{$sublink['name']}</a> |\n";
		}
		$submenu_str .= "    </td>\n    <td class='sub_menu_right'></td>\n  </tr>\n" ;
	}
} else {
	$mainmenu_str = str_replace( "'>HOME</a>" , "' style='background: #C0CCD9;'>HOME</a>" , $mainmenu_str ) ;
	if( $xoopsUser ) {
		$pm_handler =& xoops_gethandler('privmessage');
		$criteria = new CriteriaCompo(new Criteria('read_msg', 0));
		$criteria->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
		$new_messages = $pm_handler->getCount($criteria);
		if( $xoopsUser->isadmin() ) $admin_link = "<a href='$xoops_url/admin.php' target='_blank'>Admin</a>" ;
		if( $new_messages > 0 ) {
			$pm_str = "<span style='color:#ff0000; font-weight: bold;'> ($new_messages)</span>" ;
			$pm_class = "class='highlight'" ;
		} else {
			$pm_str = '' ;
			$pm_class = '' ;
		}
		$submenu_str .= "
		<tr>
		  <td class='sub_menu_left' width='15'> </td>
		  <td class='sub_menu'>     
		    <a href='$xoops_url/user.php'>View Account</a> |
		    <a href='$xoops_url/edituser.php'>Edit Account</a> |
		    <a href='$xoops_url/notifications.php'>Notifications</a> |
		    <a href='$xoops_url/viewpmsg.php' $pm_class>Inbox$pm_str</a> |
		    $admin_link
		  </td>
		  <td class='sub_menu_right'></td>
		</tr>\n" ;
	}
}

echo $mainmenu_str ;
echo $submenu_str ;
<{/php}>
Votes:16 Average:4.38

question Re: your menu

msg# 1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2004/2/15 8:40
aubrey  二等兵   Posts: 6
I have been trying to do this for a long time but didn't know how to go about it!

I noticed that the subLinks are dynamic, would there by any way to make the main links dynamic also?

Thank you,

Aubrey
Votes:22 Average:6.82

question Re: your menu

msg# 1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2004/2/17 7:56
GIJOE  先任軍曹   Posts: 4110
hi aubrey.
Quote:
I noticed that the subLinks are dynamic, would there by any way to make the main links dynamic also?
It is not so easy that I teach you how to do that.

I have a plan to make a module which can display menus not only as block but also header or footer.

Of course, it only works under hacked themes.
But you can easily hack your theme, because it will be the minimum hack.(perhaps adding 1 or 2 lines)
Votes:0 Average:0.00

happy Re: your menu

msg# 1.1.1.1.1
Previous post - Next post | Parent - No child | Posted on 2004/2/18 1:12
aubrey  二等兵   Posts: 6
Okay,

I wil be in anticapation of the module!

Thank you for being soo helpful!

Aubrey
Votes:7 Average:10.00

question Re: your menu

msg# 1.1.2
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/23 17:57
Masaki  二等兵   Posts: 8
有り難くこちらのコードを使わさせて頂いております。

現在テーマ書き換え中でして、MAMP上ではテーマに表示されるモジュール名を画像に置き換えることが出来ていますが、さらにアクセス中のモジュールに於いてその画像をハイライトさせるように別の画像を表示させたいと思っています。

アメジスト・ブルーさんのこのコードを参考にすれば可能かと思い、そのままテーマに直書きしましたがダメでした。

テーマに組み込むにはどうすればよいか、または別の方法がありましたらお知恵をお貸し下さい。
Votes:8 Average:2.50

question Re: your menu

msg# 1.1.2.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/24 1:13
GIJOE  先任軍曹   Posts: 4110
ここで示した<{php}>ブロック内でなら、$dirnameが使えるのでそれで振り分ければいいと思います。
Votes:2 Average:5.00

question Re: your menu

msg# 1.1.2.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/24 13:59
Masaki  二等兵   Posts: 8
ご返答ありがとうございます。

前回の私の発言は、以下のコードでページが表示できているとして、

<{php}>
global $xoopsModule , $xoopsUser ;
$xoops_url = XOOPS_URL ;
$xoops_imageurl = XOOPS_THEME_URL.'/'.テーマ名.'' ; 
$submenu_str = "" ;
$mainmenu_str = "
  <tr> 
    <td class='headermenu'>
      <a href='$xoops_url/'><img src='$xoops_imageurl/home.gif'></a> |
      <a href='$xoops_url/modules/news/'><img src='$xoops_imageurl/news.gif'></a>
    </td>
  </tr>?n" ;

以下省略  
  

newsモジュールにアクセスしている時に、news.gif の替わりに news_highlite.gif という画像を表示させたい場合

<{php}>
global $xoopsModule , $xoopsUser ;
$xoops_url = XOOPS_URL ;
$xoops_imageurl = XOOPS_THEME_URL.'/'.テーマ名.'' ; 
$mod = $GLOBALS['xoopsModule'];
$dirname = (isset($mod) ? $mod->getVar('dirname') :'system');
$this->assign("module_current", $dirname);
$submenu_str = "" ;
$mainmenu_str = "
  <tr> 
    <td class='headermenu'>
      <a href='$xoops_url/'><img src='$xoops_imageurl/home.gif'></a> |
      <{if $module_current == $module.directory}><a href='$xoops_url/modules/news/'><img src='$xoops_imageurl/news_highlite.gif'></a><{else}><a href='$xoops_url/modules/news/'><img src='$xoops_imageurl/news.gif'></a><{/if}>
    </td>
  </tr>?n" ;

以下省略  
  

としたところ、うまくいかなかったというものです。

ここで $dirname にて振り分ければと言うご指摘で、<{if $module_current == $module.directory}> のところを<{if $dirname == 'news'}>などとしてみたりしましたが、両方の画像とコードが表示されてしまってうまくいきませんでした。

PHPに精通しておられる方なら何でもないことでしょうが、なにぶんにもPHPの知識がある方ではありませんので、具体的にどのようなコードを書けば解決できるのかよく分かりません。
ご教授のほどよろしくお願いします。
Votes:8 Average:8.75

question Re: your menu

msg# 1.1.2.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/25 5:24
GIJOE  先任軍曹   Posts: 4110
Quote:
newsモジュールにアクセスしている時に、news.gif の替わりに news_highlite.gif という画像を表示させたい場合

<{php}>
global $xoopsModule , $xoopsUser ;
$xoops_url = XOOPS_URL ;
$xoops_imageurl = XOOPS_THEME_URL.'/'.テーマ名.'' ; 
$mod = $GLOBALS['xoopsModule'];
$dirname = (isset($mod) ? $mod->getVar('dirname') :'system');
$this->assign("module_current", $dirname);
$submenu_str = "" ;
$mainmenu_str = "
  <tr> 
    <td class='headermenu'>
      <a href='$xoops_url/'><img src='$xoops_imageurl/home.gif'></a> |
      <{if $module_current == $module.directory}><a href='$xoops_url/modules/news/'><img src='$xoops_imageurl/news_highlite.gif'></a><{else}><a href='$xoops_url/modules/news/'><img src='$xoops_imageurl/news.gif'></a><{/if}>
    </td>
  </tr>\n" ;

以下省略  
  

としたところ、うまくいかなかったというものです。
ここは、PHPパートなので、<{}>といったタグは使えません。
ここを私がPHPで書くのは簡単ですが、その後が困るでしょう。

PHPを読み書きできないのなら、無理にPHPをいじろうとせず、テーマチェンジャーを使う、なんて方法はどうでしょうか?
Votes:1 Average:0.00

question Re: your menu

msg# 1.1.2.1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/29 9:05
Masaki  二等兵   Posts: 8
お返事が遅くなりました。

Quote:
テーマチェンジャーを使う、なんて方法はどうでしょうか?

おっしゃる通り、最初はテーマチェンジャーを使えば可能だと思いましたが、テーマを14個に複製しなければならないので複製は最小限に留めたいと思い、他の方法を模索していました。画像を使うことにしたのは、モジュールが多く、多言語ハックを入れているため、日英で表示されるメニューの横幅を統一したいと思ったからです。

ともかく、方向性は間違っていなかったことは分かりました。テーマを配布する訳でもありませんし、動作の見た目は変わらないようなので、当面はテーマチェンジャーで対応し、今後はローカル環境でこのコードを研究してみることとします。これ以上質問して、「教えて君」や「クレクレ君」扱いされるのも本意ではありませんから。

余談ですが、テーマチェンジャーでモジュールを指定する時にハイフンの含まれているモジュールは指定できませんでした。マルチメニューも「@〜」では指定できませんでしたが、この時はURLを直接指定することで対応できました。ハイフンの含まれているモジュールは配布元での更新が滞っていることもあり、いずれ別のモジュールに変える予定でしたのでこれを良い機会としたいと思います。
Votes:6 Average:10.00

question Re: your menu

msg# 1.1.2.1.1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/30 5:34
GIJOE  先任軍曹   Posts: 4110
Quote:
おっしゃる通り、最初はテーマチェンジャーを使えば可能だと思いましたが、テーマを14個に複製しなければならないので複製は最小限に留めたいと思い、他の方法を模索していました。画像を使うことにしたのは、モジュールが多く、多言語ハックを入れているため、日英で表示されるメニューの横幅を統一したいと思ったからです。
なるほど。
というか、読み返してみたら、現在選択中のモジュールについて、画像でハイライトしたい、っていう要望なんですね。
だったら、むしろテーマチェンジャーを使うべきじゃないでしょう。

Quote:
これ以上質問して、「教えて君」や「クレクレ君」扱いされるのも本意ではありませんから。
誤解があるようですが、「作って」とか「教えて」とかお願いされるのが嫌なら、最初からモジュールを公開しませんし、サポートフォーラムも開きませんよ

「教えて君」とか「クレクレ君」を非難する人は、自分も本当はそうしたいからなんじゃないですかね。私自身は、他人に訊くより自分で調べてしまった方が早いだろう、という性質ですし、モノ作りが基本的に好きなので、自分で作れるものを誰かに作ってもらうなんてむしろもったいない、とか思ってしまう方です。

ただ、現実に私の時間も有限なので、私にとって、面白い質問や要望を優先して、それ以外は対応なし、なんてことは当然あります。

閑話休題。

Quote:
余談ですが、テーマチェンジャーでモジュールを指定する時にハイフンの含まれているモジュールは指定できませんでした。マルチメニューも「@〜」では指定できませんでしたが、この時はURLを直接指定することで対応できました。ハイフンの含まれているモジュールは配布元での更新が滞っていることもあり、いずれ別のモジュールに変える予定でしたのでこれを良い機会としたいと思います。
ハイフンの含まれているモジュールっていうと、XP-Weatherですか?
実際のところ、他のモジュールに切り替えた方がいいかもしれませんね。

というわけで、ハイライトするやり方。
まったく動作確認してませんし、もっとスマートなやり方がありそうですが。

<{php}>
global $xoopsModule , $xoopsUser ;
$xoops_url = XOOPS_URL ;
$xoops_imageurl = XOOPS_THEME_URL.'/'.テーマ名.'' ; 
$submenu_str = "" ;
$mainmenu_str = "
  <tr> 
    <td class='head_menu_left' width='15'> </td>
    <td class='head_menu'>
      <a href='$xoops_url/'><img src='$xoops_imageurl/home.gif' /></a> |
      <a href='$xoops_url/modules/news/'><img src='$xoops_imageurl/news.gif' /></a> |
      (あとは適当に挿入)
    </td>
    <td class='head_menu_right'></td>
  </tr>\n" ;

if( isset( $xoopsModule ) && is_object( $xoopsModule ) ) {
	$dirname = $xoopsModule->getVar( 'dirname' ) ;
	$mainmenu_str = str_replace( "/{$dirname}.gif'" , "/{$dirname}_highlite.gif'" , $mainmenu_str ) ;
	$sublinks =& $xoopsModule->subLink();
	if( count( $sublinks ) > 0 ) {
		$submenu_str .= "  <tr>\n    <td class='sub_menu_left' width='15'> </td>\n    <td class='sub_menu'>\n     " ;
		foreach( $sublinks as $sublink ) {
			$submenu_str .= "<a href='$xoops_url/modules/$dirname/{$sublink['url']}'>{$sublink['name']}</a> |\n";
		}
		$submenu_str .= "    </td>\n    <td class='sub_menu_right'></td>\n  </tr>\n" ;
	}
} else {
	$mainmenu_str = str_replace( "/home.gif'" , "/home_highlite.gif'" , $mainmenu_str ) ;
	if( $xoopsUser ) {
		$pm_handler =& xoops_gethandler('privmessage');
		$criteria = new CriteriaCompo(new Criteria('read_msg', 0));
		$criteria->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
		$new_messages = $pm_handler->getCount($criteria);
		if( $xoopsUser->isadmin() ) $admin_link = "<a href='$xoops_url/admin.php' target='_blank'>Admin</a>" ;
		if( $new_messages > 0 ) {
			$pm_str = "<span style='color:#ff0000; font-weight: bold;'> ($new_messages)</span>" ;
			$pm_class = "class='highlight'" ;
		} else {
			$pm_str = '' ;
			$pm_class = '' ;
		}
		$submenu_str .= "
		<tr>
		  <td class='sub_menu_left' width='15'> </td>
		  <td class='sub_menu'>     
		    <a href='$xoops_url/user.php'>View Account</a> |
		    <a href='$xoops_url/edituser.php'>Edit Account</a> |
		    <a href='$xoops_url/notifications.php'>Notifications</a> |
		    <a href='$xoops_url/viewpmsg.php' $pm_class>Inbox$pm_str</a> |
		    $admin_link
		  </td>
		  <td class='sub_menu_right'></td>
		</tr>\n" ;
	}
}

echo $mainmenu_str ;
echo $submenu_str ;
<{/php}>
Votes:6 Average:0.00

question Re: your menu

msg# 1.1.2.1.1.1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/9/1 20:16
Masaki  二等兵   Posts: 8
教えて頂いた方法で画像が表示されました。
しかしながら、のぶのぶさんのsysutil多言語モジュールを使用していまして、英日と別の画像を表示させています。
Quote:
<{php}>
global $xoopsModule , $xoopsUser ;
$xoops_url = XOOPS_URL ;
$xoops_imageurl = XOOPS_THEME_URL.'/'.テーマ名.'' ; 
$submenu_str = "" ;
$mainmenu_str = "
  <tr> 
    <td class='head_menu_left' width='15'> </td>
    <td class='head_menu'>
      <a href='$xoops_url/'>[ja]<img src='$xoops_imageurl/home-J.gif' />[/ja][en]<img src='$xoops_imageurl/home-E.gif' />[/en]</a> |
      <a href='$xoops_url/modules/news/'>[ja]<img src='$xoops_imageurl/news-J.gif' />[/ja][en]<img src='$xoops_imageurl/news-E.gif' />[/en]</a> |
      (あとは適当に挿入)
    </td>
    <td class='head_menu_right'></td>
  </tr>?n" ;

としておりますため、このままでは言語切替で表示を変えることが出来ません。したがって、それ以下の部分を

Quote:
if( isset( $xoopsModule ) && is_object( $xoopsModule ) ) {
	$dirname = $xoopsModule->getVar( 'dirname' ) ;
	$mainmenu_str = str_replace( "/{$dirname}-J.gif'" , "/{$dirname}-J_highlite.gif'" , $mainmenu_str ) ;
	$mainmenu_str = str_replace( "/{$dirname}-E.gif'" , "/{$dirname}-E_highlite.gif'" , $mainmenu_str ) ;
	$sublinks =& $xoopsModule->subLink();
	if( count( $sublinks ) > 0 ) {
		$submenu_str .= "  <tr>?n    <td class='sub_menu_left' width='15'> </td>?n    <td class='sub_menu'>?n     " ;
		foreach( $sublinks as $sublink ) {
			$submenu_str .= "<a href='$xoops_url/modules/$dirname/{$sublink['url']}'>{$sublink['name']}</a> |?n";
		}
		$submenu_str .= "    </td>?n    <td class='sub_menu_right'></td>?n  </tr>?n" ;
	}
} else {
	$mainmenu_str = str_replace( "/home-J.gif'" , "/home-J_highlite.gif'" , $mainmenu_str ) ;
	$mainmenu_str = str_replace( "/home-E.gif'" , "/home-E_highlite.gif'" , $mainmenu_str ) ;
	if( $xoopsUser ) {
		$pm_handler =& xoops_gethandler('privmessage');
		$criteria = new CriteriaCompo(new Criteria('read_msg', 0));
		$criteria->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
		$new_messages = $pm_handler->getCount($criteria);
		if( $xoopsUser->isadmin() ) $admin_link = "<a href='$xoops_url/admin.php' target='_blank'>Admin</a>" ;
		if( $new_messages > 0 ) {
			$pm_str = "<span style='color:#ff0000; font-weight: bold;'> ($new_messages)</span>" ;
			$pm_class = "class='highlight'" ;
		} else {
			$pm_str = '' ;
			$pm_class = '' ;
		}
		$submenu_str .= "
		<tr>
		  <td class='sub_menu_left' width='15'> </td>
		  <td class='sub_menu'>     
		    <a href='$xoops_url/user.php'>View Account</a> |
		    <a href='$xoops_url/edituser.php'>Edit Account</a> |
		    <a href='$xoops_url/notifications.php'>Notifications</a> |
		    <a href='$xoops_url/viewpmsg.php' $pm_class>Inbox$pm_str</a> |
		    $admin_link
		  </td>
		  <td class='sub_menu_right'></td>
		</tr>?n" ;
	}
}

echo $mainmenu_str ;
echo $submenu_str ;
<{/php}>

のように些か強引な手法で書き換えてみましたところ、英日で別々の画像を表示することが出来ました。本来ならば、もっと良い方法があるとは思います。

GIJOEさんのご意見をお聞かせ下さい。
Votes:7 Average:10.00

question Re: your menu

msg# 1.1.2.1.1.1.1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/9/2 4:24
GIJOE  先任軍曹   Posts: 4110
Quote:
英日で別々の画像を表示することが出来ました。本来ならば、もっと良い方法があるとは思います。
GIJOEさんのご意見をお聞かせ下さい。
意見も何も、ちゃんと動いているなら横から口出すことはないと思いますが
preg_replace()なら、それぞれ1行で済むかもしれませんが、preg_replace()一個より、str_replace()2個の方が軽そうですしね。

裏技的ですが、サーバに置くファイル名を、home.gif.jap みたいな形にすれば、今まで通りの変換パターンでもOKだと思いますよ。
japという拡張子がお使いのApacheにMIME登録されていなければ、2つめの拡張子であるgifの方を解釈して、ちゃんとimage/gifとして送られてきます。
Votes:0 Average:0.00

question Re: your menu

msg# 1.1.2.1.1.1.1.1.1.1.1
Previous post - Next post | Parent - No child | Posted on 2006/9/5 20:24
Masaki  二等兵   Posts: 8
いまの状態で動いていますからそのままにしたいと思います。

Quote:
preg_replace()なら、それぞれ1行で済むかもしれませんが、preg_replace()一個より、str_replace()2個の方が軽そうですしね。
ええっと、これはどうしたら良いんでしょうか。参考までにお聞かせ下さい。

Quote:
裏技的ですが、サーバに置くファイル名を、home.gif.jap みたいな形にすれば、今まで通りの変換パターンでもOKだと思いますよ。
こちらのほうも今後の課題としてみます。

因に、ハイフンのあるモジュールとは「xooperstore-jp」というアマゾン・アフィリエイトのモジュールです。このモジュールは英語(amazon.com)版を日本語(amazon.co.jp)版にしたもので、英語に切り替えた時も商品以外の案内文が文字化けせずに英語表示されるため便利なので今迄使っていました。現在はほとんどの商品を「amaxoop2」に移植中ですが、こちらは(当然のことながら)言語ファイルが日本語しかありませんので日英翻訳をしなければなりません。また、直接テンプレートに日本語が書き込まれているところも多く、英語表示させた時の見栄えをよくすることにも苦心しています。
Votes:8 Average:0.00

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!