Ich versuche, während des Bestellvorgangs eine zusätzliche Anmeldeoption hinzuzufügen. Im Moment haben Sie den Benutzernamen / Passwort Weg. Ich möchte ein Schaltflächenbild hinzufügen, um mich über einen OAuth-Prozess anzumelden (in meinem Fall Github).
Ich habe einen Weg gefunden, aber es ist nicht der beste Weg. In der Vorlagendatei checkout / onepage / login.phtml befindet sich ein Aufruf, um ein Blockkind mit dem Namen abzurufen form.additional.info
.
Ich habe versucht, meinen eigenen Block auf diese Weise einzufügen, aber es hat nicht funktioniert.
<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>
Ich habe einen anderen Weg gefunden, wie es das Captcha-Modul macht:
<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>
In diesem Fall funktioniert es, ABER das Captcha wird nicht angezeigt. Wie kann ich mehrere Blöcke in einen form.additional.info
Block einfügen ?
Danke für Ihre Hilfe
EDIT :
Ich habe einige Gründe gefunden, warum die Schaltfläche bei Verwendung der Referenzmethode nicht unter den Anmeldefeldern angezeigt form.additional.info
wird. Es wird stattdessen in der Abrechnungsansicht der Kasse angezeigt.
- Der Block
form.additional.info
wird vom Captcha-Modul für den Block erstellt,checkout.onepage.login
dann wird er auch für den Block erstelltcheckout.onepage.billing
- Beim Generieren des Blocks in Mage_Core_Model_Layout :: _ generateBlock () wird das übergeordnete Blockobjekt des Blocks durchsucht
login_github_button
. Anstatt den einen zu findencheckout.onepage.login
, findet er einen der zuletzt erstellten :checkout.onepage.billing
. Der Block wird an diesen letzten angehängt, anstatt an den Anmeldeblock. Dann finde ich meine Login-Schaltfläche in der Rechnungsadressenansicht anstelle der Loginansicht !!! - Wenn ich in die Layoutdatei captcha.xml einkommentiere, funktioniert der Teil über
checkout.onepage.billing
meine erste Lösung.
Es ist immer noch nicht in Ordnung, aber ich fange an, die Gründe zu finden.
quelle
<reference name="form.additional.info">
und<depends>
Lösung ist viel sauberer und wartbarer.Die Datei captcha.xml generiert den Block, daher sollte er verwendbar sein. Hast du a hinzugefügt?
um sicher zu sein, dass Ihr Block bereits existiert, wenn Sie versuchen, ein Kind hinzuzufügen?
quelle
<reference name="form.additional.info">
und dann das hinzuzufügen<depends>
. Wenn Sie diesen zweiten Block<reference name="checkout.onepage.login">
mit dem verwenden<depends>
, wird der Captcha-Block wie erwähnt überschrieben.depends
ist in diesem Fall nicht erforderlich. Und wir sind uns alle einig über den überschriebenen Weg meines zweiten Blocks. Ich habe den Grund gefunden, warum es nicht funktioniert, aber ich finde immer noch keine saubere Lösung. Siehe meine Bearbeitung in der Frage.