バージョン選択

フォーラム

メニュー

オンライン状況

84 人のユーザが現在オンラインです。 (72 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 83
jumbo15 もっと...

サイト内検索

質問 > フロント機能 > カートに入れるボタンをクリック後、指定したURLに飛ばしたいです

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mamiko
投稿日時: 2014/6/18 16:11
対応状況: −−−
半人前
登録日: 2013/5/13
居住地:
投稿: 15
カートに入れるボタンをクリック後、指定したURLに飛ばしたいです
どうか教えて下さい。
カートに追加するボタンをクリックした後に、商品がカートに入った状態で、カゴの中ではなく、指定したURLに遷移させたいのですが、方法がどうしても分かりませんでした。

[EC-CUBE] 正式版(Ver2.13.1)簡単インストール
[レンタルサーバ] ヘテムル
[OS] mac
[PHP] PHP Version 5.3.28
[データベース] MySQL 5.6.13
[WEBサーバ] Apache
[ブラウザ]firefox


いつもフォーラムには助けられています。
今回どうしても自分で解決できないので質問させていただきます。


どなたか知恵をお借りできませんでしょうか(>_<)
よろしくお願い致します。
piropiro
投稿日時: 2014/6/18 16:30
対応状況: −−−
常連
登録日: 2014/4/25
居住地:
投稿: 56
Re: カートに入れるボタンをクリック後、指定したURLに飛ばしたいです
詳細ページに関してですが、
LC_Page_Products_Detail.phpの500行あたりに
以下のような関数が定義されていて
これはカートに商品を追加したときの処理です。

public function doCart()
{
$this->arrErr = $this->lfCheckError($this->mode,$this->objFormParam,
$this->tpl_classcat_find1,
$this->tpl_classcat_find2);
if (count($this->arrErr) == 0) {
$objCartSess = new SC_CartSession_Ex();
$product_class_id = $this->objFormParam->getValue('product_class_id');

$objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'));

// 開いているカテゴリーツリーを維持するためのパラメーター
$arrQueryString = array(
'product_id' => $this->objFormParam->getValue('product_id'),
);

SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);
SC_Response_Ex::actionExit();
}
}


後半のsendRedirectがクリック後にどこのページに
飛ばすかの処理なので、
ここをいじってみるといいと思います。
sumida
投稿日時: 2014/6/18 16:31
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: カートに入れるボタンをクリック後、指定したURLに飛ばしたいです
確認はしていませんが、
以下の

SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);

部分を変更すればできるような。
data/class/pages/products/LC_Page_Products_List.php

        //カート処理
        $target_product_id = intval($this->arrForm['product_id']);
        if ($target_product_id > 0) {
            // 商品IDの正当性チェック
            if (!SC_Utils_Ex::sfIsInt($this->arrForm['product_id'])
                || !SC_Helper_DB_Ex::sfIsRecord('dtb_products', 'product_id', $this->arrForm['product_id'], 'del_flg = 0 AND status = 1')) {
                SC_Utils_Ex::sfDispSiteError(PRODUCT_NOT_FOUND);
            }

            // 入力内容のチェック
            $arrErr = $this->lfCheckError($objFormParam);
            if (empty($arrErr)) {
                $this->lfAddCart($this->arrForm);

                // 開いているカテゴリーツリーを維持するためのパラメーター
                $arrQueryString = array(
                    'category_id' => $this->arrForm['category_id'],
                );

                SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);
                SC_Response_Ex::actionExit();
            }
            $js_fnOnLoad .= $this->lfSetSelectedData($this->arrProducts, $this->arrForm, $arrErr, $target_product_id);
        } else {
            // カート「戻るボタン」用に保持
            $netURL = new Net_URL();
            //該当メソッドが無いため、$_SESSIONに直接セット
            $_SESSION['cart_referer_url'] = $netURL->getURL();
        }

data/class/pages/products/LC_Page_Products_Detail.php

    public function doCart()
    {
        $this->arrErr = $this->lfCheckError($this->mode,$this->objFormParam,
                                            $this->tpl_classcat_find1,
                                            $this->tpl_classcat_find2);
        if (count($this->arrErr) == 0) {
            $objCartSess = new SC_CartSession_Ex();
            $product_class_id = $this->objFormParam->getValue('product_class_id');

            $objCartSess->addProduct($product_class_id, $this->objFormParam->getValue('quantity'));

            // 開いているカテゴリーツリーを維持するためのパラメーター
            $arrQueryString = array(
                'product_id' => $this->objFormParam->getValue('product_id'),
            );

            SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);
            SC_Response_Ex::actionExit();
        }
    }

mamiko
投稿日時: 2014/6/18 18:09
対応状況: −−−
半人前
登録日: 2013/5/13
居住地:
投稿: 15
Re: カートに入れるボタンをクリック後、指定したURLに飛ばしたいです
早速ありがとうございます。
下記部分をいじればできるんだろうな。という所まではたどり着いたのですが、

SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);
SC_Response_Ex::actionExit();

CART_URLの部分に何かURLを入れてみたりはしたものの、思うような動きにならず、さっぱり分かりませんでした。。。

いろいろ試しながら情報がないか検索してますが、まだ解決できないです。


mamiko
投稿日時: 2014/6/18 18:16
対応状況: −−−
半人前
登録日: 2013/5/13
居住地:
投稿: 15
Re: カートに入れるボタンをクリック後、指定したURLに飛ばしたいです
アドバイス頂き、ありがとうございます。
試しに、下記部分にurlを指定してみました。

SC_Response_Ex::sendRedirect(CART_URL, $arrQueryString);

そうしたら、products/ここにアドレス表示
となって、404エラーになってしまいました。

表示させたいページはデザイン管理から追加したページでしたので、その方法が分かりませんでした。
piropiro
投稿日時: 2014/6/18 19:06
対応状況: −−−
常連
登録日: 2014/4/25
居住地:
投稿: 56
Re: カートに入れるボタンをクリック後、指定したURLに飛ばしたいです
お疲れ様です。
以下、詳細ページにかんしてです。

例1)
SC_Response_Ex::sendRedirect("../../mypage/login.php" ,$arrQueryString);
とすると、

詳細ページの2つ上のディレクトリ(TOPページ)
のmypage/login.php
なのでログイン画面に飛びます。

例2)
SC_Response_Ex::sendRedirect("http://eccube.com/guide/privacy.php" ,$arrQueryString);

とすると、上記のアドレス通りプライバシーポリシーページに飛びます。

絶対パス、相対パスは勝手に判断してくれます。
ただし外部のパスへのアクセスはうまくいかないようです。

詳しくは、
data/class/SC_Responce.php
のsendRedirect関数を確認してみてください!
mamiko
投稿日時: 2014/6/19 11:28
対応状況: 解決済
半人前
登録日: 2013/5/13
居住地:
投稿: 15
Re: カートに入れるボタンをクリック後、指定したURLに飛ばしたいです
ありがとうございます。

絶対パスで書けば良かったんですね。

今やってみたら、できました!ありがとうございました。

試しに外部サイトのurlを指定してみたら、教えて頂いた通りエラーになって飛びませんでした。

今回は内部リンクなので全然問題なく希望通りの動きができたので、とても助かりました。

本当にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,861名です
総投稿数は109,996件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.