質問箱/4080

カテゴリ
サマリ親階層に移動するリンクをつけるには
バージョン1.4.7
投稿者ラム?
状態完了
投稿日2007-05-15 (火) 05:52:33

質問

今いるページから親階層のページへ移動するリンクを直接親ページの名前を指定せずに設置することは可能ですか?

テキスト整形のルールのページでは

行中で 及び と書くと、編集中のページ名に置換されます。ページ名が階層化されたページで「hogehoge/hoge」となっている場合、&page;は「hoge」に、&fpage;は「hogehoge/hoge」に置換されます。階層化されていないページでは、&page;も&fpage;も同じになります。

とあります。

上の例でhogeを見ているときにhogehogeに移動したいわけです。

ところがももhogehogeには対応していません。

どうすれば出来ますか?

掲示板もだいぶ探しましたが、まだ初心者なのでわかりません。

回答

  • ページ名置換文字というやつです。 ↑書いたのに消えちゃった・・・ のことです また消えるかも -- ラム? 2007-05-15 (火) 05:54:44
  • 消えた・・・ &fpage; と &page; の事です これなら消えないだろう汗 -- ラム? 2007-05-15 (火) 05:55:35
  • ../ でいけたと思います。もしくは、#navi を活用されてはどうでしょうか。 -- teanan 2007-05-15 (火) 07:28:57
  • ../としたら上のページへいけましたが そのまま../と表示されてしまいます。 上のページの名前を表示できるようにはできませんか。 -- ラム? 2007-05-16 (水) 03:07:49
  • たとえば名古屋市のページから愛知県へ移動するときに../と表示されているところを押して愛知県に移動できるとはわかりにくいです。 -- ラム? 2007-05-16 (水) 03:09:28
  • 各都道府県のページにユーザーが任意で市町村のページを追加できるようにしています。 -- ラム? 2007-05-16 (水) 03:10:25
  • 親階層の名前を自動で手に入れればいいのですが。そうすれば [ [ 親 > . . / ] ]とできますので。 -- ラム? 2007-05-16 (水) 03:30:38
  • #naviを使ってみました。親階層の名前もひょうじされて、移動も出来るのですが、PrevとNextはいらないので、この方法だと不便です。 おしい -- ラム? 2007-05-16 (水) 03:34:18
  • teanan さんも書かれていますが、topicpath, navi, pagetree 辺りのプラグインを活用する方が楽だと思います。 -- 2007-05-16 (水) 03:41:00
  • topicpathを使いました。 スキンに組み込み、ページタイトル下のURLの代わりに全てのページで表示する。 と言う方法で使いました。 これなら便利そうです。 ありがとうございました。 -- ラム? 2007-05-16 (水) 04:24:07


  • ../としたら上のページへいけましたが そのまま../と表示されてしまいます。 上のページの名前を表示できるようにはできませんか。」とあったので、改造方法を書きます。
    lib/make_link.php の以下の部分を修正してください。
    // BracketNames
    class Link_bracketname extends Link
    {
    (中略)
    	function set($arr, $page)
    	{
    		global $WikiName;
    
    		list(, $alias, , $name, $this->anchor) = $this->splice($arr);
    		if ($name == '' && $this->anchor == '') return FALSE;
    
    		if ($name == '' || ! preg_match('/^' . $WikiName . '$/', $name)) {
    			if ($alias == '') $alias = $name . $this->anchor;
    			if ($name != '') {
    -				$name = get_fullname($name, $page);
    +				if (($alias === $name . $this->anchor) && preg_match('#^[.]{1,2}\/#', $name)){
    +					$name = get_fullname($name, $page);
    +					$alias = $name . $this->anchor;
    +				} else{
    +					$name = get_fullname($name, $page);
    +				}
    				if (! is_pagename($name)) return FALSE;
    			}
    		}
    
    		return parent::setParam($page, $name, '', 'pagename', $alias);
    	}
    この改造をすれば、「../../」のように重ねて書いても、本文はそのままでジャンプ先のページ名が表示されるようになります。
    上のは、今いるページを指す「./」も補完するようにしてあるので、それが嫌な人は、 「preg_match('#^[.]{2}\/#', $name)」としてください。
    アンカーを指定している時のアンカー表示が不必要ならば、$alias に$name だけを入れるように、関連部分を修正してください。
    まずいところがあれば、訂正してください。 -- 2007-05-20 (日) 14:45:16
    • え~と、分岐とか増やさなくても、実現できることが判明。上と同じ場所で次のようにする。
      		if ($name == '' || ! preg_match('/^' . $WikiName . '$/', $name)) {
      -			if ($alias == '') $alias = $name . $this->anchor;
      			if ($name != '') {
      				$name = get_fullname($name, $page);
      				if (! is_pagename($name)) return FALSE;
      			}
      +			if ($alias == '') $alias = $name . $this->anchor;
      		}
      エイリアスの処理をページ名の処理の後ろに、持っていくだけ。PHP 4 でしか、まだ動作確認してませんが。 -- 2007-06-23 (土) 11:30:33
  • ありがとうございます。 ちょっと妥協する方法でやっていたのですが、やりたかったことが、丸々すっきり出来るようになって大変助かりました。 ./と.//は& p a g e ;や& f p a g e ;と少し働き方が違うので両方を使い分けると大変便利です。 いろいろとこれからも重宝しそうです。 -- ラム? 2007-05-21 (月) 03:30:20


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-06-23 (土) 11:29:02
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.272 sec.

OSDN