OpenPNE2.8でオープン制にしても新規登録ボタンが表示されない問題について

OpenPNE2.8の設定で、招待制からオープン制に変更した。
これで、参加者の招待なしでも登録できるようになるはずだが、どこから登録できるのかわからない。

調べてみると、「OpenPNE オープン制で新規登録ボタンが無い」のページを発見。
解決方法は、public_html/skin/ディレクトリにある「skin_login_open.jpg」を「skin_login.jpg」に変更すること。
確かに、これでログイン画面に「新規登録」ボタンが表示されるようになった。

しかし、この対応はあまりスマートではないように思う。これが正式な方法なのだろうか?

ソースコードを追いかけてみることにする。

おそらく、このログイン画面で「skin_login.jpg」をよんでいるのが、OPENPNE_DIR/webapp/modules/pc/templates/o_login.tplの次の個所。

<img src="({t_img_url_skin filename=skin_login})" class="bg">

ここの「t_img_url_skin」というのは、PHPのテンプレートエンジンである「Smarty」のプラグイン機能で、実体は OpenPNE_DIR/webadd/lib/smarty_plugins/function.t_img_url_skin.php かな?
(Smartyについては全然知らないので、あまり自信がない。)

function.t_img_url_skin.phpでは、引数filenameと「c_skin_filename」テーブルのskinnameフィールドが一致するレコードがないとき、引数filenameに適当な拡張子(filenameがskin_から始まれば「jpg」を、それ以外の場合は「gif」)をつけて返す。

一致するレコードがある場合は、OPENPNE_IMG_CACHE_PUBLICの設定で処理が別れる。
OPENPNE_IMG_CACHE_PUBLICは、OPNPNE_DIR/config.phpで設定している。
初期値はfalse。

OPENPNE_IMG_CACHE_PUBLICがfalseの場合は、「img_skin.php?filename=引数のfilename」になる。

以上から、「c_skin_filename」テーブルに該当するレコードがないために、SNS設定の招待制/オープン制にかかわらず、常に「skin_login.jpg」になってしまっている。

期待される正しい動作は、「c_skin_filename」テーブルに該当するレコードがあり、「<img src=”OpenPNEのURL/img_skin.php?filename=skin_login)” class=”bg”>」になることだろう。

きっと、SNS設定画面で「設定変更する」ボタンを押したとき、「c_skin_filename」テーブルを更新するようにすれば、正しい動作になると思われる。

この続きは「 OpenPNE2.8でオープン制にしても新規登録ボタンが表示されない問題について(解決)」です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください