にへるつおるぐ | src | ブログ | コンタクト | 統計 | 御串 | 小束 | 裏ミク | つ痛 | 顔本 |

10年ぶりに部屋に入るとコウモリや猫の巣窟だった

Nucleus CMS

2008-10-01 15:18:18 JST-9 | akebia | Nucleus | コメント | トラックバック | 履歴

NP_MobileWithSinglePage2.1.0-3.zip

NP_MobileWithSinglePage.php (v2.1.0 beta)の修正&機能拡張版です。オリジナルの機能は概ね含んでいると思いますが、プラグインオプションの設定がオリジナルとは多少異なっているので、インストールするには、一旦、オリジナルのものを削除してからインストールするのが無難かもしれません。

主な変更点

  1. Shift_JISでコメントを投稿した場合に文字コードを変換する機能が動作してなかったのを動作するようにした。
  2. UTF-8のシステムにおいて、プラグインオプションの画面が日本語になっていなかったのを日本語になるようにした。
  3. Shift_JISに変換する機能をプラグインオプションにて無効にできるようにし、デフォルトで無効にするようにした。(これは、「出力を改変しますか?」オプションの影響を受けないので注意して下さい。)
  4. プラグインオプションの画面のテキスト入力フィールドをテキストエリアにした。(これは、単に、文字を沢山入力しやすいようにしたもので、改行を入れた場合の動作は謎です。)
  5. ユーザーエージェントに関係なくモバイル用の画面を出す機能を付けた。
  6. モバイルプロキシの機能を付けた。
  7. オプションで指定したスキンの名前(変更するスキン名)を拡張機能のためのクエリ文字列の名前としても使うようにした。
  8. コメント投稿フォームの隠しフィールド「plug_mobilewithsinglepage」をオプションで指定したスキンの名前に変更し、その内容も「from_mobile」から別のものに変更した。
  9. クエリ文字列により、コメント投稿によるリダイレクトか否かを判断する機能を付けた。
  10. テンプレート変数によりアクセスできる情報の種類を増やした。

オプションで指定したスキンの名前

これは、オリジナルでは、スキン名に使われていますが、機能拡張したものでは、拡張機能のためのクエリ文字列の名前にも使われています。この記事では、このスキンの名前を、仮に「m」とします。

ユーザーエージェントに関係なくモバイル用の画面を出す

クエリ文字列に「m=1」を付けます。「m」は前述のとおり、オプションで指定したスキンの名前です。モバイルプロキシの機能を使う時には、「m」に「1」以外の値を与えることもあります。「出力を改変しますか?」を「はい」にしておくと内部へのリンクに自動的に「m」の状態が継承されるようになります。

モバイルプロキシ

これは、ブログの記事中の外部へのリンクをモバイルプロキシへのリンクに書き換える機能です。モバイルプロキシは、Google Mobile Proxyを使うことを想定していますが、設定によってはそれ以外のものも使えるかもしれません。これに関係するプラグインオプションの説明は下記のとおりです。

出力を改変しますか?
モバイルプロキシを有効にするには、これが「はい」でなければなりません。
モバイルプロキシを有効にしますか?
「はい」か「いいえ」で選んで下さい。
モバイルプロキシのURL
クエリ文字列を含む完全なURLを記述して下さい。その際、置換文字列として「」を含めて下さい。「」は外部へのリンク先の完全なURLをURLエンコードしたものに置き換わります。
モバイルプロキシを使用しないURLの正規表現
これは外部へのリンク先の完全なURLとマッチングされることを前提として記述して下さい。これは、通常、モバイルプロキシ自身がモバイルプロキシされてしまいエラーになるのを防ぐために使いますが、その他の理由によってあえて個別にモバイルプロキシを使いたくないリンク先を指定するのにも使えます。

リンクを書き換える機能は、ブログの記事中のaタグのhref属性と、コメントフォームのdestinationurlのみに作用します。外部へのリンクか否かは、そのリンクが内部へのリンクでなければ外部へのリンクだと判断されます。内部へのリンクか否かは、href属性の値が、「#」で始まっているか、$CONF['Self']で始まっていて尚且つ$CONF['Self']にマッチした部分の後ろに文字が無いかあっても「/」か「?」で始まるものであれば内部へのリンクと判断されます。「$CONF['Self']」というのは、Nucleusをインストールしたディレクトリにある「index.php」の中で設定されているものです。この理屈で行くと外部へのリンクとして完全はURLでないものがありえることになりますが、そういうURLは完全なURLに変換されてから、「モバイルプロキシを使用しないURLの正規表現」とのマッチングが行われることになります。hrefが完全なURLであれば常に外部へのリンクと判断されるので、この性質を利用して自身のブログをモバイルプロキシを介して閲覧させるためのリンクを表示させることができます。

