Aggiunta di un blocco per accedere alla verifica della pagina


9

Provo ad aggiungere un'opzione di accesso aggiuntiva durante la procedura di pagamento. Al momento, hai il nome utente / password. Voglio aggiungere un'immagine del pulsante per accedere tramite un processo OAuth (nel mio caso Github).

Ho trovato un modo ma non è il modo migliore. Nel file modello checkout / onepage / login.phtml è presente una chiamata per ottenere il nome di un blocco figlio form.additional.info.

Ho provato a inserire il mio blocco in esso in questo modo ma non ha funzionato.

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

Ho trovato un modo diverso come è fatto dal modulo 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>

In questo caso, funziona MA il captcha non verrà visualizzato. Come posso inserire più blocchi nel form.additional.infoblocco?

Grazie per l'aiuto

MODIFICA :

Ho trovato alcuni motivi per cui il pulsante non viene visualizzato sotto i campi di accesso quando si utilizza il form.additional.infometodo di riferimento . Viene invece visualizzato nella vista di fatturazione del pagamento.

  1. Il blocco form.additional.infoviene creato dal modulo captcha per il blocco, checkout.onepage.loginquindi viene creato anche per il bloccocheckout.onepage.billing
  2. Durante la generazione del blocco in Mage_Core_Model_Layout :: _ generateBlock () cerca l'oggetto blocco padre del blocco login_github_button. Invece di trovare quello di checkout.onepage.login, si trova una delle ultime creazione: checkout.onepage.billing. Il blocco è collegato a quest'ultimo, anziché al log in uno. Quindi trovo il mio pulsante di accesso nella vista dell'indirizzo di fatturazione anziché nella vista di accesso !!!
  3. Se commento nel file captcha.xml di layout, la parte relativa alla checkout.onepage.billingmia prima soluzione funziona.

Non va ancora bene, ma comincio a trovare le ragioni.

Risposte:


3

Bene, l'unica soluzione che vedo è creare nel modulo layout il blocco, aggiungere il codice del captcha e aggiungere come riferimento il mio codice personalizzato. In questo caso è accettato.

Sfortunatamente, sarà ancora difficile inserire un blocco nel form.additional.infoblocco.

Ecco la soluzione che ho implementato:

<checkout_onepage_index>
    <reference name="checkout.onepage.login">
        <block type="core/text_list" name="form.additional.info">
            <block type="captcha/captcha" name="captcha">
                <reference name="head">
                    <action method="addJs"><file>mage/captcha.js</file></action>
                </reference>
                <action method="setFormId"><formId>user_login</formId></action>
                <action method="setImgWidth"><width>230</width></action>
                <action method="setImgHeight"><width>50</width></action>
            </block>
        </block>

        <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>
    </reference>
</checkout_onepage_index> 

Come indicato, ciò impedirà a qualsiasi altro modulo di utilizzare anche questo blocco e causerà anche problemi con gli aggiornamenti. La soluzione <reference name="form.additional.info">e <depends>sopra è molto più pulita e più mantenibile.
mybluevan,

@mybluevan Non capisco il downvote (se l'hai fatto). Un downvote è meritato per questi casi stackoverflow.com/privileges/vote-down La mia risposta è messa qui per mostrare una soluzione alternativa. Non è il massimo che conosco, ma permette di avere captcha e il layout del modulo personalizzato. Non sono stato chiaro dicendo che impedirà l'uso da parte di altri moduli. Volevo dire che se vuoi aggiungere un bambino a questo blocco, continuerà comunque a essere un problema. Sto ancora studiando un modo più pulito. Quello di Fabian non funziona affatto, ti invito a provarlo da solo nelle stesse condizioni
Sylvain Rayé

1

captcha.xml genera il blocco, quindi dovrebbe essere utilizzabile. Hai aggiunto un

<depends>
    <Mage_Captcha />
</depends>

per essere sicuri, che il tuo blocco esiste già, quando provi ad aggiungervi un figlio?


Non lavorare. Il mio modulo sembra sovrascrivere o avere priorità sul modulo Captcha. Come hai già detto in Twitter, il blocco 'form.additional.info' non esiste ancora. Quindi un layout del modulo lo crea e non consente di aggiungerne un altro. Il secondo modulo di layout non fa riferimento a "form.additional.info" ma cerca di crearne uno. Questo è il motivo per cui non funziona. Cerco di trovare un modo pulito per consentire entrambi. Una soluzione potrebbe essere quella di sovrascrivere login.phtml del modello onepage ma fornirà lavoro aggiuntivo per altri sviluppatori in caso di tema personalizzato
Sylvain Rayé,

Quello che Fabian sta cercando di consigliare è usare quel primo blocco che usa <reference name="form.additional.info">e quindi aggiungere il <depends>. Se usi quel secondo blocco <reference name="checkout.onepage.login">con <depends>questo, sovrascriverà il blocco captcha come hai detto.
mybluevan,

@mybluevan grazie non sono un novizio. Se ho scritto, non funziona, significa che ho provato come suggerito Fabian. Prima vengono caricati i moduli core di Magento, quindi community e local. Stesso ordine per i file xml di layout predefiniti. Il mio modulo è nella community, è finalmente caricato. Il tag dependsnon è necessario in questo caso. E siamo tutti d'accordo sul modo sovrascritto del mio secondo blocco. Ho trovato il motivo per cui non funziona ma non trovo ancora la soluzione pulita. Vedi la mia modifica nella domanda.
Sylvain Rayé,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.