ここ1年ぐらい、OpenPNE3のプラグインを色々作っているわけですが、
http://plugins.openpne.jp/package/listMember?id=37個人的にハマりやすいと思ってる点を4点ほどまとめてみました。
■フォームのカスタマイズはconfigureじゃなくてsetupでやりましょう
特にsymfony1.xでsfFormを扱ったことがある人は要注意。PNEプラグインの場合、path/to/pne/plugins/opXXXPlugin/lib/form/doctrine/PluginXXXForm.class.phpを弄ることになるのですが、そこでconfigureを定義してもPluginXXXForm.class.phpを継承しているpath/to/pne/lib/form/doctrine/XXXForm.class.phpに空っぽのconfigureが入ってるので、その空っぽの内容に上書きされてしまいます。
■既存プラグインをカスタマイズするとき、ディレクトリごと.oldとか.orgとか付けて残しておくのはNG。ディレクトリごと取っておくときはpath/to/pneの外に出すか、FugaHoge.class.php.oldのように.php以外の拡張子で残そう
symfony1.x系に共通の話なのですが、autoloadが働く時lib/util.org/FugaHoge.class.phpとlib/util/FugaHoge.class.phpがあったらutil.orgのほうが読み込まれてしまっていつまでたっても変更した内容が反映されない場合があります。
■携帯のテンプレートで<table width="100%">等と入れるのがめんどくさい。
表示内容をslotにつっこんでop_include_box使いましょう。便利。
■plugins.openpne.jpからインストールした時は良いが自SNS内に自分でプラグインを作った時、テーブル追加はopenpne:install --redoしかない(?)
migrationのスクリプト書けばinstallやり直さなくても大丈夫な気もしますが、今のところ開発専用にSNSを1個確保してそこでinstall --redoしまくるのがいいかも