Archives

You are currently viewing archive for March 2008
カテゴリ: WordPress
投稿者: mio
WordPressのビジュアルリッチエディタは、どうでもいいところにpタグが入ったり、たくさん改行したいのにできなかったり、編集して保存したら、全然違う見た目になってたり、本当に使いにくすぎる。

ということで、pタグの自動挿入機能を切る方法を調べました。
結構面倒だったので、同じ悩みを抱える人のため、自分のために、まとました。
プラグインや設定ファイル一発で変えられたらいいのですが、うまいやり方が見つかりませんでした。もし、何か簡単な方法をご存知の方がいらっしゃいましたら、是非コメントなどでお知らせください。

ちなみに、WordPressのバージョンは、
ME2.2.3 です。

編集しなければならないファイルは2つ。
1つずつ説明します。


■tiny_mce.js

wp-includes/js/tinymce/tiny_mce.js
にある、ファイルを編集します。
ビジュアルリッチエディタの要の部分です。

handleEvent : function(e) という関数(メソッド?)の中にある
// Insert P element instead of BR


上記記述がある部分をまずコメントアウト。
1000行目〜1500行目あたりに、3箇所ぐらいありました。

キー入力を、switch文で振り分けているところで、
if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings['force_p_newlines'] && e.keyCode == 13 && !e.shiftKey) {

みたいな条件が書かれているあたりです。
上記条件ごとコメントアウトしてOK。

ちなみに、「 Insert P element instead of BR」の記述がある部分は、isGecko、isOpera、isSafariという条件にあるように、IE以外のブラウザでのみ有効なので、IEの方のプログラムも変えます。

それが、
if (tinyMCE.isIE && tinyMCE.settings['force_br_newlines'] && e.keyCode == 13)

という条件がある部分で、
tinyMCE.settings['force_br_newlines']をtrueに設定する必要があるのですが、これを設定する場所を探すよりも、ここの条件を常にtrueにしてしまうほうが楽なので、ここの条件を変えてしまいます。
if (tinyMCE.isIE && e.keyCode == 13)

↑こんな感じ。

あと、
if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13)
if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13)

の条件の中での処理もコメントアウトします。

※e.keyCode == 13 は、エンターキーのことです。

以上で javascript で編集時に、自動的に

タグが入らないようになります。



■formatting.php

wp-includes/formatting.php
に、あるファイルを編集します。



ここでは、DBから読み取ったテキストデータをビジュアルリッチエディタ用のデータにフォーマットする関数をいじくります。放っておくと、ここでもpタグがPHPによって勝手に入れられてしまいます。
ここでは、wpautop という名前の関数を編集します。

コメントアウトするのは以下の記述

$pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates

$pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "<p>$1</p>\n", $pee); // make paragraphs, including one at the end

$pee = preg_replace('!<p>([^<]+)\s*?(</(?:div|address|form)[^>]*>)!', "<p>$1</p>$2", $pee);


あと、
$pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks


$pee = str_replace("\n", "<br />\n", $pee);

とします。

以上です!
ここまで調べるのに数時間かかりました。(笑


とか、書いてたら、formatting.php周辺の記事が出てきたり。。(笑
http://web-pallet.com/a-blog/tb.php?ID=172
http://camcam.info/wordpress/224

あ、よく見たら、camcamさんの、brBrbrというプラグインは前から使ってました。ので、これもインストールしておいたほうがよさげですね。新しい記事(上記URL)もありましたし。要チェックです。
カテゴリ: MODx
投稿者: terada
MODxのテンプレート変数で日付けのフォーマット(dateFormat)に日本語を混ぜて使いたいときのTips。

/assets/snippets/ditto/classes/ditto.class.inc.php
の925-927行目

if ($modx->config["modx_charset"] == "UTF-8") {
$dt = utf8_encode($dt);
}

をコメントアウト。これをしないと文字化けする。

参考サイト
tiny-p » MODx:Dittoについて
カテゴリ: MODx
投稿者: terada
MODxの管理画面をカスタマイズするときに使うプラグイン「ManagerManager」を使うときに、忘れがちなポイントと、フィールド名に日本語を使いたいときのTipsです。

< 環境 >
MODx 0.9.6.1p2
ManagerManager 0.2.4.1



< インストール >
まず、インストール時に忘れてしまいそうなポイント。
めっさ簡単ですが、日本語にしてる人いなそうだったのでついでに全部。

1. まずはダウンロード&解凍
http://modxcms.com/ManagerManager-1565.html

2. 管理画面から「 リソース > リソース管理 > プラグイン > プラグインの作成 」
とたどって、「プラグイン名」を「ManagerManager」、「プラグイン コード (php)」のフィールドにダウンロードすると入ってる「plugin.txt」の内容をコピペします。
(「plugin.txt」はサンプルみたいなもんで、カスタマイズする場合はここを弄ることになります)

3. そこから、「システムイベント」タブに移って、「OnDocFormRender」と「OnDocFormPrerender」と「OnPluginFormRender」にチェックを入れる。

4. ここまでできたら最後に「保存」 
↑ これを忘れやすいので注意!1の後に保存しちゃうと2の後忘れてしまいがち(自分)。

5. /assets/plugins/managermanager のディレクトリにダウンロードした「mm.inc.php」をアップロード。

6. あとは、同梱の「managermanagerHelp.html」や「plugin.txt」をみながら設定項目を弄る。



< 日本語への対応 >
インストール後、フィールド名に日本語を使うと、文字化けする場合があります。そんなときの対処法です。
*ここの情報は、こちらでモデレーターのyamaさんに教えていただいた解決法を、自分なりに少し噛み砕いて書いてみます。yamaさんありがといございました!

さきほどの、4でアップロードした「mm.inc.php」を弄ります。
文字化けするのは、文字コードの変換がうまく言ってないからなのでそこを適正にするためにPHPのhtmlentitiesを使ってる部分を修正するみたいです。
ためしにこのファイルを「htmlentities」で全文検索すると、14個所ヒットしました。一応、関係あるところだけ修正しようと、一個ずつ見ていきました。
(めんどくさければ全置換でも大丈夫な気がしますが)
ソースコードには、
「$output = " // ----------- Rename tab -------------- \n";」
などと言う風に、内容が一目で分かるように書いてあるので、これをヒントに上から見ていくと・・・
「Rename field」(309行目)と「Change field help」(464行目)、「Rename tab」(505行目)あたりが、日本語絡んできそうです。怪しい・・・
と、いうことでこのあたりの「htmlentities」を弄ります。第2第3引数にそれぞれ「ENT_QUOTES」「$modx->config['modx_charset']」を仕込んでやります。

例:
htmlentities($newname)

htmlentities($newname,ENT_QUOTES,$modx->config['modx_charset'])

全部で、11箇所弄りました。
これで、文字コードがMODxで指定しているものと対応するようになっていい感じです。フィールド名だけでなく、ポップアップのヘルプやタブにも日本語使えるようになりました。