Magento - 如果没有登录,则“继续结账”按钮进入登录页面

时间:2012-02-10 11:40:16

标签: magento login checkout

当未登录的用户(匿名)点击Proceed to checkout时,我希望将他们带到登录页面。然后,在他们登录或注册后,他们应该被带回结帐页面

我正在使用单页结帐,其中包含您尚未登录的登录部分,但 的权力不希望这样。

最初,我开始改变checkout.xml的路线以获得这些值:

<customer_logged_in>

    <block type="core/text_list" name="checkout.cart.top_methods" as="top_methods" translate="label">
        <label>Payment Methods Before Checkout Button</label>
        <block type="checkout/onepage_link" name="checkout.cart.methods.onepage" template="checkout/onepage/link.phtml"/>
    </block>

</customer_logged_in>

<customer_logged_out>

    <block type="core/text_list" name="checkout.cart.top_methods" as="top_methods" translate="label">
        <label>Payment Methods Before Checkout Button</label>
        <block type="checkout/onepage_link_not_logged_in" name="checkout.cart.methods.onepage" template="checkout/onepage/link_not_logged_in.phtml"/>
    </block>

</customer_logged_out>

link_not_logged_in.phtml

$this->getLoginUrl();

但这甚至没有拉我的新phtml文件,我甚至不确定这会带我到结账页面之后。任何文章或帮助大大收到。

3 个答案:

答案 0 :(得分:7)

转到您网站的admin。点击System。转到Configuration - &gt; Sales - &gt; Checkout - &gt; Checkout Options并将Allow Guest Checkout设为“否”`

edit

打开app/design/frontend/base/default/template/checkout/onepage.phtml。将以下代码放在文件的最顶部:

   <?php
          if (!$this->helper('customer')->isLoggedIn()) {
                 header("Location: /customer/account/login/");
                 exit();
          }
   ?>

最后,在https://marketplace.magento.com/magehit-magehit-customloginredirect.html安装Custom Login Redirect。转到管理员 - &gt;系统 - &gt;配置 - &gt;客户 - &gt;自定义登录重定向。将其设置为checkout/cart

全套!我测试了它,它完成了你所描述的。通常我会通过所有各种步骤来完成这些扩展中存在的修订,但是您可以通过转到app / code / local并查看扩展代码来查看。

答案 1 :(得分:0)

您没有尝试访问的块Mage / Checkout / Block / Onepage / Link / Not / Logged / In.php

如果您直接在结帐/ onepage / link_not_logged_in.phtml 中创建此链接,那么您必须使用此类代码

<customer_logged_out>
    <block type="core/text_list" name="checkout.cart.top_methods" as="top_methods" translate="label">
        <label>Payment Methods Before Checkout Button</label>
        <block type="checkout/onepage_link" name="checkout.cart.methods.onepage" template="checkout/onepage/link_not_logged_in.phtml"/>
    </block>
</customer_logged_out>

因此,您的块类型必须与标准

中的块类型相同

答案 2 :(得分:0)

seanbreeden的回答指出了我正确的方向,但我认为可以提供一些额外的信息和一些改进。

您需要将结帐中的重定向添加到登录页面。一个简单的地方是在结帐模板中。如果您使用单页结帐和默认设计,则为app/design/frontend/default/default/template/remove/checkout/onepage.phtml。只需将此代码添加到该模板的顶部(<?php ?>标记内)。

if (!$this->helper('customer')->isLoggedIn()) {
    // Add a message that will display on the login page
    Mage::getSingleton('core/session')->addError('Please log in or create an account to checkout.');

    // Create the redirection
    header("Location: " . $this->helper('customer')->getLoginUrl());
    exit();
}

请注意getLoginUrl()的使用,这将允许Magento在用户登录后重定向到结帐页面。