2011-01-07 19 views
5

Sto cercando di combinare il modulo di accesso e creare il modulo account in Magento in una pagina. Il motivo è che penso che meno pagine sono e meglio è. Trovo che Magento abbia confuso e abbia una comprensione limitata del suo layout e del suo sistema di template. Ho deciso che il modo più semplice per farlo sarebbe semplicemente aggiungere il modulo di accesso alla pagina dell'account del registro. Ho trovato il modulo di accesso e il modulo di registrazione in login.phtml e register.phtml in template/customer/form /.Magento accedere e registrarsi modulo una pagina

Ho semplicemente copiato il codice PHTML da login.phtml nel file register.phtml che si trova nella stessa directory. Questo è quello che ho finito con:

http://pastebin.com/fpkeBsxc

Dopo riempio nella e-mail e la password di un account e fare clic su Login, la pagina ritorna con errori di convalida che si riferiscono alla forma conto registro muggito esso. Fondamentalmente, non sono sicuro se questo è perché il mio approccio è completamente stupido/sbagliato e non posso semplicemente copiare e incollare il codice in questo modo, o si tratta di un semplice problema html che non riesco a vedere? Penso che potrebbe essere il modo sbagliato, come modulo di registro funziona. Pubblicherò uno screenshot di questo in un commento, non mi permetterà di incollare più di un link. Grazie per qualsiasi consiglio.

+0

http://img137.imageshack.us/img137/2458/49833894.png – HeinekenBluess

risposta

2

si dovrebbe fare un po 'diverso:

  1. per conoscere il layout Magento e come funziona
  2. riferimenti di layout uso per includere entrambe le forme esistenti in uno modello
  3. far loro presentare al loro controllori esistenti
+0

Andando a essere d'accordo. Sfortunatamente, non è così facile come combinare un paio di file phtml. – Nic

7

In customer.xml all'interno del tema è possibile spostare il blocco di registro dell'account all'interno della pagina di accesso.

<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> 
+0

Questo mi ha aiutato molto, grazie! – djdy

6
<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> 

da questo u può mettere html in cui do u desidera inserire nel cliente/form/login.phtml

<?php echo $this->getChildHtml('customer_form_register') ?> 
2

Al fine di unire il modulo di registrazione cliente con il modulo di login di default di Magento, basta notare le seguenti operazioni:
1. creazione di file mini.register.phtml
prima cosa è necessario creare un nuovo file di modello: app/design/frontend/[your-interface]/[your-theme]/template/customer/form/mini.register.phtml
E copiare il contenuto del file di registro predefinito: app/design/frontend/base/default/template/customer/form/register.phtml nel mini.register.phtml e personalizzare secondo le proprie esigenze.

2. Compreso mini.register.phtml in login.phtml
prima copia del file: app/design/frontend/base/default/template/customer/form/login.phtml al tema attuale come:

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

E ora è necessario modificare il nuovo login. phtml in modo da poter includere i contenuti di mini.register.phtml.
Per questo, è necessario utilizzare il seguente codice XML nel file XML di layout (preferibilmente in app/design/frontend/[your-interface]/[your-theme]/layout/local.xml) come:

<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> 

Ora si può semplicemente includere il mini.register.phtml in un nuovo login.File phtml come:

<?php echo $this->getChildHtml('customer_form_register2'); ?> 
  1. Il gioco è fatto. ormai chiaro la cache e ricaricare la pagina di login del cliente: http://your-mage-store/customer/account/login
+0

Grazie per aver postato la tua risposta! Si prega di leggere attentamente le [FAQ sulla promozione di sé] (http://stackoverflow.com/faq#promotion) attentamente. Si noti inoltre che * è * richiesto * di pubblicare un disclaimer ogni volta che si collega al proprio sito/prodotto. –

Problemi correlati