OpenPNE3メモ

ちょっと腰を据えてOpenPNE 3に取り組む予定なので、自分用メモエントリ。

設定関連

  • インストールしないプラグイン - config/plugins.yml
    • デフォルトでは、openpne:installでいろいろなプラグインがインストールされてしまい、関連モデルなども作成される。不要なプラグインをインストール/アップデートなどの対象から外すにはconfig/plugins.ymlに記述する。
    • Google グループ
opWebAPIPlugin: 
  install: false 
  • DB設定を変更せずにインストールのやり直し redoオプション
php symfony openpne:install --redo
  • htaccess - mod_rewrite
    • /web/cacheディレクトリ配下はsymfonyを経由させる必要があるが、他のリソースはダイレクトでよい。以下設定の例:
  RewriteEngine On
  RewriteBase /

  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !^/cache
  RewriteRule .* - [L]

  RewriteRule ^(.*)$ index.php [QSA,L]
  • 言語設定
    • 「日本語だけ」を利用したい場合でも、i18nを無効にしてはいけない
      • i18nを無効にすると英語ベースになる
  • CAPTCHA
    • 会員登録時の CAPTCHA を無効(使用しない)にするには、管理画面「SNS設定」→「一般的な設定」→「CAPTCHA 使用設定」
  • ナビゲーション
    • ナビゲーションは基本的にnavigationテーブルのレコードに従って表示される
    • ローカルナビは、navigationテーブルのtypeに従って表示されるが、管理画面ではコア組み込みのものしか編集できない
    • 自前でtypeを追加したい場合は、管理画面で適当な箇所に追加した後、DBでtypeを変更するなど
    • 指定したtypeのナビゲーションを表示するには、sfConfig::set('sf_nav_type', 'member');のようにナビゲーションタイプを設定する。
  • メール
    • コアのデフォルトメールは、lib/config/config/mail_template.yml
    • テンプレートに項目を追加したい場合は、例えばプラグインのconfigディレクトリにmail_template.ymlを作り、コアのymlと同じエントリで上書きしたり、別のエントリを追加する。
    • mail_template.ymlに追加すると、管理画面のメールテンプレート編集に表示されるようになる。
    • 管理画面のメールテンプレート編集で内容を編集すると、編集した内容はDBに保存され、以降はDBの内容が優先される。

認証関連

  • PCメールアドレスと携帯メールアドレスの両方を受け付ける
    • 管理画面→プラグイン設定→認証プラグイン設定→opAuthMailAddressPlugin→設定で以下の2種がある。
      • PCメールアドレスと携帯メールアドレスの両方を受け付ける→PCのメールだけ登録してあるメンバーが、携帯を使って携帯ログイン画面からPCのメールアドレスでログインできる。逆も同様に、携帯のメールだけ登録してあるメンバーが、PCでPCのログイン画面から携帯のメールアドレスでログインできる。
      • PCメールアドレスと携帯メールアドレスのどちらか一方を受け付ける→PCのメールアドレスではPCのログイン画面からのみログインでき、同様に携帯のメールアドレスでは携帯のログイン画面からのみログインできる。
  • メールアドレスログイン時のバリデーション
    • opAuthMailAddressPluginから、コアのlib/validator/opAuthValidatorMemberConfigAndPasswordを使っている
    • lib/validator/opAuthValidatorMemberConfigAndPasswordはopAuthValidatorMemberConfigを継承。
    • opAuthValidatorMemberConfig側でメールアドレスのチェックを行っている。
      • member_configの名前と値で一致するものがあるかというバリデーション
      • opAuthValidatorMemberConfigAndPasswordでは親クラスのdoCleanを呼び出した後、別途パスワードのチェックを行っている
    • パスワードはmd5で保存

DB関連

  • member_configテーブルにname_value_hashというフィールドがあり、このフィールドを使ってクエリーしている。(ログイン時のメールアドレスバリデーションetc)
    • valueがTEXT型で、フィールド丸ごとをインデックスに含めることができない(MySQL)ためだそうです。→こちら
    • name_value_hashの生成は以下(lib/model/doctrine/MemberConfigTable.class.php
<?php
md5($name.','.$value)
    • このあたり、開発用にお手軽にデータを設定したいので、member_configの値を直接コマンドで編集できるプラグインを作ったので、そのうち公開します・・・。

デザイン関連

  • デフォルトデザインのCSSをいじる場合、/web/css/main.cssではなくて、/web/opSkinBasicPlugin/css/main.css
  • ローカルメニュー(ナビゲーション)
    • 特定のモジュール配下でナビゲーションを切り替える仕組みは、navigationテーブルのtypeフィールドによる
    • defaultと、モジュール名に該当するものが結合
    • 管理画面からはfriendとcommunityしか設定できない
    • 独自に追加するには、アクション側に以下のようにtypeを設定する追加処理が必要
<?php
    // 例えばmemberモジュールのアクションのpreExecute()内で
    sfConfig::set('sf_nav_type', 'member');

プラグイン関連

開発関連