PukiWiki/1.4/ちょっと便利に

Category:Design

MENUその他の無いページ表示機能 -- Saito

はじめましてSaitoと申します。

BugTrack/110および212で印刷用出力ということでCSSの切替というお答えでしたが、CSSの切替よりはやはりPukiWiki側で表示してしまうのはどうかと考えました。

というのも、IEで表示し、「ファイル」→「送信」→「ページを電子メールで」から、Outlook Expressでの新規のHTMLメールとしてのページ流し込み、といった使い方においてはMENUは邪魔なので、メニュー表示無しのページを作ろうと考えたからです。(IEとOutlook ExpressでHTMLメールを作るなどというのが世の中では、『行儀の悪い作法』と呼ばれていることは承知しておりますが。。。。)

pukiwiki.php

ページを表示するルーチン(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

最初はcatbody()関数内でスキンの切替を考えたが、内部ロジックを切り分けるのが面倒なのと、本家の改作があった場合、メンテ不能となる恐れがあるので、catbody()関数のほぼまる写しの新規関数menuoff()を追加

 //MENU無し表示
 function menuoff($title,$page,$body)
 {
 中略
 
     require('nomenu.php');
 }

pukiwiki.skin.ja.php

ページ上部のメニューバー項目にMENUOFFというコマンドを追加した改作。 なお、これとは別に<!DOCTYPEをXMLからHTMLに変更。というのも、IEから「送信」→「ページを電子メールで送信」として、Outlook Express新規メールに流し込む場合、DOCTYPEがXMLだと、添付ファイルの形になってしまい、本文欄にHTML文を流し込めないことが判明したことによる。

などを改作した上で、

nomenu.php

pukiwiki.skin.ja.jpをベースに余分な部分を除去しただけ。

といった具合です。



添付ファイル: fileprint.png 2788件 [詳細]

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

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.490 sec.

OSDN