モバイルプロキシの機能は、「出力を改変しますか?」が「はい」であり、「モバイルプロキシを有効にしますか?」が「はい」であり、クエリ文字列に「m」が設定されていないか設定されていても「m=1」か「m」が偽と判断される時に動作します。ただし、「m」が偽であっても、ユーザーエージェントにてモバイルと判定できなかった場合にはモバイルプロキシの機能は動作しません。「m」がそれら以外の値の時にはモバイルプロキシの機能は動作しないので、この性質を利用して閲覧者の都合によりモバイルプロキシをON/OFFする機能を実現することができます。 コメントフォームのdestinationurlについては、「出力を改変しますか?」のオプションに関係なく、その他の条件が合えばモバイルプロキシの機能が動作します。

コメント投稿

オリジナルではコメントフォームの隠しフィールドに「plug_mobilewithsinglepage」が追加されていますが、拡張版ではこれのかわりにオプションで指定したスキンの名前になっています。そのフィールドの内容はクエリ文字列の「m」で与えたものになっています。また、「m_toSJIS」というフィールドも追加されています。「m_toSJIS」というのはオプションで指定したスキンの名前に「_toSJIS」を連結したものです。この内容は後述の「テンプレート変数によりアクセスできる情報」の「toSJIS」の内容と同じです。

オリジナルではコメント投稿後、個別アイテムの画面にリダイレクトされますが、拡張版でも個別アイテムの画面にリダイレクトされます。その際、拡張版ではクエリ文字列に「m」が追加されます。この「m」の内容はコメントフォームに追加されたものと同じになっています。また、クエリ文字列にはこれに加え、「m_c=1」が追加されます。「m_c」というのはオプションで指定したスキンの名前に「_c」を連結したものです。個別アイテムの画面では、「m_c」が真か否かでコメント投稿後か否かを判断できます。コメントフォームにdestinationurlを指定した場合でも、「m」や「m_c」の追加の処理が行われます。

テンプレート変数によりアクセスできる情報

オリジナルのものに加え、以下のものにアクセスできます。

mode
クエリ文字列「m」の内容です。
skinName
オプションで指定したスキンの名前(変更するスキン名)です。
toSJIS
「Shift_JISに変換しますか?」が「はい」なら「1」、「いいえ」なら「0」です。この判定は、真か偽かで行って下さい。
enableMobileProxy
モバイルプロキシの機能が動作する状態なら「1」、そうでない場合には存在しません。これは、「モバイルプロキシを有効にしますか?」が「はい」であり、 クエリ文字列に「m」が設定されていないか設定されていても「m=1」か「m」が偽と判断される時に「1」になります。ただし、「m」が偽の場合に、ユーザーエージェントにてモバイルと判定できなかった場合には存在しません。この判定は、真か偽かで行って下さい。
baseURL
自身のブログのURLの先頭から完全修飾ドメイン名までが格納されています。これは、enableMobileProxyが偽の時には存在しません。
c
クエリ文字列「m_c」の内容です。この判定は、真か偽かで行って下さい。

使い方のポイント

  1. オリジナルの説明ページをよく読んでPEARライブラリをインストールします。ライブラリは下記のところから入手できるようです。
  2. 「変更するスキン名」は、他のクエリ文字列やら変数とぶつからないような名前を選択します。あけび猫は「m」にしています。
  3. 「画像(img要素)の処理」は普通にインラインで画像を表示させたい場合には「変換しない」を選択します。
  4. 「Shift_JISに変換しますか?」は「はい」にするとコメントを投稿した時に送られてくる通知メールが文字化けするようなります。この問題を解決するにはNucleusのコアを修正する必要があります。あけび猫はこの機能は使っていません。
  5. ユーザ向けのモバイルプロキシの設定画面を表示させるといったような凝ったスキンを作るには、NP_matchを使ったりしてどうにかするとよいと思います。
  6. あけび猫はUTF-8でfancy URLな環境で使っているので、その他の環境だとどうなるかは謎です。実際に使っているところを見るには、これを参照して下さい。

バージョン履歴

v2.1.0-3 beta (2016-3-12)
Nucleus CMS v3.71に対応しました。前のバージョンのNucleus CMSには対応しなくなりました。
v2.1.0-2 beta (2013-8-10)
最近の環境(Nucleus本体やPEARライブラリ等)で動作するようにした。フラグメント識別子の付いたURLの改変処理がおかしかったので治した。
v2.1.0-1 beta (2008-10-1)
公開

MyMiniCity 人気ブログランキングへ

  1. Mobile With Single Page (8)
  2. nucleus mobilewith (3)
  3. 名前 猫 あけび (1)
  4. M-SinglePage 変更 (1)
  5. mobile single page (1)

Comments

No comments yet

Add Comment

Trackback

このトラックバックURL(右クリックして、リンクのURLをコピー)を使ってこの記事にトラックバックを送ることができます。もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。トラックバックの手動送信に失敗したり、拒否された場合には、あけび猫が入力しますので、こちらまでご連絡下さい。重複したトラックバックは、自動的に1つにまとめられるようなので、気軽に色々試してみて下さい。


http://2hz.org/akebia/