Fireboardのログインの件でJoomla!じゃぱんのフォーラムに投稿しましたが、もう少しコードを変えてみます。
ROOT/components/com_login/login.php の22行目あたり...
コード:
global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db;
をコード:
global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db, $Itemid;
に。
同じく38行目あたりを..コード:
$params->def( 'login', $mosConfig_live_site );
をコード:
if($Itemid == あなたの飛ばしたいメニューID番号){
$params->set('login', sefRelToAbs('index.php?option=com_fireboard&Itemid=あなたの飛ばしたいメニューID番号'));
} else {
$params->def( 'login', $mosConfig_live_site );
}などとすれば可能なようです。
まずは、ROOT/components/com_fireboard/template/default/plugin/profilebox/profilebox.phpの110行目あたり
これは、もしかするとコミュニティビルダーなどのプラグインの使用状況により位置がことなるかもしれません。
(うちの環境ではプラグインは使用していません。)
else
{
$loginlink = sefRelToAbs('index.brush:php;?option=com_login&Itemid=' . $Itemid);
?>
を
else
{
$returnfunc = empty($func) ? '' : '&func='. $func;
$returnid = (int)$id ? '&id='. (int)$id : '';
$returncat = (int)$catid ? '&catid='. (int)$catid : '';
$returnlimit = (int)$limit ? '&limit='. (int)$limit : '';
$returnlimitstart = (int)$limitstart ? '&limitstart='. (int)$limitstart : '';
$returnQuery = $returnfunc. $returnid. $returncat. $returnlimit. $returnlimitstart;
$loginlink = sefRelToAbs('index.brush:php;?option=com_login&Itemid=' . $Itemid. $returnQuery);
に変更し、さらにROOT/comoponents/com_login/login.phpの38行目あたり
else
{
$params->def( 'login', $mosConfig_live_site );
を
if($Itemid == あなたのFireboardのmenuID){
$rtemp = mosGetParam($_REQUEST, 'func');
$returnfunc = $rtemp ? '&func='. $rtemp : '';
$rtemp = mosGetParam($_REQUEST, 'id');
$returnid = (int)$rtemp ? '&id='. (int)$rtemp : '';
$rtemp = mosGetParam($_REQUEST, 'catid');
$returncat = (int)$rtemp ? '&catid='. (int)$rtemp : '';
$rtemp = mosGetParam($_REQUEST, 'limit');
$returnlimit = (int)$rtemp ? '&limit='. (int)$rtemp : '';
$rtemp = mosGetParam($_REQUEST, 'limitstart');
$returnlimitstart = (int)$rtemp ? '&limitstart='. (int)$rtemp : '';
$returnQuery = $returnfunc. $returnid. $returncat. $returnlimit. $returnlimitstart;
$params->set('login', sefRelToAbs('index.brush:php;?option=com_fireboard&Itemid=あなたのFireboardのmenuID'. $returnQuery));
} else {
$params->def( 'login', $mosConfig_live_site );
}
?>
のように変更すれば、ログイン後表示していた記事に戻れます。
サイトを運営していると新しいエクステンションをテストしたり、表示を確かめることってありますよね。Joomla!の場合オンライン上で記事を書き、また編集できちゃうので以前のローカルでテストしてということをされていない方もおられるのではないでしょうか。
サイトのローカルコピーを先日再作成したときの手順を書いてみます。
必要なもの
ファイルのコピー
まずは、サーバー上のファイルをすべてローカルWebサーバー上のXAMPPならhtdocs以下の任意のフォルダにコピーします。
XAMPPをインストールしたフォルダ D:\xampp
サーバー上のファイルを入れるフォルダ D:\xampp\htdocs\example
この中にすべてのファイルを入れる。(htdocs直下を使っても良いが、XAMPPのファイルと重複したりするので注意。)
configuration.phpを編集
データベースをコピー
サーバー上のphpMyAdminを使いエクスポートを選択。
サーバーによって異なりますがデータベースを表示している場合は、テーブルすべてを選択。データベース名を選択できる場合は、該当のデータベース名を選択します。(イメージ参照)
そして以下にチェックをいれます。
(これは、チェックしなくても問題ないですが、失敗したときや個別にテーブルをインポートするときなどに便利です。)
最後にファイルに保存するにチェックを入れそのまま実行するボタンを押し、ローカルPCのどこかにファイルを保存します。
localhost.sql (ファイル名は、環境により異なりデータベース名だったりします。)
これで、ローカルPCにデータベースのデータがコピーできました。
XAMPPのphpMyAdminを開く
サーバー上と同じデータベース名(異なっても構いません。上の「これから作るローカルデータベース名」のこと)でデータベースを作成する。
このとき、照合順序に注意してください。
※そして必ずチェックしてください。上記で作成したローカルPCにコピーしたsqlファイルを開き、下記のような部分が無いかチェックしてください。
(ファイルのはじめに一カ所しかありません。)
DROP DATABASE `あなたのデータベース名`;
「あなたのデータベース名」というデータベースがあれば削除します。
CREATE DATABASE `あなたのデータベース名`;
「あなたのデータベース名」というデータベースを作成します。
USE あなたのデータベース名;
「あなたのデータベース名」というデータベースを使用するよう指示します。
DROP DATABASEの行とCREATE DATABASEの行は、削除してください。そしてUSE~の行があれば上で作成したデータベース名を書けば良いのですが、今回は削除しましょう。
※sqlファイルを開くとき文字コードに注意してください。Joomla!の場合大抵UTF-8です。保存するとき異なる文字コードで保存してしまうと壊れます。
作成した空のデータベースをphpMyAdminで表示します。
空なのでテーブルがありませんと表示されています。
上のメニューから「インポート」をクリック。先ほどのsqlファイルを指定し、実行するボタンを押下。
しばらく待ってインポート完了。
http://localhost/exampleを開く
※MySQLのサーバーとローカルでのバージョン違いなどでエラーが出る場合があります。その時は、そのエラーを見て該当する部分を修正しないといけないこともありますのでご注意ください。