[[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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
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.076 sec.

OSDN