EC-CUBE PR

EC-CUBEのログアウトボタンを実装する【2.13.5】

ログアウト
記事内に商品プロモーションを含む場合があります

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=&quot;index.php?mode=logout&quot; class=&quot;<!--{if $tpl_mypageno == 'refusal'}--> selected<!--{/if}-->&quot;>ログアウト</a>

このコードを追加してあげるとログアウトボタンの完成!
意外と簡単だね_(:3」∠)_

ABOUT ME
シラツキ
Web制作会社で働くフロントエンドエンジニア(コーダー)。 ココナラでもお仕事募集しております。 HTML,CSS,JS,WordPress,EC-CUBE,Next.jsなど制作に役立つ情報を発信していきます。 webサイトの運営、修正、制作などお仕事も募集中! お気軽にご相談ください。