Onepage चेकआउट लॉगिन करने के लिए एक ब्लॉक जोड़ना


9

मैं चेकआउट प्रक्रिया के दौरान एक अतिरिक्त लॉगिन विकल्प जोड़ने की कोशिश करता हूं। फिलहाल, आपके पास उपयोगकर्ता नाम / पासवर्ड तरीका है। मैं OAuth प्रक्रिया (मेरे मामले में Github) के माध्यम से लॉगिन करने के लिए एक बटन छवि जोड़ना चाहता हूं।

मुझे एक रास्ता मिला लेकिन यह सबसे अच्छा तरीका नहीं है। चेकआउट / onepage / login.phtml टेम्प्लेट फ़ाइल में है, एक ब्लॉक बच्चे का नाम पाने के लिए कॉल form.additional.info

मैंने इस तरह से इसमें अपना ब्लॉक डालने की कोशिश की, लेकिन यह काम नहीं किया।

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

मुझे एक अलग तरीका मिला जैसे यह कैप्चा मॉड्यूल द्वारा किया जाता है:

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

इस स्थिति में, यह काम करता है लेकिन कैप्चा प्रदर्शित नहीं किया जाएगा। मैं कई ब्लॉकों को form.additional.infoब्लॉक में कैसे सम्मिलित कर सकता हूं ?

आपकी सहायता के लिए धन्यवाद

संपादित करें :

मुझे संदर्भ form.additional.infoविधि का उपयोग करते समय लॉगिन फ़ील्ड के नीचे बटन प्रदर्शित नहीं होने के कुछ कारण मिले । इसके बजाय चेकआउट बिलिंग दृश्य में प्रदर्शित किया गया है।

  1. ब्लॉक form.additional.infoको कैप्चा मॉड्यूल द्वारा ब्लॉक के लिए बनाया जाता है checkout.onepage.loginफिर इसे ब्लॉक के लिए भी बनाया जाता हैcheckout.onepage.billing
  2. Mage_Core_Model_Layout :: _ generateBlock () में ब्लॉक जेनरेट करते समय यह ब्लॉक के मूल ब्लॉक ऑब्जेक्ट को खोजता है login_github_button। के बजाय एक खोजने के लिए checkout.onepage.login, यह नवीनतम बनाया में से एक पाता है checkout.onepage.billing:। ब्लॉक इस पिछले एक से जुड़ा हुआ है, लॉग इन वन के बजाय। फिर मैं लॉगिन पते के बजाय बिलिंग पते के दृश्य में अपना लॉगिन बटन ढूंढता हूं !!!
  3. अगर मैं लेआउट कैप्चा में टिप्पणी checkout.onepage.billingकरता हूं। तो मेरे पहले समाधान के काम के बारे में हिस्सा फ़ाइल को दर्ज करें ।

यह अभी भी ठीक नहीं है लेकिन मैं इसके कारणों को ढूंढना शुरू करता हूं।

जवाबों:


3

खैर, मुझे जो एकमात्र समाधान दिखाई दे रहा है वह लेआउट मॉड्यूल ब्लॉक में बनाना है, कैप्चा कोड जोड़ें और मेरे अनुकूलित कोड के संदर्भ के रूप में जोड़ें। इस मामले में यह स्वीकार किया जाता है।

दुर्भाग्य से, ब्लॉक में ब्लॉक डालना अभी भी मुश्किल होगा form.additional.info

यहाँ समाधान है जिसे मैंने लागू किया है:

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

जैसा कि आप कहते हैं, यह किसी भी अन्य मॉड्यूल को इस ब्लॉक के रूप में अच्छी तरह से उपयोग करने से रोकेगा, और उन्नयन के साथ समस्याओं का कारण भी होगा। <reference name="form.additional.info">और <depends>समाधान ऊपर अधिक स्वच्छ और अधिक maintainable है।
मायब्लूवन

