製品がバスケットに追加された後のリダイレクトを無効にする


8

からに何かを追加するcategoryと、basket/cartにリダイレクトされますbasket/cart

検索した後、私は管理システムでこの機能を

Configuration > Sales | Checkout > After Adding a Product Redirect to Shopping Cart

これで、ホームページにリダイレクトされます。これがリダイレクトのバグかどうかわかりませんか?


いいえ、それはデフォルトのMagento Setupには当てはまりません。詳細ページまたは一覧ページから追加すると、完全に正常に動作します。コードに変更を加えたか、どのページから変更を試みましたか?
デクスター2014年

ログfiles.system.logまたはexception.logファイルをチェックできます
Pradeep

サードパーティのテーマを使用しています。frontend / default / {theme_name} /template/product/list.phtmlにいくつかの変更を加えました。メニューからクリックすると、ページは正常に読み込まれます。
user9252 2014年

私は、この設定を構成しているので、カートに追加した後、同じページにリダイレクトの私をクリックしてください...
Sarfaraj Sipai

回答:


8

カートコントローラーを見るapp/code/core/Mage/Checkout/controllers/CartController.phpと、関数が見つかります_goBack。これは、戻り値のURLがMagentoによって決定される場所です。

protected function _goBack()
{
    $returnUrl = $this->getRequest()->getParam('return_url');
    if ($returnUrl) {

        if (!$this->_isUrlInternal($returnUrl)) {
            throw new Mage_Exception('External urls redirect to "' . $returnUrl . '" denied!');
        }

        $this->_getSession()->getMessages(true);
        $this->getResponse()->setRedirect($returnUrl);
    } elseif (!Mage::getStoreConfig('checkout/cart/redirect_to_cart')
        && !$this->getRequest()->getParam('in_cart')
        && $backUrl = $this->_getRefererUrl()
    ) {
        $this->getResponse()->setRedirect($backUrl);
    } else {
        if (($this->getRequest()->getActionName() == 'add') && !$this->getRequest()->getParam('in_cart')) {
            $this->_getSession()->setContinueShoppingUrl($this->_getRefererUrl());
        }
        $this->_redirect('checkout/cart');
    }
    return $this;
}

探しているセクションは_getRefererUrl、戻りURLをパラメーターとして設定せず、カートへのデフォルトのリダイレクトオプションを使用しない場合に発生する呼び出しです。

関数_getRefererUrl内では、ベースURLが使用されているよりも内部的でない場合、参照URLが内部URLであるかどうかがチェックされます。

リファラーURLが外部であるか、チェックに問題があることをお勧めします。

Mage_Core_Controller_Varien_Action::_isUrlInternalURLが内部かどうかをデバッグするために見てください。

問題は、ベースURLにポートがあるため、_isUrlInternalが失敗することでした。


私はMagentoに非常に慣れていないため、Magengtoでこれまでデバッグしたことがありません。このURLをデバッグするために必要なプロセスは何ですか
user9252

@ user9252これを実行する方法はいくつかあります。何が起こっているのかを確認するために、関数にいくつかの変数のvar_dumpsを追加するのが最も簡単な方法であると私が提案できるでしょう。
David Manners 2014年

$ returnUrl = $ this-> getRequest()-> getParam( 'return_url');の後にデバッグ呼び出しを配置し​​ます。そしてそれは空白でした、どんな提案でも。
user9252 2014年

1
Bitnamiを使用しており、デフォルト設定を使用しています。デフォルト設定は192.168.1.20:80/magentoです。ポートを削除しますか?
user9252 2014年

1
ベースURLからポート番号:80を削除しました。キャッシュをフラッシュします。予定どおり、カテゴリリストページにリダイレクトされます。
user9252 14年

4

david-mannersの回答に加えて、ポートなしでweb/unsecure/base_urlweb/secure/base_urlが正しく設定されていることにも問題がある可能性があります。

これにより、\Mage_Core_Helper_Url::getCurrentUrlたとえばbase64エンコードされたクエリパラメータを追加するために使用されます-デコードされ_getRefererUrl、URLの一部として「非デフォルト」ポートを使用することによって使用されます。(例:http : //www.domain.com : 81/your-url.html

結果としてMage_Core_Controller_Varien_Action::_isUrlInternalfalseが返されます...

詳細については、http://erikeng.se/post/magento-behind-varnish.htmlを参照して
ください

クリーンで適切なソリューションについては、
https://serverfault.com/questions/318151/how-to-set-php-server-port-var-to-80-behind-varnish


1

あなたの設定しようweb/unsecure/base_urlweb/secure/base_urlして127.0.0.1の代わりにlocalhost。私にとってはうまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.