- 追加された行はこの色です。
- 削除された行はこの色です。
**[[質問箱3/588]] [#jc935baf]
#author("2018-03-11T19:09:09+09:00;2007-01-27T13:14:44+09:00","","")
**[[質問箱/3588]] [#jc935baf]
|RIGHT:70|LEFT:410|c
|~サマリ|凍結ページでページタイトルのリンクを無効にする([[質問箱3/62]]の更なる改造)|
|~カテゴリ||
|~サマリ|凍結ページでページタイトルのリンクを無効にする([[質問箱/3062]]の更なる改造)|
|~バージョン|1.4.7|
|~投稿者|[[YSD]]|
|~状態|質問|
|~状態|完了|
|~投稿日|&new{2007-01-20 (土) 11:11:40};|
***質問 [#bdf7cee7]
よろしくお願いします。
[[質問箱3/62]]を参考に、ページタイトルのリンクを「編集」リンクに設定しました。
[[質問箱/3062]]を参考に、ページタイトルのリンクを「編集」リンクに設定しました。
この方法だと、凍結されたページでもクリッカブルな状態です。そこで、凍結されたページではアンクリッカブルにするためのもう一手間をお教えください。
***回答 [#ee1eddb6]
- is_freeze($page) という関数でそのページが凍結されているかどうかわかります。 -- &new{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]] &new{2007-01-20 (土) 13:24:18};
- たぶん $title = だと思います。 $page = じゃなくて。他の $title = よりも下に
if (is_freeze($page)) { $title = $page; }
-- &new{2007-01-21 (日) 06:36:02};
- その一行をどこに入れてもリンクが生きてしまいます。入ってない状態での今現在の後半のソースを記します。
$title = htmlspecialchars(strip_bracket($base));
$page = '<a href="' . $script . '?cmd=edit&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&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]] &new{2007-01-21 (日) 12:26:17};
- あぁ、最初に is_freeze($page) と書いた時の $page はページ名のつもりでした。lib/pukiwiki.php 中 $page は意味が違うんですね。参照ページを読む気がなかったので、ただ、is_freeze(ページ名) でチェックできるよ。とだけ言ったつもりでした。申し訳ない。 -- &new{2007-01-21 (日) 14:10:13};
- おわびに答えをかくと
$title = htmlspecialchars(strip_bracket($base));
$page = '<a href="' . $script . '?cmd=edit&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&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 がページリンクってのもなんだかなぁ。-- &new{2007-01-21 (日) 14:18:30};
- あと、いまさらですが、lib/pukiwiki.php を編集するよりはスキンを編集したほうがいいと思います。今後のアップデートの際に面倒になります。lib 内のファイルは本来単純な上書きでいいはずですが、それができなくなってしまいます。スキンならいじってあるのはほぼ確実で上書きしようとは誰も思いませんしね。 -- &new{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&page=' .
+ rawurlencode($vars['page']) . '">' . $title . '</a> ';
+ }
+?></h1>
となります。$vars['page'] の代わりに $base を使用してもいいようですが、わかりにくい。
- ありがとうございます! 上の2通りいずれも希望通りです。確かにスキンで調整できるのならそうした方がスマートですね。pukiwiki.phpは元に戻して、スキンのみの変更にしました。ありがとうございました。 -- [[YSD]] &new{2007-01-22 (月) 09:32:12};
- [[質問箱/3591]] -- &new{2007-01-27 (土) 13:14:43};
#comment