パソコンQ&A

OpenPNE カスタマイズの基本

OpenPNE ディレクトリ構造

/bin全てのバッチが入っています。
/libライブラリーが入ってます。
/public_htmlドキュメントルート。全てのページはここのindex.phpを読み込む
/setupOpenPNEを最初に使う時必要なものが入っています。
/webappOpenPNEデフォルトのモジュールが入っています。
/webapp_bizビズで使うモジュールが入っています。
/webapp_extカスタマイズで使うモジュールを入れます。

モジュール、テンプレートは全てwebapp_extの配下にwebappと同じような構造で同じファイル名で入れてあげると、webapp_extが優先されます。
ただし、/webapp_ext/lib配下は使用されないので、そこは/webapp/lib配下を編集・新規作成する必要があります。

OpenPNE URLコントロールの仕組み

http://localhost/OpenPNE/public_html/?m=admin&a=page_login
このようなURLの場合
/webapp/modules/admin/page/login.php
/webapp/modules/admin/template/login.tpl
を見にいきます。
http://localhost/OpenPNE/public_html/?m=pc&a=do_o_login
このようなURLの場合
/webapp/modules/pc/do/o_login.php
を見にいきます。
http://localhost/OpenPNE/public_html/?m=【モジュール名】&a=【アクション名】
モジュール名
admin管理画面
apiOpenPNE内部の情報を外部に提供する
ktai携帯版ユーザ画面
pcユーザ画面
setup初期設定
モジュール名(BIZ関連)
bizBIZ関連メイン
ktaiBIZ関連携帯
ktai_bizBIZ関連携帯
pcBIZ関連PC

BIZ関連は使用していないのでよくわかりません。

アクション名

[pageまたはdo]_[ファイル名]

pageテンプレートを使用して、画面を表示するもの
doDB変更などの処理のみで、画面を表示しないもの

pageを使うか、doを使うかは正確には『テンプレートがあるかどうか』の違いではない。
[ページの作り方]参照

バリデート

  • /webapp/modules/【モジュール名】/validate/do
  • /webapp/modules/【モジュール名】/validate/page

何かアクションをした時、validateの中に同じ名前でiniファイルを作成してあげる必要があります。
作成しないと、「$request」に値が渡ってきません。

Null Byte Attack
リクエストバリデーションの際に、事前のフィルタリングで全変数デフォルトでヌルバイトを削除している

OpenPNE ファイルネームルール

ユーザ画面

c系コミュニティ系のページ
f系自分以外のメンバーのページ系
h系自分の日記や、自分のプロフィールなど、自分に関わるページ
fh系マイホーム・フレンド共通
biz系Biz共通
inc系Include用テンプレート
o系ログイン前、規約、エラー表示などの雑多なページ

なので新規でファイルを作成する場合、コミュニティ系なら c_○○というファイル名で作成してあげる。

関数系

/webapp/lib/db 配下
すべてのPHPファイルがインクルードされます

スタイルシートルール

/public_html/css/default.css
のコメントに書かれてます

スタイルシートルールのメモ:
幅や高さはhtml内で記述する(※inc_x系、専用ページなど一部例外あり)
alignはhtml属性使用
スタイルのmarginとpadding(横方向)はbox要素には使わない
配色(背景)や背景模様、フォント(サイズや太さや色)の管理はCSSで行う
各インクルードtplのプロパティは各同名cssに記述
 例) inc_page_header.tpl -> inc_page_header.css
    inc_info.tpl -> inc_info.css
特殊ページ用のCSSはxyz.tplに対応したpage_xyz.cssでおこなう
 例) login.tpl -> page_login.css
その他課題
色彩設定は色が違うクラス名と被る場合の判別がしづらくなる。
/public_html/css/default.cssから引用

OpenPNEのデータベースストレージエンジン

OpenPNE標準のMySQLはMyISAMを使用しているため、トランザクションは使えない。
OpenPNEがMyISAMを使用している理由は『MySQLの標準だから』とのこと。

トランザクションを使用する場合はInnoDBを使用するようにする。
データがクラッシュした場合に、InnoDBのほうが強いというのもある。
MyISAMがクラッシュするとテーブル単位でアクセス不可となるが、InnoDBならレコード単位のアクセス不可となる。

データベースについて

OpenPNEのinsert関数の返り値はインサートされたIDが返る。
つまりはAUTO_INCREMENTキーのないテーブルにインサートした場合、返り値は0となり、正誤判断ができなくなる。

mail_queueはidが返らないので、returnの値をとるとfalseに相当する。
(mail_queue_seqで主キーを持っているため。)

コーディングルール

  • <?phpで始める
  • 最後は必ず?>の後に1つ改行を入れる。
  • PHPファイルの文字コードはUTF-8、改行コードはLF
  • インデントは半角空白4文字
  • 配列名は最後にsを付ける(例:$params)

テンプレートエンジンSmarty

  • ({で始め、})で終わる
  • OpenPNEでは、送られる値はデフォルトでHTMLエスケープされる。
    (この影響を受けない変数にするには、{$var|smarty:nodefaults} のように nodefaults 修飾子をパラメータに持つ smarty 修飾子を指定します)
  • ユーザ画面のURLは基本的にSmartyの拡張タグで生成する。
    (ヘッダメニューリンクはこのルールから外れる)

このページはリンクフリーです。設定などは自己責任で…
Copy Right kikky

kikky.net