2020/09/25 14:10 JST

Geeklog Japan Forums

グローバルナビゲーションのターゲット指定


kenken

ゲストユーザ
はじめまして。 kenkenと申します。 先日、Geeklogをインストールし、ホームページを作ってみようと奮闘中です。 wiki等の利用で、何とか形になったのですが、1点どうしても頭を悩ませている事があります。 グローバルナビゲーションのメニューをクリックした時、 ある項目のみを、新しいウィンドウで開くように(target=_blankのような・・)設定したいと思っているのですが、 そのような設定は可能なのでしょうか。 どう試行錯誤しても、成功しません・・ どなたか、アドバイスを頂けますでしょうか。 宜しくお願いします。

状態: オフライン

suzuyan_geeklog

Forum User
Regular Member
登録日: 07
投稿数: 96
場所:大阪北摂
こんにちわ。 こちらは、グローバルナビゲーションの動作としてはイレギュラーなものだと思います。 たぶん、メニュー自体を自作するか、グローバルナビゲーションを表示しているPHPをハックするしかないのではないでしょうか。 あとはJavascriptなどで制御するなども考えられます。 (参考:http://cl.pocari.org/2006-03-14-5.html) ハックする場合、「header.thtml」のタグ「{menu_elements}」を設定しているソースがどこかにあるはずなので、そちらで場合により設定するURLを変更する修正を行えばよいのではないでしょうか。 ただハックした場合、アップデートなどの時に上書きされてしまいますので、注意が必要です。

状態: オフライン

Ivy

Site Admin
管理者
登録日: 01
投稿数: 5942
場所:Tokyo
navmanプラグインのfunctions.incあたりのハックだろうとは思いますが・・・

状態: オフライン

dengen

Site Admin
管理者
登録日: 23
投稿数: 191
こんにちは、dengenです。
Quote by: ゲストユーザグローバルナビゲーションのメニューをクリックした時、 ある項目のみを、新しいウィンドウで開くように(target=_blankのような・・)設定したいと思っているのですが、 そのような設定は可能なのでしょうか。
すこし、functions.incをハックする必要がありますが、可能です。 navmanプラグインのPHPフィルタ機能を使います。 以下、バージョン0.1.1 の場合で方法を説明します。 plugins/navman/functions.incの635行目に次のコードがあるので、
PHP Formatted Code
$T->set_var('selected',       ($selected) ? 'selected' : '');
その下に、次の行を追加します。
PHP Formatted Code
$T->set_var('new_window', ($A['new_window']) ? 'target="_blank"' : '');
plugins/navman/filters.phpに次のコードを追加します。
PHP Formatted Code
function phpfilter_new_window(&$A)
{
    $A['new_window'] = true;
}
public_html/navman/templates/default/menuitem.thtmlを次のように変更します。(新たにテンプレート変数{new_window}を埋め込んでいます)
PHP Formatted Code
<li class="{class_level} {menuitem_class} {selected}"><a href="{menuitem_url}" class="{class_level} {menuitem_class}" {new_window}><span class="{menuitem_class}">{menuitem_text}</span></a></li>
同様に、public_html/navman/templates/default/menuitem_drop.thtmlを次のように変更します。
PHP Formatted Code
<li class="{class_level} {menuitem_class} {selected}"><a href="{menuitem_url}" class="{class_level} {menuitem_class}" {new_window}><span class="{menuitem_class}">{menuitem_text}</span><!--[if gte IE 7]><!--></a><!--<![endif]-->
<!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub{level}">
{submenu_elements}
</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->
</li>
これで、準備が整いました。 新しいウィンドウで開きたいメニューアイテムの編集で、「PHPフィルタ名:」に「new_window」を付け加えてください。

状態: オフライン

mistgrass

Forum User
Regular Member
登録日: 02
投稿数: 91
おお~、すばらしい! 早速取り入れさせていただきました。 ありがとうございます。

kenken

ゲストユーザ
皆様 恐縮です! ありがとうございます。 早速、挑戦してみます お返事遅くなり、申し訳ありません・・

時刻はすべて JST , 現在の時刻は 02:10 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック