xoops cube legacy のマルチメニューでメニューボタンを作っております。

通常は「トップ」のボタン表示でオンマウス(マウスオーバー)で「TOP」に変えたいのですが、良い方法はないでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:
  • 終了:2011/08/08 00:33:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント100pt

multiMenuのメニューを画像表示にしているのでしょうか?

javascriptを使用する方法と、CSSを使用する方法があります。

multiMenu**に相当する「multimenu_block??.html」を次のように編集してください。

(multiMenu01は「multimenu_block.html」、multiMenu02は「multimenu_block01.html」)


・javascriptを使用する方法

<table cellspacing="0">
  <tr>
    <td id="mainmenu">
      <!-- start module menu loop -->
      <{foreach name=menuloop item=imenu from=$block.contents}>
        <{if $imenu.link != ""}>
          <{if $smarty.foreach.menuloop.first}>
            <a class="menuTop" href="<{$imenu.link}>" target="<{$imenu.target}>"><img src="<{$xoops_url}>/images/menu/<{$imenu.title}>.gif" onMouseOver="this.src='<{$xoops_url}>/images/menu/<{$imenu.title}>_on.gif'" onMouseOut="this.src='<{$xoops_url}>/images/menu/<{$imenu.title}>.gif'" /></a>
          <{else}>
            <a class="menuMain" href="<{$imenu.link}>" target="<{$imenu.target}>"><img src="<{$xoops_url}>/images/menu/<{$imenu.title}>.gif" onMouseOver="this.src='<{$xoops_url}>/images/menu/<{$imenu.title}>_on.gif'" onMouseOut="this.src='<{$xoops_url}>/images/menu/<{$imenu.title}>.gif'" /></a>
          <{/if}>
        <{foreach item=sublink from=$imenu.sublinks}>
          <a class="menuSub" href="<{$sublink.url}>"><{$sublink.name}></a>
        <{/foreach}>
        <{else}>
          <{$imenu.title}>
        <{/if}>
      <{/foreach}>
      <!-- end module menu loop -->
    </td>
  </tr>
</table>

参考:

http://webcache.googleusercontent.com/search?q=cache:xhm1TAzTsEIJ:xc-tokai.net/modules/smartsection/item.php%3Fitemid%3D38+xoops+%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC+%E7%94%BB%E5%83%8F&cd=4&hl=ja&ct=clnk&gl=jp&source=www.google.co.jp


http://fillcp.net/modules/d3forum/index.php?post_id=8


※未確認ですが、jQueryを使用しても良いかもしれません。(コードは上記とは別になります。)

http://www.webcreatorbox.com/tech/jquery-tips20/



・CSSを使用する方法

<table cellspacing="0">
  <tr>
    <td id="mainmenu">
      <!-- start module menu loop -->
      <{assign var=i value='1'}>
      <{foreach name=menuloop item=imenu from=$block.contents}>
        <{if $imenu.link != ""}>
          <{if $smarty.foreach.menuloop.first}>
            <a class="menuTop<{$i++}>" href="<{$imenu.link}>" target="<{$imenu.target}>"><{$imenu.title}></a>
          <{else}>
            <a class="menuMain<{$i++}>" href="<{$imenu.link}>" target="<{$imenu.target}>"><{$imenu.title}></a>
          <{/if}>
        <{foreach item=sublink from=$imenu.sublinks}>
          <a class="menuSub" href="<{$sublink.url}>"><{$sublink.name}></a>
        <{/foreach}>
        <{else}>
          <{$imenu.title}>
        <{/if}>
      <{/foreach}>
      <!-- end module menu loop -->
    </td>
  </tr>
</table>

※multiMenu01とmultiMenu02を表示する場合など、2つ以上multiMenuのメニューを表示する場合は、「<{assign var=i value='1'}>」の部分を変更して、他のメニューと重複しないようにしてください。(一つ目のメニューで1~5までの5つのメニューを表示する場合は、2個目のメニューは「<{assign var=i value='6'}>」とします。)


  1. 使用しているテーマの「style.css」の最後に次のように追加します。
