Tento adicionar uma opção de login adicional durante o processo de checkout. No momento, você tem o nome de usuário / senha. Quero adicionar uma imagem de botão para fazer login por meio de um processo OAuth (no meu caso, Github).
Eu encontrei um caminho, mas não é o melhor. Há no arquivo de modelo checkout / onepage / login.phtml, uma chamada para obter o nome de um filho do bloco form.additional.info
.
Tentei inserir meu próprio bloco dessa maneira, mas não funcionou.
<checkout_onepage_index>
<reference name="form.additional.info">
<block type="core/template" name="login_github_button" as="login.github.button">
<action method="setTemplate" ifconfig="github/config/enabled">
<template>github/customer/login.phtml</template>
</action>
</block>
</reference>
</checkout_onepage_index>
Eu encontrei uma maneira diferente, como é feita pelo módulo captcha:
<checkout_onepage_index>
<reference name="checkout.onepage.login">
<block type="core/text_list" name="form.additional.info">
<block type="core/template" name="login_github_button" as="login.github.button">
<action method="setTemplate" ifconfig="github/config/enabled">
<template>github/customer/login.phtml</template>
</action>
</block>
</block>
</reference>
</checkout_onepage_index>
Nesse caso, ele funciona, mas o captcha não será exibido. Como posso inserir vários blocos no form.additional.info
bloco?
Obrigado pela ajuda
EDIT :
Encontrei alguns motivos pelos quais o botão não é exibido nos campos de login ao usar o form.additional.info
método de referência . Ele é exibido na visualização de faturamento da finalização da compra.
- O bloco
form.additional.info
é criado pelo módulo captcha para o blococheckout.onepage.login
e também é criado para o blococheckout.onepage.billing
- Ao gerar o bloco em Mage_Core_Model_Layout :: _ generateBlock (), ele pesquisa o objeto do bloco pai do bloco
login_github_button
. Em vez de encontrar o caminho decheckout.onepage.login
, ele encontra um dos mais recentes criado:checkout.onepage.billing
. O bloco está anexado a este último, em vez do logon. Então eu encontro meu botão de login na visualização do endereço de cobrança em vez da visualização de login !!! - Se eu comentar no arquivo captcha.xml de layout, a parte sobre
checkout.onepage.billing
minha primeira solução funcionará.
Ainda não está ok, mas começo a descobrir os motivos.
fonte
<reference name="form.additional.info">
e<depends>
acima é muito mais limpa e mais sustentável.o captcha.xml gera o bloco, portanto deve ser utilizável. Você adicionou um
para ter certeza de que seu bloco já existe, quando você tenta adicionar um filho a ele?
fonte
<reference name="form.additional.info">
e depois adicionar o<depends>
. Se você usar esse segundo bloco<reference name="checkout.onepage.login">
com o<depends>
mesmo, ele substituirá o bloco captcha como você mencionou.depends
não é necessária neste caso. E todos estamos de acordo sobre a maneira substituída do meu segundo bloco. Encontrei o motivo pelo qual ele não funciona, mas ainda não encontro a solução limpa. Veja minha edição na pergunta.