管理画面の語尾の全てに「だぷー」を追加するコード(MODX版)その2
管理画面の語尾の全てに「ぷー」を追加するコードに触発されて書いたこの前の
ブログ。しかし、よく考えるとオリジナルサイトの実装としては「文字列の末尾に『だぷー』をつける」というのが趣旨で、こちらの実装は「特定の文字列を『だぷー』置換する」というわけで少し実装が乖離していた。
そのため、その実装に少しでも近づけるべく、更なる改修を行った。
プラグインの作成-システムイベント
次のイベントをチェック。
- OnManagerPageInit
- OnWebPagePrerender
プラグインの作成-設定
「プラグイン設定」に次の一行を入力して「パラメータ表示の更新」をクリック。
&rpl_enbl=有効範囲;list;なし,フロントエンド,バックエンド,全て;全て &replace_strs=置換文字列たち;textarea;。,だぷー。
ですだぷー。,だぷー。
/([^。>\n])$/,$1だぷー
プラグインの作成-メイン
「プラグイン名」は適当に。プラグインコードに以下を入力。
$e = &$modx->Event;
$s_str = array();
$r_str = array();
$replace_strs=preg_split("/\r?\n/",$replace_strs);
foreach ( $replace_strs as $val ){
list($s_tmp,$r_tmp) = explode(",",$val);
if(empty($s_tmp)){continue;}
if( strpos($s_tmp,'/') !== 0 ){
$s_tmp='/'.$s_tmp.'/';
}
array_push($s_str,$s_tmp);
array_push($r_str,$r_tmp);
}
switch ($e->name){
case "OnManagerPageInit":
if( $rpl_enbl == "全て" || $rpl_enbl == "バックエンド" ){
global $_lang;
foreach ($_lang as $key => $val){
$_lang[$key] = preg_replace($s_str,$r_str,$val);
}
}
break;
case "OnWebPagePrerender":
if( $rpl_enbl == "全て" || $rpl_enbl == "フロントエンド" ){
$modx->documentOutput=preg_replace($s_str,$r_str,$modx->documentOutput);
}
break;
}
「保存」をクリック。以上。
そしてどうなるか
これを見ていただけると大体の末尾に「だぷー」が付いているので、概ねオリジナルの仕様に近づいたのではないかと思います。ちなみに今回のポイントここ。
。,だぷー。
ですだぷー。,だぷー。
/([^。>\n])$/,$1だぷー
プラグイン設定の「置換文字列たち」の部分。ここに1行ずつ置換したい文字列を入力すると上から順番に置換を実行します。なお、1行のフォーマットは「,(コンマ)」で区切りの「置換対象文字列,置換文字列」になり、「置換対象文字列」が「/(スラッシュ)」で始まっている場合は、正規表現として扱います。今回、末尾に「わぷー」を入れるのは正規表現を利用しています。
このプラグインを利用すると複数の置換が行えるので、応用するとこんな変換も可能です。
余談ですが、このプラグインを書いているときに置換に失敗してMODXの管理画面が機能しなくなった。MODXのデモサイトの管理画面が一時期おかしくなっていたのは僕のせいです、はい、すいません。
追伸
NetCommonsでは「末尾をわぷーにする」言語ファイルが作られたみたいです。
わぷー。 - kmikageのぽてぽてしたブログ
作成日:2011/08/15 02:05:03