[[PukiWiki/1.4/ちょっと便利に]] RIGHT:&size(12){Category:[[Design>:Design]]}; *MENUその他の無いページ表示機能 -- [[Saito]] [#v9c2060c] はじめましてSaitoと申します。 [[BugTrack/110]]および[[212>BugTrack/212]]で印刷用出力ということでCSSの切替というお答えでしたが、CSSの切替よりはやはりPukiWiki側で表示してしまうのはどうかと考えました。 というのも、IEで表示し、「ファイル」→「送信」→「ページを電子メールで」から、Outlook Expressでの新規のHTMLメールとしてのページ流し込み、といった使い方においてはMENUは邪魔なので、メニュー表示無しのページを作ろうと考えたからです。(IEとOutlook ExpressでHTMLメールを作るなどというのが世の中では、『行儀の悪い作法』と呼ばれていることは承知しておりますが。。。。) **pukiwiki.php [#n6df241c] ページを表示するルーチン(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']; } } **html.php [#a2ddc346] 最初はcatbody()関数内でスキンの切替を考えたが、内部ロジックを切り分けるのが面倒なのと、本家の改作があった場合、メンテ不能となる恐れがあるので、catbody()関数のほぼまる写しの新規関数menuoff()を追加 //MENU無し表示 function menuoff($title,$page,$body) { 中略 require('nomenu.php'); } **pukiwiki.skin.ja.php [#qd62f320] ページ上部のメニューバー項目にMENUOFFというコマンドを追加した改作。 なお、これとは別に<!DOCTYPEをXMLからHTMLに変更。というのも、IEから「送信」→「ページを電子メールで送信」として、Outlook Express新規メールに流し込む場合、DOCTYPEがXMLだと、添付ファイルの形になってしまい、本文欄にHTML文を流し込めないことが判明したことによる。 -Outlook ExpressでHTMLメールの表示ONにしていること自体が危険。デフォルト値では表示OFF。 -- &new{2003-05-09 (金) 00:05:11}; などを改作した上で、 -XHTMLからHTMLに変更する場合、DOCTYPEの変更のほか、xmlns属性の削除、xml:lang属性をlang属性に変更、rubyに関するタグを無効にする処理が必要となります。-- [[reimy]] &new{2003-05-10 (土) 18:41:23}; **nomenu.php [#k9a7df59] pukiwiki.skin.ja.jpをベースに余分な部分を除去しただけ。 といった具合です。 ---- #aname(comment) -$vars['prn']を新たに設定して、ページ表示時のURLに ''&prn=on'' を付加した場合にフラグを立てて、スキンの中で <?php if ($vars['prn'] != 'on'){ ?> 印刷・メール送信時に表示しないブロック <?php } ?> ~という形で処理するほうが簡単だと思う。改造する部分もわずかで済む。-- [[reimy]] &new{2003-05-10 (土) 18:20:21}; -茶々じゃなく真面目な話で、印刷表示用のアイコンも欲しい。Footerの並び等に。 -- [[morikawa]] &new{2003-05-11 (日) 00:58:49}; --印刷表示用アイコン &ref(print.png,noimg); -- [[reimy]] &new{2003-05-11 (日) 12:12:04}; <a href="<?php echo "$script?cmd=read&page=$r_page&prn=on"?>"><img src="./image/print.png" width="20" height="20" alt="印刷表示" title="印刷表示" /></a> -reimyさん、アドバイスありがとうございます。全体がよくわかっていない人間には$vars[ ]に何か変数を追加するのは気が引けていました。 -- [[Saito]] &new{2003-05-11 (日) 10:53:26}; --いえいえ、わたしはアイデアだけですから(笑い)。コーディングは[[プログラム担当]]の人たちにおまかせ(^^;;。[[BugTrack/329]]で要望しておきました。 -- [[reimy]] &new{2003-05-11 (日) 11:52:06}; --実現すれば、DOCTYPEやxmlns、xml:lang属性の変更はスキン上でフラグによって振り分ければ対応可能。rubyについては、rubyプラグイン内で振り分ければ対応できますね。 -- [[reimy]] &new{2003-05-11 (日) 11:55:59}; -PukiWiki 1.4のSourceはPluginも含めてきれいで読み易いのでPHPの勉強にはとても良い材料だと思います。私は、IEだのOutlookだのと言ってることからお分かりかと思いますが、Basic育ちの素人中年です。正直言って連想配列は苦手なので、『汚いスクリプト』を恥ずかしげもなくUPしてしまいましたが、できれば、なんらかの機能反映をしていただければと思い。書き込んでみました。 -- [[Saito]] &new{2003-05-11 (日) 20:42:29}; --[[PukiWiki/1.4/ちょっと便利に/印刷用表示対応スキン]]にサンプルをアップしました。 -- [[reimy]] &new{2003-05-13 (火) 07:20:56}; #comment //#comment