เพิ่มบล็อกเพื่อเข้าสู่ระบบการชำระเงิน 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>

ฉันพบวิธีที่แตกต่างจากโมดูล 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>

ในกรณีนี้ใช้งานได้ แต่ captcha จะไม่ปรากฏขึ้น ฉันจะแทรกหลาย ๆ บล็อกลงในform.additional.infoบล็อกได้อย่างไร

ขอบคุณสำหรับความช่วยเหลือของคุณ

แก้ไข :

ฉันพบสาเหตุบางประการที่ปุ่มไม่ปรากฏใต้ช่องล็อกอินเมื่อใช้form.additional.infoวิธีการอ้างอิง มันจะแสดงในมุมมองการเรียกเก็บเงินเช็คเอาต์แทน

  1. บล็อกform.additional.infoถูกสร้างขึ้นโดยโมดูล captcha สำหรับบล็อกcheckout.onepage.loginจากนั้นจะถูกสร้างขึ้นสำหรับบล็อกcheckout.onepage.billing
  2. ขณะที่การสร้างบล็อกใน Mage_Core_Model_Layout :: _ generateBlock () login_github_buttonจะค้นหาวัตถุปกครองบล็อกของบล็อก แทนการหาหนึ่งในก็พบว่าหนึ่งในผู้สร้างล่าสุด:checkout.onepage.login checkout.onepage.billingบล็อกถูกแนบเข้ากับบล็อกล่าสุดแทนที่จะเป็นบล็อกเดียว จากนั้นฉันพบปุ่มลงชื่อเข้าใช้ในมุมมองที่อยู่การเรียกเก็บเงินแทนมุมมองการเข้าสู่ระบบ !!!
  3. หากฉันใส่ความคิดเห็นลงในไฟล์ captcha.xml เลย์เอาต์ส่วนที่เกี่ยวกับ checkout.onepage.billingโซลูชันแรกของฉันใช้ได้

มันยังไม่โอเค แต่ฉันเริ่มหาเหตุผล

คำตอบ:


3

วิธีแก้ปัญหาเดียวที่ฉันเห็นคือการสร้างบล็อคโมดูลเลย์เอาต์เพิ่มรหัสของ captcha และเพิ่มเป็นการอ้างอิงรหัสที่กำหนดเองของฉัน ในกรณีนี้เป็นที่ยอมรับ

น่าเสียดายที่ยังคงเป็นการยากที่จะแทรกบล็อกลงใน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>วิธีการแก้ปัญหาดังกล่าวข้างต้นมากสะอาดและการบำรุงรักษามากขึ้น
mybluevan

@mybluevan ฉันไม่เข้าใจ downvote (ถ้าคุณทำมัน) ควรดาวน์โหลด downvote สำหรับกรณีเหล่านี้stackoverflow.com/privileges/vote-downคำตอบของฉันอยู่ที่นี่เพื่อแสดงวิธีแก้ปัญหาทางเลือก มันไม่ใช่สิ่งที่ดีที่สุดที่ฉันรู้ แต่มันช่วยให้มี captcha และเค้าโครงโมดูลที่กำหนดเอง ฉันไม่ชัดเจนโดยบอกว่ามันจะป้องกันการใช้งานโดยโมดูลอื่น ๆ ฉันต้องการหมายความว่าหากคุณต้องการเพิ่มเด็กในบล็อกนี้ก็จะยังคงเป็นปัญหา ฉันยังคงตรวจสอบวิธีที่สะอาดกว่านี้ หนึ่งของเฟเบียนไม่ทำงานเลยฉันขอเชิญคุณทดสอบด้วยตัวเองในสภาพเดียวกัน
Sylvain Rayé

1

captcha.xml สร้างบล็อกดังนั้นจึงควรใช้งานได้ คุณเพิ่ม

<depends>
    <Mage_Captcha />
</depends>

เพื่อให้แน่ใจว่าบล็อกของคุณมีอยู่แล้วเมื่อคุณพยายามเพิ่มลูกในบล็อก


ไม่ทำงาน. โมดูลของฉันดูเหมือนจะเขียนทับหรือมีความสำคัญมากกว่าโมดูลแคปช่า ตามที่คุณพูดถึงใน twitter บล็อก 'form.additional.info' ยังไม่มี ดังนั้นโครงร่างโมดูลจึงสร้างขึ้นและไม่อนุญาตให้เพิ่มอีกอันหนึ่ง โมดูลเลย์เอาต์ที่สองไม่ได้อ้างอิงถึง 'form.additional.info' แต่พยายามสร้างขึ้นมาหนึ่งโมดูล นั่นคือเหตุผลที่มันไม่ทำงาน ฉันพยายามหาวิธีที่สะอาดเพื่อให้ทั้งคู่ วิธีการแก้ปัญหาอาจจะเขียนทับ login.phtml ของแม่แบบ onepage แต่จะให้การทำงานเพิ่มเติมสำหรับนักพัฒนาอื่น ๆ ในกรณีของชุดรูปแบบที่กำหนดเอง
Sylvain Rayé

อะไร Fabian พยายามที่จะให้คำแนะนำคือการใช้ที่บล็อกแรกที่ใช้แล้วเพิ่ม<reference name="form.additional.info"> <depends>หากคุณใช้บล็อกที่สอง<reference name="checkout.onepage.login">ด้วยบล็อก<depends>นั้นจะเขียนทับบล็อกแคปต์ชาตามที่คุณกล่าวถึง
mybluevan

@mybluevan ขอบคุณฉันไม่ใช่มือใหม่ ถ้าฉันเขียนมันใช้งานไม่ได้หมายความว่าฉันทดสอบตามคำแนะนำของเฟเบียน ขั้นแรกให้โหลดโมดูลหลักของวีโอไอพีจากนั้นชุมชนจากนั้นจึงทำการโลคัล คำสั่งเดียวกันสำหรับไฟล์ xml โครงร่างเริ่มต้น โมดูลของฉันอยู่ในชุมชนซึ่งจะโหลดในที่สุด แท็กdependsไม่จำเป็นในกรณีนี้ และเราก็เห็นด้วยเกี่ยวกับวิธีการเขียนทับบล็อกที่สองของฉัน ฉันพบเหตุผลว่าทำไมมันใช้งานไม่ได้ แต่ฉันยังหาคำตอบไม่ได้ ดูการแก้ไขของฉันในคำถาม
Sylvain Rayé
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.