switchcontents.inc.php

サマリ表示コンテンツ切り替えプラグイン
リビジョン0.9
対応バージョン1.4.7
投稿者jidaikobo
投稿日2007-02-11 (日) 17:42:03

このプラグインは?

こんな言語切り替えはどうかなと思って作ってみました。言語切り替え以外にもコメントだけ分けるとかもできると思います。ご意見いただけると幸いです。書式は下記の通りです。

#switchcontents(属性値){{
コンテンツをここに書く
}}

関連

インストールの仕方

v 0.9 からは厳密には PukiWiki のプラグインの仕様に則っていません。skin ファイルを直に編集します。 skin ファイルの冒頭箇所*1に下記スクリプト片を貼付けます。

include_once( PLUGIN_DIR . 'switchcontents.inc.php' ) ;
list( $title,$page,$body,$swc_ctrl ) = switchcontents( $title,$page,$body ) ;
$body = $swc_ctrl . $body ;

すると、コンテンツ内に switchcontents プラグインがあると、処理をするようになります。 $swc_ctrl には、スイッチ用のコントロールが入っているので、上記スクリプト片の、三行目をコメントアウトして、$swc_ctrl をたとえばメニュー部分などにおくこともできると思います。

include_once( PLUGIN_DIR . 'switchcontents.inc.php' ) ;
list( $title,$page,$body,$swc_ctrl ) = switchcontents( $title,$page,$body ) ;
//$body = $swc_ctrl . $body ;

属性値(0.8までの属性値と異なっています)

switch=''

ここにコンテンツの切り替え用の名称を入れます。たとえば english などです。

title=''

切り替えられるコンテンツのタイトルです。要注意なのは、コンテンツを切り替えた状態で「編集」しようとすると、新規ページになることです。

文例

*テストページ
これはテストページ

#switchcontents(switch='english',title='Test page'){{
*Test page
this is Test page.
}}

0.9 での実験

  • 0.8 では、アクション型プラグインでなんとかしようとしていたので、メニューがなくなったりしていましたが、ちょっと考え方を変えてみました。0.9ではメニュー部分はなくなりません。
  • なるべく get で引き回すように目指してみました。たとえば下記のようなコンテンツからのリンクは、目標ページに同じスイッチを探そうとします。
#switchcontents(switch='english',title='Test page'){{
*Test page
this is Test page.
[[targetpage]]. <- このリンクは targetpage 中の english コンテンツを目指します。
}}

目標ページに目標スイッチがなくても無視されるだけです。 なお、目標ページに目標スイッチがあるけど、リンク時は別のスイッチ、あるいはオリジナルにリンクしたいときは、下記のようにそれを明示しないといけません。

#switchcontents(switch='english',title='Test page'){{
*Test page
this is Test page.
[[targetpage:http://example.com/index.php?cmd=read&page=targetpage]].
}}
  • 現状のスイッチは $vars['switch'] にあるので、スイッチごとにメニューを替えるようなこともできるとは思います。

ダウンロード

UTF-8 版のみです。EUC には各自変換してお使いください。

  • switchcontents ver.0.8.0(http://www.jidaikobo.com/pukiwiki/switchcontents08.zip )
  • switchcontents ver.0.8.1(http://www.jidaikobo.com/pukiwiki/switchcontents081.zip )
  • switchcontents ver.0.8.2(http://www.jidaikobo.com/pukiwiki/switchcontents082.zip )
  • switchcontents ver.0.9.0(http://www.jidaikobo.com/pukiwiki/switchcontents090.zip )

おねがい

いちおう勉強してセキュリティにも配慮しているつもりですが、穴などあったら教えてもらえると幸いです。

ライセンス

  • PukiWiki と同じライセンスで。

履歴

2007年2月11日人柱版公開ver 0.8
2007年2月23日Safari では、location 先を $script まで明示せずにクエリストリングスから書くときちんとリダイレクトしてくれなかったので修正。ver 0.8.1
2007年2月27日編集 → プレビュー時にもリダイレクトが発生してしまって、プレビューできなかったのを修正。ver 0.8.2
2007年9月16日いろいろ改造ver 0.9.0

コメント

  • 便利そうだから使おうかと思ったんですけど、これ使うとメニューバーがなくなってしまうのですが -- 2007-05-24 (木) 03:47:44
  • あと > 記号で引用使おうとすると > 記号がそのまま表示されてその行はWIKI文法が通用しません -- 2007-05-24 (木) 03:48:57
    • ご試用、コメントをありがとうございます……が、このプラグイン、「こんなのがあるといいな」と思い、ほとんど最初に作ったもので、いろいろ不具合が分かってきております。もうちょっと勉強したら作り直そうとも思っておりますので、気長にお待ちいただけると幸いですm(..)m jidaikobo -- 2007-05-24 (木) 06:02:22
  • こんな時間にレスがつくとは・・・ありがとうございます 気長に待ってます -- 2007-05-24 (木) 06:33:24
  • 実はこれを改造して携帯でアクセスしたら携帯用のコンテンツに自動で切り替えるものを作ろうとしたのですが、メニューバーが出ないのが問題だったので断念しました -- 2007-05-24 (木) 06:35:01
    function plugin_keitai_redirect_convert()
    {
    	global $agent, $script;
    
    	//ユーザーエージェントが携帯だったら
    	if( $agent[ 'profile' ] == 'keitai' )
    	{
    		$option = array_pop( func_get_args() );
    		$redirection =  'Location:'.$script."?".rawurlencode($option);
    		header( $redirection );
    	}
    }
    • とりあえずこのような簡単なプラグインを自分で作って、携帯用のページへ飛ばすようにしたのですが、これだと、携帯用に別にページを作らないといけないので、switchcontents.inc.phpでできるとありがたいと思います。 -- 2007-05-24 (木) 06:39:35
    • 自分で作ってとかいって plugin_switchcontents_convertをちょこっといじっただけです 汗 -- 2007-05-24 (木) 06:42:51
  • わー、すんません。フィードバック見落としていました。このプラグイン、いろいろクダクダなんで、また時間を取って確認してみます。ごめんなさい。 -- jidaikobo 2007-07-13 (金) 09:13:58

*1 どこでもいいですが、悩むなら10行目あたりでもいいです

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

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u1. HTML convert time: 1.035 sec.

OSDN