@mybluevan मुझे समझ में नहीं आता है (यदि आपने ऐसा किया है)। एक downvote इन मामलों के लिए योग्य है stackoverflow.com/privileges/vote-down मेरा जवाब यहां वैकल्पिक समाधान दिखाने के लिए रखा गया है। यह सबसे अच्छा मैं नहीं जानता, लेकिन यह कैप्चा और अनुकूलित मॉड्यूल लेआउट की अनुमति देता है। मैं यह कहकर स्पष्ट नहीं था कि यह अन्य मॉड्यूल द्वारा उपयोग को रोक देगा। मैं चाहता था कि यदि आप इस ब्लॉक में एक बच्चे को जोड़ना चाहते हैं, तो भी यह एक समस्या है। मैं अभी भी एक क्लीनर तरीके की जांच कर रहा हूं। फैबियन एक काम नहीं करता है, मैं आपको उसी स्थिति में अपने आप से परीक्षण करने के लिए आमंत्रित करता हूं
सिल्वेन रेय

1

कैप्चा.एक्सएमएल ब्लॉक उत्पन्न करता है, इसलिए यह प्रयोग करने योग्य होना चाहिए। क्या आपने जोड़ा?

<depends>
    <Mage_Captcha />
</depends>

यह सुनिश्चित करने के लिए, कि आपका ब्लॉक पहले से मौजूद है, जब आप इसमें एक बच्चा जोड़ने की कोशिश करते हैं?


कम मत करो। मेरा मॉड्यूल अधिलेखित करने या कैप्चा मॉड्यूल पर प्राथमिकता देने लगता है। जैसा कि आपने ट्विटर में उल्लेख किया है, 'form.additional.info' ब्लॉक अभी तक मौजूद नहीं है। इसलिए एक मॉड्यूल लेआउट इसे बनाता है और एक दूसरे को जोड़ने की अनुमति नहीं देता है। दूसरा लेआउट मॉड्यूल 'form.additional.info' को संदर्भित नहीं करता है, लेकिन एक बनाने का प्रयास करें। यही कारण है कि यह काम नहीं कर रहा है। मैं दोनों को अनुमति देने के लिए एक साफ तरीका खोजने की कोशिश करता हूं। एक समाधान onepage टेम्प्लेट के login.phtml को अधिलेखित करने के लिए हो सकता है, लेकिन यह कस्टम थीम के मामले में अन्य डेवलपर्स के लिए अतिरिक्त काम प्रदान करेगा
सिल्वेन रेई

फैबियन जो सलाह देने की कोशिश कर रहा है वह उस पहले ब्लॉक का उपयोग करना है जो उपयोग करता है <reference name="form.additional.info">और फिर जोड़ें <depends>। यदि आप इसके <reference name="checkout.onepage.login">साथ उस दूसरे ब्लॉक का उपयोग करते हैं <depends>तो आपके द्वारा बताए गए कैप्चा ब्लॉक को ओवरराइट कर देगा।
मायब्लूवन

@mybluevan धन्यवाद, मैं नौसिखिया नहीं हूं। अगर मैंने लिखा है, तो यह काम नहीं करता है, इसका मतलब है कि मैंने फ़ेबियन के सुझाव के अनुसार परीक्षण किया। पहले Magento के कोर मॉड्यूल को लोड किया जाता है फिर समुदाय को फिर स्थानीय। डिफ़ॉल्ट लेआउट xml फ़ाइलों के लिए समान क्रम। मेरा मॉड्यूल समुदाय में है, यह पिछले पर लोड है। dependsइस मामले में टैग आवश्यक नहीं है। और हम सभी मेरे दूसरे ब्लॉक के अधिलेखित तरीके के बारे में सहमत हैं। मुझे लगता है कि यह काम क्यों नहीं करता है, लेकिन मुझे अभी भी साफ समाधान नहीं मिला। प्रश्न में मेरा संपादन देखें।
सिल्वेन रेई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.