J'essaie d'ajouter une option de connexion supplémentaire pendant le processus de paiement. Pour le moment, vous disposez de la méthode nom d'utilisateur / mot de passe. Je veux ajouter une image de bouton pour me connecter via un processus OAuth (dans mon cas Github).
J'ai trouvé un moyen mais ce n'est pas le meilleur. Il y a dans le fichier de modèle checkout / onepage / login.phtml, un appel pour obtenir un enfant de bloc nommé form.additional.info
.
J'ai essayé d'y insérer mon propre bloc de cette façon mais cela n'a pas fonctionné.
<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>
J'ai trouvé une manière différente comme cela se fait par le module 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>
Dans ce cas, cela fonctionne MAIS le captcha ne sera pas affiché. Comment puis-je insérer plusieurs blocs dans le form.additional.info
bloc?
Merci de votre aide
MODIFIER :
J'ai trouvé quelques raisons pour lesquelles le bouton ne s'affiche pas sous les champs de connexion lors de l'utilisation de la form.additional.info
méthode de référence . Il s'affiche à la place dans la vue de facturation de paiement.
- Le bloc
form.additional.info
est créé par le module captcha pour le bloccheckout.onepage.login
puis il est également créé pour le bloccheckout.onepage.billing
- Lors de la génération du bloc dans Mage_Core_Model_Layout :: _ generateBlock (), il recherche l'objet bloc parent du bloc
login_github_button
. Au lieu de trouver l'un descheckout.onepage.login
, il trouve l' un des derniers créé:checkout.onepage.billing
. Le bloc est attaché à ce dernier, au lieu du journal de connexion. Ensuite, je trouve mon bouton de connexion dans la vue de l'adresse de facturation au lieu de la vue de connexion !!! - Si je commente dans le fichier de mise en page captcha.xml, la partie sur
checkout.onepage.billing
ma première solution fonctionne.
Ce n'est toujours pas ok mais je commence à trouver les raisons.
la source
<reference name="form.additional.info">
et<depends>
solution ci - dessus est beaucoup plus propre et plus maintenable.le captcha.xml génère le bloc, il doit donc être utilisable. Avez-vous ajouté un
pour être sûr que votre bloc existe déjà, quand vous essayez d'y ajouter un enfant?
la source
<reference name="form.additional.info">
puis d'ajouter le<depends>
. Si vous utilisez ce deuxième bloc<reference name="checkout.onepage.login">
avec le,<depends>
il écrasera le bloc captcha comme vous l'avez mentionné.depends
n'est pas nécessaire dans ce cas. Et nous sommes tous d'accord sur la manière écrasée de mon deuxième bloc. J'ai trouvé la raison pour laquelle cela ne fonctionne pas mais je ne trouve toujours pas encore la solution propre. Voir mon montage dans la question.