a.menuTop1 {
	display:block;
	width:130px;
	height:41px;
	background:url(http://xxx.example.jp/images/menu/top.gif) no-repeat left 3px;
	text-indent: -5000px;
	margin: 1px;
	border-bottom: 1px dotted #7a7acc;
}

a.menuMain2 {
	display:block;
	width:130px;
	height:41px;
	background:url(http://xxx.example.jp/images/menu/diary.gif) no-repeat left 3px;
	text-indent: -5000px;
	margin: 1px;
}

a:hover.menuTop1 {
	background:url(http://xxx.example.jp/images/menu/top_on.gif) no-repeat left 3px !important;
}

a:hover.menuMain2 {
	background:url(http://xxx.example.jp/images/menu/diary_on.gif) no-repeat left 3px !important;
}

※背景画像のURLは、環境に合わせて変更してください。

※multiMenuの各メニューaの幅および高さ、余白、背景画像の表示位置は、用意した画像と好みに合わせて変更してください。

※「a.menuTop*」および「a:hover.menuTop*」は、メニューの分だけ用意します。


参考:

http://www.stylish-style.com/csstec/basic/l-rollover4.html



※何れの方法の場合も、multiMenu用のメニュー画像は、「images」内に「menu」フォルダを作成して入れている場合となっています。

(menuフォルダ以外のフォルダ名にする場合は、コードあるいはCSSの該当する部分を変更してください。)

※multiMenuのメニュー追加時、「Title」は英数字で設定してください。(ファイル名は英数字にした方が良い為です。)



※テンプレートのカスタマイズについては、以下の回答を参考にしてください。

http://q.hatena.ne.jp/1251698012#a945358

id:kaji0245

詳細な情報をありがとうございます。テーマはsavejapan2ですが、早速試してみますm(_ _)m

2011/08/06 11:00:14
  • id:rouge_2008
    CSSの方が少し面倒かもしれませんが、javascriptをオフにしている環境でもマウスオーバーを実行させたい場合は、CSSによる方法を試してみてください。
  • id:kaji0245
    おかげさまで何とかできました(V)o¥o(V)
    マルチメニューでサブメニューを作っていたので、そこで只今奮闘中です。
    ありがとうございました<(_ _)>
  • id:rouge_2008
    サブメニューの方は、該当するモジュールにアクセスした時にのみ表示されればいいのですか?
    各メニューのリンク先を、メインメニューは「[モジュール名]」、サブメニューは「-[モジュール名]xxxxx.php」で追加するのはどうですか?
    自動でサブメニューを表示させると、サブメニュータイトルが日本語の場合に困るので、前述の方法でそれぞれ別個に追加します。
    http://www.xugj.org/modules/xpwiki/?ModuleManuals%2Fmultimenu#z6bc562f


    ----- javascriptを使用する場合 ----------------------

    <table cellspacing="0">
    <tr>
    <td id="mainmenu">
    <!-- start module menu loop -->
    <{foreach name=menuloop item=imenu from=$block.contents}>
    <{if $imenu.link != ""}>
    <{if $smarty.foreach.menuloop.first}>
    <a class="menuTop" href="<{$imenu.link}>" target="<{$imenu.target}>"><img src="<{$xoops_url}>/images/menu/<{$imenu.title}>.gif" onMouseOver="this.src='<{$xoops_url}>/images/menu/<{$imenu.title}>_on.gif'" onMouseOut="this.src='<{$xoops_url}>/images/menu/<{$imenu.title}>.gif'" /></a>
    <{else}>
    <a class="menuMain" href="<{$imenu.link}>" target="<{$imenu.target}>"><img src="<{$xoops_url}>/images/menu/<{$imenu.title}>.gif" onMouseOver="this.src='<{$xoops_url}>/images/menu/<{$imenu.title}>_on.gif'" onMouseOut="this.src='<{$xoops_url}>/images/menu/<{$imenu.title}>.gif'" /></a>
    <{/if}>
    <{foreach item=sublink from=$imenu.sublinks}>
    <a class="menuSub" href="<{$sublink.url}>"><img src="<{$xoops_url}>/images/menu/<{$sublink.name}>.gif" onMouseOver="this.src='<{$xoops_url}>/images/menu/<{$sublink.name}>_on.gif'" onMouseOut="this.src='<{$xoops_url}>/images/menu/<{$sublink.name}>.gif'" /></a>
    <{/foreach}>
    <{else}>
    <{$imenu.title}>
    <{/if}>
    <{/foreach}>
    <!-- end module menu loop -->
    </td>
    </tr>
    </table>

    ---------------------------------------------------------


    ----- CSSを使用する場合 ---------------------------------

    <table cellspacing="0">
    <tr>
    <td id="mainmenu">
    <!-- start module menu loop -->
    <{assign var=i value='5'}>
    <{foreach name=menuloop item=imenu from=$block.contents}>
    <{if $imenu.link != ""}>
    <{if $smarty.foreach.menuloop.first}>
    <a class="menuTop<{$i++}>" href="<{$imenu.link}>" target="<{$imenu.target}>"><{$imenu.title}></a>
    <{else}>
    <a class="menuMain<{$i++}>" href="<{$imenu.link}>" target="<{$imenu.target}>"><{$imenu.title}></a>
    <{/if}>
    <{assign var=si value='1'}>
    <{foreach item=sublink from=$imenu.sublinks}>
    <a class="menuSub<{$si++}>" href="<{$sublink.url}>"><{$sublink.name}></a>
    <{/foreach}>
    <{else}>
    <{$imenu.title}>
    <{/if}>
    <{/foreach}>
    <!-- end module menu loop -->
    </td>
    </tr>
    </table>

    -----------------------------------------------------

    ※style.cssには、「a.menuSub1」および「a:hover.menuSub1」を1セットにして、メインメニューと同じように追加してください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません