カテゴリ:プラグイン 自作 追加

switch.webp

操作によって表示内容を切り替えるプラグイン

switch.inc.php
製作者kanateko
ライセンスGPLv3
バージョン1.2.0
動作確認PukiWiki 1.5.4 - 1.5.4
最終更新2025-10-03

inputのrangeやselectで選択した値に応じ、同じグループに属する他の要素の表示を切り替える。同一ページ内に複数のグループを設置して別々に操作することが可能。

selectプラグインの拡張版であり、変則的なtabプラグインとも言える。

  • ユーザーが選択した値に応じ、同じグループに属する他の要素の表示を切り替える。
    • 操作にはinputのrange、select、numberが使える。
    • 複数グループを同一ページ内に配置可能。
    • インライン型で文中やテーブル内に配置したり、ブロック型で段落丸ごと表示を切り替えたりできる。
      • ブロック型ではマルチラインプラグインの入れ子も可能。

ダウンロード

最新: GitHub

日付バージョン備考
2025-10-031.2.0
  • 新たに数値入力式のnumberを追加
  • 従来のnumber→linearに変更
  • rangeやlinearで初期表示される数字のフォーマットを改善
  • range以外もinput-widthで幅を指定できるよう改善
2025-09-151.1.2
  • numberで負の値のステップに対応
  • numberで最小値が未指定の場合の処理を追加 (-INF)
2025-09-111.1.1
  • numberで最大値が未指定の場合の処理を追加 (INF)
  • 表示する数字を千の位ごとに区切るように調整
1.1.0
  • numberタイプを追加
2025-09-011.0.2
  • オプションが空の場合に、表示要素があってもエラーが出る問題を修正
2024-09-091.0.1
  • マルチライン内のテーブルが正しく変換されない問題を修正
2024-08-251.0.0
  • 初版作成

セットアップ

  1. ダウンロードした「plugin-switch」の中身 (skinフォルダとpluginフォルダ) をPukiWikiのディレクトリに放り込む。
  2. pukiwiki.ini.phpを編集してマルチラインプラグインを許可する。
- define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled
+ define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled

プラグイン設定

グローバル
(PLUGIN_SWITCH_~)
初期値説明
CSSstringSKIN_DIR . 'css/switch.min.css'CSSのパス
JSstringSKIN_DIR . 'js/switch.min.js'JSのパス
PluginSwitchBaseクラス (インライン)
DEFAULT_CLASSstring'plugin-switch'デフォルトのクラス名
DEFAULT_GROUPstring'default'デフォルトのグループ名
DEFAULT_HTML_TAGstring'span'表示タイプdefaultで使用するHTMLタグ
DEFAULT_SEPARATORstring':'デフォルトのセパレータ (表示要素の切り分け)
DEFAULT_TYPEstring'default'デフォルトの表示タイプ
DEFAULT_RANGE_ATTRSarray[1, 10, 1]デフォルトのrangeスライダーの属性 (min, max, step)
PluginSwitchMLクラス (ブロック)
DEFAULT_HTML_TAGstring'div'表示タイプdefaultで使用するHTMLタグ
DEFAULT_SEPARATORstring'#-'デフォルトのセパレータ (表示要素の切り分け)

使用方法

&switch([オプション]){ 表示要素1 : 表示要素2 : 表示要素3 : ... };

#switch([オプション]){{
表示要素1
#-
表示要素2
#-
表示要素3
#-
︙
}}

基本的な使い方は上のようになるが、表示形式にrangeやnumber、linearを指定した場合のみ表示要素の書き方が異なる。

&switch(range/number){ [min] : [max] : [step] };

例:&switch(range){ 1 : 5 : 1 }; // 1から5まで1ずつ進む

numberやlinearの場合は、stepに負の値を指定したり、minやmaxを指定しない (= 無限) ことも可能。

例1:&switch(number){ 1 : : 2 }; // 1から2ずつ加算していく (上限なし)
例2:&switch(number){ 1 : }; // 1から1ずつ加算していく (上限なし)
例3:&switch(linear){ 1 : 10 : -2}; // 10から1まで2ずつ減算していく (下限なし)
例3:&switch(linaer){ : 10 : -5 }; // 10から-5ずつ減算していく (下限なし)

最後の引数に全く何も書かなかった場合は、::1 (min = -INF, max = INF, step = 1)と指定したのと同じ扱いになる。

stepが正の値の場合にはminを、負の値の場合にはmaxを初期値の基準にするため、指定しないと正常な結果は得られない。

オプション

group =
グループ名。指定しない場合はデフォルトのグループ名が適用される。また、全てのオプションに当てはなまらない引数もグループ名として認識される。
type =
表示形式。defaultで通常表示 (span/div) 、numberで通常表示での連番、rangeでスライダー、selectでプルダウンになる。指定しない場合はデフォルト設定が適用される。type=なしでも指定できる。
start =
初期状態で表示する要素の番号。1から始まる。指定する場合はグループ名の指定よりも後で指定し、また同グループで最初のプラグイン内で指定する必要がある。
separator =
表示要素を切り分けるためのセパレータを変更する。表示要素内に":" (コロン) を使いたい時用。
label =
rangeとselectの左にラベルを表示する。deufaultやnumberでは無視される。
class =
追加のクラス名を指定する。現状ラベルやrangeの数字表示には適用されない。
input-width =
input要素 (number, range, select) の幅 (長さ) を数字で指定する。単位がない場合はpx扱い。
transparent
プルダウンの枠や背景を透明にする。
rtl
プルダウン内のテキスト表示を右から開始させる。どうしてもテキスト (主に数字) を右寄せにしたい時用。
disable
プルダウンを操作不能にする。

使用例

2
← スライダーの数値x2
6 ← スライダーの数値 x3

インライン表示1インライン表示2インライン表示3

ブロック表示

1.webp

1.webp

2.webp

3.webp

&switch(test,range,start=2,label=スライダー:){1:3};
&switch(test,number,start=2,label=数値入力:){2:6:2}; ← スライダーの数値x2
&switch(test,linear){3::3}; ← スライダーの数値 x3
&switch(test,select,separator=|,label=プルダウン){選択肢1|選択肢2|選択肢3};
&switch(test){''インライン表示1'':&color(red){インライン表示2};:インライン表示3};

ブロック表示
#switch(test){{{
#flex(gap=12,left){{
&ref(../swiper/1.webp,360x);
#-
&ref(../swiper/1.webp,360x);
}}
#-
&ref(../swiper/2.webp,360x);
#-
&ref(../swiper/3.webp,360x);
}}}

備考

  • select用のオプションはselectプラグインとの互換用で実際あまり使う機会はないと思われる。互換とは言っても表示要素を書く位置が違うので結局そまま置き換えることはできないが。
  • デフォルトのセパレータをselectプラグインから変えたのは、"|"だとテーブル内で記述できなかったため。
  • グループ内で表示要素の数が合っていなくても特にエラーは出ないが、基本的に推奨はしない。
  • linearに何も考えずnumberの名称を使ってしまったのは完全にミスだった。傷の浅いうちに軌道修正を...

コメント

最新の10件を表示しています。 コメントページを参照

  • コメント失礼します。
    こちらのプラグインを使おうとすると、
    Parse error: syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE) ~~~~~/plugin/switch.inc.php on line 68
    上記のようなエラーがでてしまうのですが、何が問題なのでしょうか。
    お忙しいとは思いますが、お返事いただけたら幸いです。 -- 2024-12-20 (金) 14:13:45
    • おそらくですが、使用しているPHPのバージョンが古いのではないでしょうか。私の公開しているプラグインは基本的にPHP8以上 (PukiWiki1.5.4以上) でのみ動作を確認しているため、PHPのバージョンが古いとエラーが出る可能性があります。 -- kanateko 2024-12-20 (金) 17:59:32
      • おっしゃるとおりで、Xserverの簡単インストールでいれたPHP7.0、Pukiwiki 1.5.1だったため動かなかったようです。pukiwiki1.5.4にアップデートしたところ正常に動作しました。
        お返事ありがとうございました。 -- 2024-12-28 (土) 16:16:48