Magento - кнопка «Перейти к оформлению заказа», чтобы перейти на страницу входа, если вы не вошли в систему - PullRequest
4 голосов
/ 10 февраля 2012

Когда пользователь, который не вошел (анонимно), нажимает 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 ]

7 голосов
/ 10 февраля 2012

Перейдите на сайт admin. Нажмите System. Перейдите к Configuration -> Sales -> Checkout -> 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();
          }
   ?>

Наконец, установите Custom Login Redirect в https://marketplace.magento.com/magehit-magehit-customloginredirect.html. Перейдите в Admin -> Система -> Конфигурация -> Клиенты -> Перенаправление настраиваемого входа. Установите checkout/cart

Все готово! Я проверил это, и он делает то, что вы описали. Обычно я выполняю все различные этапы, чтобы завершить ревизии, представленные в этих расширениях, но вы можете увидеть это, перейдя в app / code / local и просмотрев код расширения.

0 голосов
/ 15 января 2015

Ответ от 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 перенаправить на страницу оформления заказа после входа пользователя.

0 голосов
/ 10 февраля 2012

У вас нет блока Mage / Checkout / Block / Onepage / Link / Not / Logged / In.php, к которому вы пытаетесь получить доступ

Если вы создаете эту ссылку непосредственно в checkout / 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>

Таким образом, тип вашего блока должен быть таким же, как в стандарте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...