Vô hiệu hóa chuyển hướng sau khi thêm sản phẩm vào giỏ


8

Khi tôi thêm một cái gì đó từ nó categoryvào basket/cartnó chuyển hướng tôi đến basket/cart.

Sau khi tìm kiếm, tôi thấy rằng tôi có thể chuyển chức năng này trong hệ thống quản trị thông qua

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

Bây giờ nó chuyển hướng đến Trang chủ. Tôi không biết nếu đây là một lỗi trong chuyển hướng?


Không, đó không phải là trường hợp với Cài đặt Magento mặc định. Nó hoạt động hoàn toàn tốt khi được thêm từ trang chi tiết hoặc trang danh sách. Bạn đã thực hiện bất kỳ sửa đổi trong mã hoặc từ trang nào bạn đang cố gắng để làm như vậy?
Dexter

bạn có thể kiểm tra tệp log.system.log hoặc tệp ngoại
lệ.log

Tôi đang sử dụng một chủ đề của bên thứ 3. Tôi đã thực hiện một số sửa đổi trong frontend / default / {theme_name} /template/product/list.phtml. Trang tải ổn khi tôi nhấp vào nó từ menu.
dùng9252

Tôi đã định cấu hình cài đặt này để sau khi thêm vào giỏ hàng, hãy nhấp vào chuyển hướng tôi đến cùng một trang ..
Sarfaraj Sipai

Câu trả lời:


8

Nếu bạn nhìn vào bộ điều khiển giỏ hàng, app/code/core/Mage/Checkout/controllers/CartController.phpbạn sẽ tìm thấy chức năng _goBack. Đây là nơi url trả lại được quyết định bởi 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;
}

Phần bạn đang tìm kiếm là cuộc gọi đến _getRefererUrlđiều này xảy ra khi bạn không đặt url trả về làm tham số và không sử dụng tùy chọn chuyển hướng mặc định sang giỏ hàng.

Bên trong chức năng _getRefererUrl, url của người giới thiệu được kiểm tra để xem đó có phải là url nội bộ hay không, khi đó nó không phải là nội bộ so với url cơ sở được sử dụng.

Tôi sẽ đề nghị rằng url giới thiệu của bạn là bên ngoài hoặc có gì đó không đúng với kiểm tra.

Có một cái nhìn Mage_Core_Controller_Varien_Action::_isUrlInternalđể gỡ lỗi nếu url là nội bộ hay không.

Vấn đề là _isUrlI Internalal đã thất bại vì có cổng trong url cơ sở


Tôi rất mới với Magento và chưa bao giờ gỡ lỗi bất cứ điều gì trước đây trong Magengto. Quá trình liên quan là gì để tôi có thể gỡ lỗi URL này
user9252

@ user9252 có thể có những cách bạn có thể thực hiện việc này, điều tôi muốn đề xuất có thể là cách dễ nhất chỉ đơn giản là thêm một vài biến số trong hàm để xem điều gì đang xảy ra.
Phong tục David

Tôi đặt một cuộc gọi gỡ lỗi sau $ returnUrl = $ this-> getRequest () -> getParam ('return_url'); và nó trống, bất kỳ đề nghị.
user9252

1
Tôi đang sử dụng Bitnami và sử dụng các cài đặt mặc định. Cài đặt mặc định là 192.168.1.20:80/magento . Tôi có gỡ cổng không?
dùng9252

1
Tôi đã xóa số cổng: 80 khỏi url cơ sở. Xóa bộ nhớ cache. Bây giờ nó chuyển hướng trở lại trang danh sách danh mục theo kế hoạch.
dùng9252

4

Ngoài câu trả lời david-manners, bạn cũng có thể có vấn đề với web/unsecure/base_url& web/secure/base_urlđược đặt chính xác mà không có cổng - nhưng vhost ứng dụng thực tế của bạn (apache / nginx) nghe trên một số cổng khác ngoài 80/443, ví dụ như khi chạy phía sau véc ni.

Điều này sẽ dẫn đến \Mage_Core_Helper_Url::getCurrentUrl, được sử dụng, ví dụ như để thêm các tham số truy vấn được mã hóa base64 - được giải mã và sử dụng bằng cách _getRefererUrlcó cổng 'không mặc định' như một phần của url. (ví dụ: http://www.domain.com:81/your-url.html )

Kết quả là Mage_Core_Controller_Varien_Action::_isUrlInternaltrả về sai ...

Để tham khảo thêm, xem
http://erikeng.se/post/magento-behind-varnish.html

Một giải pháp sạch và tốt được mô tả trong
/server/318151/how-to-set-php-server-port-var-to-80-behind-varnish


1

Cố gắng đặt web/unsecure/base_url& web/secure/base_urlvới 127.0.0.1vị trí của bạn localhost. Đối với tôi nó đã làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.