質問箱/3588

カテゴリ
サマリ凍結ページでページタイトルのリンクを無効にする(質問箱/3062の更なる改造)
バージョン1.4.7
投稿者YSD?
状態完了
投稿日2007-01-20 (土) 11:11:40

質問

よろしくお願いします。

質問箱/3062を参考に、ページタイトルのリンクを「編集」リンクに設定しました。 この方法だと、凍結されたページでもクリッカブルな状態です。そこで、凍結されたページではアンクリッカブルにするためのもう一手間をお教えください。

回答

  • is_freeze($page) という関数でそのページが凍結されているかどうかわかります。 -- 2007-01-20 (土) 12:07:57
  • 私はこういった言語が未熟なので、思いつくようなことをpukiwiki.phpに書いたり、位置を変えたりしてあれこれ試しているところです。 例えば、
    if (is_freeze($page) == FALSE) {$page  = $title;}
    こんなのや
    if (is_freeze($page)) {$page  = $title;}
    こんな感じで(位置は「$title = htmlspecialchars(strip_bracket($base));」のあたりです。)。 しかし、全く機能しなかったり、あるいは凍結してないページまでタイトルクリックが無効になってしまいます。-- YSD? 2007-01-20 (土) 13:24:18
  • たぶん $title = だと思います。 $page = じゃなくて。他の $title = よりも下に
    if (is_freeze($page)) { $title = $page; }
     -- 2007-01-21 (日) 06:36:02
  • その一行をどこに入れてもリンクが生きてしまいます。入ってない状態での今現在の後半のソースを記します。
    $title = htmlspecialchars(strip_bracket($base));
    $page  = '<a href="' . $script . '?cmd=edit&amp;page=' .
    	rawurlencode($base) . '">' . $title . '</a> ';
    if (isset($retvars['msg']) && $retvars['msg'] != '') {
    	$title = str_replace('$1', $title, $retvars['msg']);
    	$page  = str_replace('$1', $page,  $retvars['msg']);
    }
    
    if (isset($retvars['body']) && $retvars['body'] != '') {
    	$body = & $retvars['body'];
    } else {
    	if ($base == '' || ! is_page($base)) {
    		$base  = & $defaultpage;
    		$title = htmlspecialchars(strip_bracket($base));
    		$page  = '<a href="' . $script . '?cmd=edit&amp;page=' .
    	rawurlencode($base) . '">' . $title . '</a> ';
    	}
    
    	$vars['cmd']  = 'read';
    	$vars['page'] = & $base;
    
    	$body  = convert_html(get_source($base));
    
    	if ($trackback) $body .= tb_get_rdf($base); // Add TrackBack-Ping URI
    	if ($referer) ref_save($base);
    }
    
    // Output
    catbody($title, $page, $body);
    exit;
    ?>
     -- YSD? 2007-01-21 (日) 12:26:17
  • あぁ、最初に is_freeze($page) と書いた時の $page はページ名のつもりでした。lib/pukiwiki.php 中 $page は意味が違うんですね。参照ページを読む気がなかったので、ただ、is_freeze(ページ名) でチェックできるよ。とだけ言ったつもりでした。申し訳ない。 -- 2007-01-21 (日) 14:10:13
  • おわびに答えをかくと
    $title = htmlspecialchars(strip_bracket($base));
    $page  = '<a href="' . $script . '?cmd=edit&amp;page=' .
    	rawurlencode($base) . '">' . $title . '</a> ';
    if (is_freeze($base)) $page = $title;
    if (isset($retvars['msg']) && $retvars['msg'] != '') {
    	$title = str_replace('$1', $title, $retvars['msg']);
    	$page  = str_replace('$1', $page,  $retvars['msg']);
    }
    
    if (isset($retvars['body']) && $retvars['body'] != '') {
    	$body = & $retvars['body'];
    } else {
    	if ($base == '' || ! is_page($base)) {
    		$base  = & $defaultpage;
    		$title = htmlspecialchars(strip_bracket($base));
    		$page  = '<a href="' . $script . '?cmd=edit&amp;page=' .
    	rawurlencode($base) . '">' . $title . '</a> ';
                   if (is_freeze($base)) $page = $title;
    	}
    
    	$vars['cmd']  = 'read';
    	$vars['page'] = & $base;
    
    	$body  = convert_html(get_source($base));
    
    	if ($trackback) $body .= tb_get_rdf($base); // Add TrackBack-Ping URI
    	if ($referer) ref_save($base);
    }

となります。

  • ところで、なぜデフォルトが make_search なんでしょうね。参照リンクぐらいでいいような。デフォルトスキンを使用していないのですっかり忘れてた。$base がページ名で、$page がページリンクってのもなんだかなぁ。-- 2007-01-21 (日) 14:18:30
  • あと、いまさらですが、lib/pukiwiki.php を編集するよりはスキンを編集したほうがいいと思います。今後のアップデートの際に面倒になります。lib 内のファイルは本来単純な上書きでいいはずですが、それができなくなってしまいます。スキンならいじってあるのはほぼ確実で上書きしようとは誰も思いませんしね。 -- 2007-01-21 (日) 14:22:02
  • ちなみに、スキンで変更する場合は
    -<h1 class="title"><?php echo $page; ?></h1>
    +<h1 class="title"><?php
    + if (is_freeze($vars['page'])) {
    +     echo htmlspecialchars(strip_bracket($vars['page']));
    + } else {
    +     echo '<a href="' . $script . '?cmd=edit&amp;page=' .
    +       rawurlencode($vars['page']) . '">' . $title . '</a> ';
    + }
    +?></h1>
    となります。$vars['page'] の代わりに $base を使用してもいいようですが、わかりにくい。
  • ありがとうございます! 上の2通りいずれも希望通りです。確かにスキンで調整できるのならそうした方がスマートですね。pukiwiki.phpは元に戻して、スキンのみの変更にしました。ありがとうございました。 -- YSD? 2007-01-22 (月) 09:32:12
  • 質問箱/3591 -- 2007-01-27 (土) 13:14:43


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

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

OSDN