Intento agregar una opción de inicio de sesión adicional durante el proceso de pago. Por el momento, tiene la forma de nombre de usuario / contraseña. Quiero agregar una imagen de botón para iniciar sesión a través de un proceso de OAuth (en mi caso, Github).
Encontré un camino, pero no es el mejor. En el archivo de plantilla checkout / onepage / login.phtml, hay una llamada para obtener un bloque llamado niño form.additional.info
.
Traté de insertar mi propio bloque de esta manera, pero no funcionó.
<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>
Encontré una forma diferente, como lo hace el 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>
En este caso, funciona PERO el captcha no se mostrará. ¿Cómo puedo insertar varios bloques en form.additional.info
bloque?
Gracias por tu ayuda
EDITAR :
Encontré algunas razones por las cuales el botón no se muestra debajo de los campos de inicio de sesión cuando se usa el form.additional.info
método de referencia . En su lugar, se muestra en la vista de facturación de pago.
- El bloque
form.additional.info
es creado por el módulo captcha para el bloque,checkout.onepage.login
luego también se crea para el bloquecheckout.onepage.billing
- Al generar el bloque en Mage_Core_Model_Layout :: _ generateBlock (), busca el objeto del bloque primario del bloque
login_github_button
. En lugar de encontrar el decheckout.onepage.login
, se encuentra uno de los de más reciente creación:checkout.onepage.billing
. El bloque se adjunta a este último, en lugar del registro en uno. Luego encuentro mi botón de inicio de sesión en la vista de la dirección de facturación en lugar de la vista de inicio de sesión. - Si comento en el archivo de diseño captcha.xml, la parte sobre
checkout.onepage.billing
mi primera solución funciona.
Todavía no está bien, pero empiezo a encontrar los motivos.
fuente
<reference name="form.additional.info">
y<depends>
solución anterior es mucho más limpio y más fácil de mantener.captcha.xml genera el bloque, por lo que debería ser utilizable. ¿Agregaste un
para estar seguro de que su bloqueo ya existe cuando intenta agregarle un hijo?
fuente
<reference name="form.additional.info">
y luego agregar el<depends>
. Si usa ese segundo bloque<reference name="checkout.onepage.login">
con el<depends>
, sobrescribirá el bloque captcha como mencionó.depends
no es necesaria en este caso. Y todos estamos de acuerdo sobre la forma sobrescrita de mi segundo bloque. Encontré la razón por la que no funciona, pero todavía no encuentro la solución limpia. Vea mi edición en la pregunta.