EC-CUBE2.13.5でログアウトボタンを実装したかったので実装してみました。
マイページやヘッダーメニューなど実装したいときがありますよね。
ログアウトボタンを実装する
今回はパラメータで「mode=logout」になった際に、ログイン情報を破棄しログインページにリダイレクトするようにします。
※必ずバックアップを取って作業してください。
変更箇所
「data/class_extends/page_extends/mypage/LC_Page_Mypage_Ex.php」を編集します。
※「data/class/pages/mypage/LC_Page_Mypage.php」でも実装は可能ですが、アップデートなどでデフォルトに上書きされてしまうので、アップデートされても対応できる「LC_Page_Mypage_Ex.php」を編集します。
「LC_Page_Mypage.php」内の「public function action()」内のコードをコピペし、56~60行を追記します。
class LC_Page_Mypage_Ex extends LC_Page_Mypage { /** * Page を初期化する. * * @return void */ function init() { parent::init(); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); } public function action() { //決済処理中ステータスのロールバック $objPurchase = new SC_Helper_Purchase_Ex(); $objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG); $objCustomer = new SC_Customer_Ex(); $customer_id = $objCustomer->getValue('customer_id'); //ページ送り用 $this->objNavi = new SC_PageNavi_Ex($_REQUEST['pageno'], $this->lfGetOrderHistory($customer_id), SEARCH_PMAX, 'eccube.movePage', NAVI_PMAX, 'pageno=#page#', SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE); $this->arrOrder = $this->lfGetOrderHistory($customer_id, $this->objNavi->start_row); switch ($this->getMode()) { case 'getList': echo SC_Utils_Ex::jsonEncode($this->arrOrder); SC_Response_Ex::actionExit(); break; default: break; } // 支払い方法の取得 $this->arrPayment = SC_Helper_Payment_Ex::getIDValueList(); // 1ページあたりの件数 $this->dispNumber = SEARCH_PMAX; // ログアウト実装 if ($_GET['mode'] == 'logout') { $objCustomer->EndSession(); header('Location: index.php'); } $this->json_payment = SC_Utils::jsonEncode($this->arrPayment); $this->json_customer_order_status = SC_Utils::jsonEncode($this->arrCustomerOrderStatus); } }
あとはサーバにアップロードすれば下準備は完了です。
ログアウトボタンを実装したい部分に、
<a href="index.php?mode=logout" class="<!--{if $tpl_mypageno == 'refusal'}--> selected<!--{/if}-->">ログアウト</a>
このコードを追加してあげるとログアウトボタンの完成!
意外と簡単だね_(:3」∠)_
ABOUT ME