Sayfa girişinde oturum açmak için bir blok ekleme


9

Ödeme işlemi sırasında ek bir giriş seçeneği eklemeye çalışıyorum. Şu anda, kullanıcı adı / şifre yolunuz var. Bir OAuth işlemi (benim durumumda Github) üzerinden giriş yapmak için bir düğme resmi eklemek istiyorum.

Bir yol buldum ama bu en iyi yol değil. Ödeme / onepage / login.phtml şablon dosyasında, adlı bir blok alt adını almak için bir çağrı var form.additional.info.

Kendi bloğumu bu şekilde yerleştirmeye çalıştım ama işe yaramadı.

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

Captcha modülü tarafından yapıldığı gibi farklı bir yol buldum:

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

Bu durumda çalışır, ancak captcha görüntülenmez. Bloğa nasıl birkaç blok ekleyebilirim form.additional.info?

Yardımın için teşekkürler

DÜZENLE :

Referans form.additional.infoyöntemini kullanırken düğmenin giriş alanlarının altında görünmemesinin bazı nedenlerini buldum . Bunun yerine ödeme faturalandırma görünümünde görüntülenir.

  1. Blok form.additional.info, blok için captcha modülü tarafından checkout.onepage.loginoluşturulur, ardından blok için de oluşturulurcheckout.onepage.billing
  2. Mage_Core_Model_Layout :: _ generaBlock () içinde blok oluşturulurken, bloğun üst blok nesnesini arar login_github_button. Yerine birini bulma checkout.onepage.login, oluşturulduğu son biridir bulur: checkout.onepage.billing. Blok, oturum açma yerine bu sonuncuya eklenir. Ardından, giriş görünümü yerine giriş adresi görünümünde fatura adresi görünümünde !!!
  3. Düzen captcha.xml dosyasına yorum yaparsam checkout.onepage.billingilk çözümümle ilgili bölüm çalışır.

Hala iyi değil ama nedenlerini bulmaya başladım.

Yanıtlar:


3

Gördüğüm tek çözüm, yerleşim modülüne blok oluşturmak, captcha kodunu eklemek ve özelleştirilmiş kodumu referans olarak eklemek. Bu durumda kabul edilir.

Ne yazık ki, bloğa bir blok eklemek hala zor olacaktır form.additional.info.

İşte uyguladığım çözüm:

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

Belirttiğiniz gibi, bu, diğer modüllerin de bu bloğu kullanmasını önleyecek ve yükseltmelerde sorunlara neden olacaktır. Yukarıdaki <reference name="form.additional.info">ve <depends>çözelti çok daha temiz ve daha bakımlıdır.
mybluevan

@ mybluevan Downvote anlamıyorum (eğer yaptıysanız). Bu durumlar için bir aşağı oy hak edilmektedir stackoverflow.com/privileges/vote-down Cevabım alternatif bir çözüm göstermek için burada verilmiştir. Bildiğim en iyi şey değil, ancak captcha ve özelleştirilmiş modül düzenine sahip olmanızı sağlar. Diğer modüllerin kullanımını engelleyeceğini söyleyerek net değildim. Bu bloğa bir çocuk eklemek istiyorsanız, yine de sorun olmaya devam edeceğini söylemek istedim. Hala daha temiz bir yol araştırıyorum. Fabian'ın hiç çalışmıyor, sizi aynı durumda kendiniz test etmeye davet ediyorum
Sylvain Rayé

1

captcha.xml bloğu oluşturur, bu yüzden kullanılabilir olmalıdır. Ekledin mi

<depends>
    <Mage_Captcha />
</depends>

bir alt öğe eklemeye çalıştığınızda bloğunuzun zaten var olduğundan emin olmak için?


Çalışma. Modülümün üzerine yazılıyor veya Captcha modülüne göre önceliği var gibi görünüyor. Twitter'da bahsettiğiniz gibi, 'form.additional.info' bloğu henüz mevcut değil. Böylece bir modül düzeni oluşturur ve başka bir tane eklemenize izin vermez. İkinci düzen modülü 'form.additional.info' ifadesine başvurmaz ancak bir tane oluşturmaya çalışır. Bu yüzden çalışmıyor. Her ikisine de izin vermek için temiz bir yol bulmaya çalışıyorum. Bir çözüm, sayfa şablonunun login.phtml'in üzerine yazmak olabilir, ancak özel tema durumunda diğer geliştiriciler için ek iş sağlayacaktır
Sylvain Rayé

Fabian'ın tavsiyeye çalıştığı şey, kullanan ilk bloğu kullanmak <reference name="form.additional.info">ve ardından <depends>. Bu ikinci bloğu <reference name="checkout.onepage.login">onunla birlikte kullanırsanız, <depends>bahsettiğiniz gibi captcha bloğunun üzerine yazacaktır.
mybluevan

@ mybluevan teşekkür ederim Ben bir acemi değilim. Yazmış olsaydım, işe yaramaz, Fabian'ın önerdiği gibi test ettim. Önce Magento çekirdek modülleri yüklenir, sonra topluluk yereldir. Varsayılan düzen xml dosyaları için aynı sıra. Modülüm toplulukta, sonunda yüklendi. dependsBu durumda etiket gerekli değildir. Ve hepimiz ikinci bloğumun üzerine yazılan yöntem konusunda hemfikiriz. Neden işe yaramadığını buldum ama hala temiz çözümü bulamıyorum. Sorudaki düzenlememe bakın.
Sylvain Rayé
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.