Magento войти и зарегистрироваться на одной странице - PullRequest
5 голосов
/ 07 января 2011

Я пытаюсь объединить форму входа и создать учетную запись в Magento на одной странице. Причина в том, что я думаю, что чем меньше страниц, тем лучше. Я нахожу Magento запутанным и имею ограниченное понимание его структуры и системы шаблонов. Я решил, что самый простой способ сделать это - просто добавить форму входа на страницу учетной записи. Я нашел форму входа и форму регистрации в login.phtml и register.phtml в шаблоне / customer / form /.

Я просто скопировал код PHTML из файла login.phtml в файл register.phtml, который находится в том же каталоге. Вот чем я закончил:

http://pastebin.com/fpkeBsxc

После того, как я введу адрес электронной почты и пароль учетной записи и нажму кнопку «Войти», страница вернется с ошибками проверки, ссылающимися на форму регистрации учетной записи, расположенную ниже. По сути, я не уверен, что это потому, что мой подход совершенно глупый / неправильный, и я не могу просто скопировать и вставить подобный код, или это простая проблема HTML, которую я не вижу? Я думаю, что это может быть неправильно, так как форма регистрации работает. Я опубликую скриншот этого в комментарии, он не позволит мне вставить более одной ссылки. Спасибо за любой совет.

Ответы [ 4 ]

8 голосов
/ 28 июня 2011
<reference name="content">            
    <block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml">
        <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml" />            
    </block>
</reference>

этим вы можете поместить html куда вы хотите поместить в customer / form / login.phtml

<?php echo $this->getChildHtml('customer_form_register') ?>
7 голосов
/ 04 марта 2011

В customer.xml вашей темы вы можете переместить блок регистрации учетной записи на страницу входа.

 <customer_account_login translate="label">
    <label>Customer Account Login Form</label>
    <!-- Mage_Customer -->
    <remove name="right"/>
    <remove name="left"/>

    <reference name="root">
        <action method="setTemplate"><template>page/1column.phtml</template></action>
    </reference>
    <reference name="content">
        <block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml"/>


     <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">
            <block type="page/html_wrapper" name="customer.form.register.fields.before" as="form_fields_before" translate="label">
                <label>Form Fields Before</label>
            </block>
        </block> </reference>
</customer_account_login>
3 голосов
/ 06 ноября 2012

Чтобы объединить регистрационную форму клиента и стандартную форму входа в Magento, просто сделайте следующее:
1. Создание файла mini.register.phtml
Сначала вам нужно создать новый файл шаблона: app/design/frontend/[your-interface]/[your-theme]/template/customer/form/mini.register.phtml
И скопируйте содержимое файла реестра по умолчанию: app/design/frontend/base/default/template/customer/form/register.phtml в mini.register.phtml и настройте его в соответствии с вашими требованиями.

2. Включая mini.register.phtml в login.phtml
Сначала скопируйте файл: app/design/frontend/base/default/template/customer/form/login.phtml в текущую тему как:

app/design/frontend/[your-interface]/[your-theme]/template/customer/form/login.phtml

И теперь вам нужно изменить новый login.phtml, чтобы вы могли включать содержимое mini.register.phtml.
Для этого вы должны использовать следующий XML-код в XML-файле макета (предпочтительно в app/design/frontend/[your-interface]/[your-theme]/layout/local.xml) как:

<customer_account_login translate="label">
    <reference name="content">
        <action method="unsetChild"><child>customer_form_login</child></action>
        <block type="customer/form_login" name="customer_form_login2" template="customer/form/login.phtml" >
            <block type="customer/form_register" name="customer_form_register2" template="customer/form/mini.register.phtml">
                <block type="page/html_wrapper" name="customer.form.register.fields.before" as="form_fields_before" />
            </block>
        </block>
    </reference>
    <reference name="head">
        <action method="setTitle" translate="title" module="customer"><title>Login or Create an Account</title></action>
    </reference>
</customer_account_login>

Теперь вы можете просто включить mini.register.phtml в свой новый файл login.phtml как:

<?php echo $this->getChildHtml('customer_form_register2'); ?>
  1. Вы сделали. Теперь очистите кеш и перезагрузите страницу входа клиента: http://your-mage-store/customer/account/login
2 голосов
/ 07 января 2011

Вы должны сделать это немного по-другому:

  1. познакомиться с макетом magento и его работой
  2. использовать ссылки на макеты, чтобы включить обе существующие формы в один шаблон
  3. пусть они подчиняются своим существующим контроллерам
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...