はじめましてSaitoと申します。
BugTrack/110および212で印刷用出力ということでCSSの切替というお答えでしたが、CSSの切替よりはやはりPukiWiki側で表示してしまうのはどうかと考えました。
というのも、IEで表示し、「ファイル」→「送信」→「ページを電子メールで」から、Outlook Expressでの新規のHTMLメールとしてのページ流し込み、といった使い方においてはMENUは邪魔なので、メニュー表示無しのページを作ろうと考えたからです。(IEとOutlook ExpressでHTMLメールを作るなどというのが世の中では、『行儀の悪い作法』と呼ばれていることは承知しておりますが。。。。)
ページを表示するルーチン(html.phpのcatbody()関数呼出し)を回避してメニュー無しスキンに出力する関数呼出し(html.phpにmenuoff()関数を新規追加)
// Command action else if (!empty($vars['cmd'])) { if (!exist_plugin_action($vars['cmd'])) { if($vars['cmd'] == 'nomenu') { $base = $vars['page']; $title = htmlspecialchars(strip_bracket($base)); $page = $base; $body = convert_html(get_source($base)); menuoff($title,$page,$body); $retvars = FALSE; } else { $s_cmd = htmlspecialchars($vars['cmd']); $msg = "cmd=$s_cmd is not implemented."; $retvars = array('msg'=>$msg,'body'=>$msg); } } else { $retvars = do_plugin_action($vars['cmd']); $base = $vars['page']; } }
最初はcatbody()関数内でスキンの切替を考えたが、内部ロジックを切り分けるのが面倒なのと、本家の改作があった場合、メンテ不能となる恐れがあるので、catbody()関数のほぼまる写しの新規関数menuoff()を追加
//MENU無し表示 function menuoff($title,$page,$body) { 中略 require('nomenu.php'); }
ページ上部のメニューバー項目にMENUOFFというコマンドを追加した改作。 なお、これとは別に<!DOCTYPEをXMLからHTMLに変更。というのも、IEから「送信」→「ページを電子メールで送信」として、Outlook Express新規メールに流し込む場合、DOCTYPEがXMLだと、添付ファイルの形になってしまい、本文欄にHTML文を流し込めないことが判明したことによる。
などを改作した上で、
pukiwiki.skin.ja.jpをベースに余分な部分を除去しただけ。
といった具合です。
<?php if ($vars['prn'] != 'on'){ ?> 印刷・メール送信時に表示しないブロック <?php } ?>
という形で処理するほうが簡単だと思う。改造する部分もわずかで済む。-- reimy 2003-05-10 (土) 18:20:21