パソコンQ&A

OpenPNE ページの作り方

OpenPNE標準ではwebappに書かれているが、 これをカスタマイズするとか新しくページを作る場合は拡張ディレクトリwebapp_extに 作るようにする。

webappとwebapp_extに同名のファイルがあった場合はwebapp_extが優先されて、webappのファイルは読まれない。

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

doは正確には『はまちちゃん対策』がされる必要がある場合に使用する。
(POSTで入力を送って、DBを変更し、そこではページを表示せず、リダイレクトにより終了するページのこと)
つまりdoにはsessidを付けて送らないとエラーになる

画面を表示するもの
実行ファイル/webapp_ext/modules/【モジュール名】/page/【ファイル名】.php
テンプレート/webapp_ext/modules/【モジュール名】/template/【ファイル名】.tpl
POSTにより値を送信するなら/webapp_ext/modules/【モジュール名】/validate/page/【ファイル名】.ini
画面を表示しないもの
実行ファイル/webapp_ext/modules/【モジュール名】/do/【ファイル名】.php
POSTにより値を送信するなら/webapp_ext/modules/【モジュール名】/validate/do/【ファイル名】.ini
実行ファイル
基本

class 【モジュール名】_page_【アクション名】 extends OpenPNE_Action
{
    function execute($requests)
    {
        ………………
        ………………
        return 'success';
    }
}

ログインしていなくても見れるページ

    function isSecure()
    {
        return false;
    }

ヘッダメニューリンク

        $inc_navi = fetch_inc_navi('h');
        $this->set('inc_navi', $inc_navi);

このように書かないとリンクメニューは出ない。

h標準
cコミュニティ
fフレンド
テンプレート

テンプレートエンジンはSmarty
基本は$this->set('inc_navi', $inc_navi);こんな感じで実行ファイルから値を送る。

validate(バリデート)

[値名]
値条件

のように書く。
実行ファイル内で$requests['値名']として値が得られる。
このルールを無視して$_POSTなどを使用してはいけない。(Null Byte Attack)

値条件
typeint整数
string文字列
boolbool型(1or0)
regexp正規表現
required1必須項目
required_error文言必須項目がなかった場合のエラー文言
defaultデフォルト値
caption文言キャプション
is_array1送られる値が配列のとき
max最大値
min最小値
regexp正規表現
pre_filtertrimトリムフィルタ
ltrimトリムフィルタ
rtrimトリムフィルタ
ntrimNULL バイト・制御文字(HT,LF,NBSP以外)をすべて削除
mysqltext65535バイトに切り詰め
intval整数変換
(type=int)の場合は必ず実行される

『sessid』、『msg』、『msg1』、『msg2』、『msg3』はデフォルトでstringに設定されている。

エラーメッセージ系/webapp/validate/msg.ini
セッションID/webapp/validate/sessid.ini
必須項目などエラーを表示するページを指定する場合

    function handleError($errors)
    {
        $_REQUEST['msg'] = array_shift($errors);
        openpne_forward('pc', 'page', 'h_diary_add', $errors);
        exit;
    }

    function handleError($errors)
    {
        $_REQUEST['msg1'] = $errors['subject'];
        $_REQUEST['msg2'] = $errors['body'];
        $_REQUEST['msg3'] = $errors['public_flag'];
        openpne_forward('pc', 'page', 'h_diary_add', $errors);
        exit;
    }

メッセージは最大3つまで送ることができます。(というより3つまでしか送れません)
(管理画面用のものであれば配列になるので無制限)

ページ遷移制御
リダイレクト(読み直し)

openpne_redirect('pc', 'page_h_home', $params);

フォワード(読み直さず表示)

openpne_forward('pc', 'page', 'h_home', $errors);

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

kikky.net