Thêm một khối để đăng nhập thanh toán onepage


9

Tôi cố gắng thêm một tùy chọn đăng nhập bổ sung trong quá trình thanh toán. Hiện tại, bạn có tên người dùng / mật khẩu. Tôi muốn thêm hình ảnh nút để đăng nhập thông qua quy trình OAuth (trong trường hợp của tôi là Github).

Tôi đã tìm thấy một cách nhưng đó không phải là cách tốt nhất. Có trong tệp mẫu thanh toán / onepage / login.phtml, một cuộc gọi để lấy một khối con có tên form.additional.info.

Tôi đã cố gắng chèn khối riêng của mình vào đó theo cách này nhưng nó không hoạt động.

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

Tôi đã tìm thấy một cách khác giống như được thực hiện bởi mô-đun 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>

Trong trường hợp này, nó hoạt động NHƯNG hình ảnh xác thực sẽ không được hiển thị. Làm thế nào tôi có thể chèn một số khối vào form.additional.infokhối?

Cảm ơn bạn đã giúp đỡ

CHỈNH SỬA :

Tôi tìm thấy một số lý do tại sao nút không được hiển thị dưới các trường đăng nhập khi sử dụng form.additional.infophương thức tham chiếu . Nó được hiển thị trong giao diện thanh toán thay thế.

  1. Khối form.additional.infođược tạo bởi mô-đun captcha cho khối checkout.onepage.loginsau đó nó cũng được tạo cho khốicheckout.onepage.billing
  2. Trong khi tạo khối trong Mage_Core_Model_Layout :: _ GenerBlock (), nó tìm kiếm đối tượng khối cha của khối login_github_button. Thay vì tìm một trong số checkout.onepage.loginđó, nó tìm thấy một trong những cái mới nhất được tạo : checkout.onepage.billing. Khối được gắn vào cái cuối cùng này, thay vì đăng nhập một. Sau đó, tôi tìm thấy nút đăng nhập của mình trong chế độ xem địa chỉ thanh toán thay vì chế độ xem đăng nhập !!!
  3. Nếu tôi nhận xét vào tệp captcha.xml bố cục, phần về checkout.onepage.billinggiải pháp đầu tiên của tôi sẽ hoạt động.

Nó vẫn không ổn nhưng tôi bắt đầu tìm lý do.

Câu trả lời:


3

Chà, giải pháp duy nhất tôi thấy là tạo vào mô-đun bố cục khối, thêm mã của captcha và thêm làm tham chiếu mã tùy chỉnh của tôi. Trong trường hợp này, nó được chấp nhận.

Thật không may, vẫn sẽ khó để chèn một khối vào form.additional.infokhối.

Đây là giải pháp tôi đã thực hiện:

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

Như bạn nêu, điều này cũng sẽ ngăn bất kỳ mô-đun nào khác sử dụng khối này và cũng sẽ gây ra sự cố khi nâng cấp. Các <reference name="form.additional.info"><depends>giải pháp trên là nhiều sạch hơn và dễ bảo trì hơn.
mybluevan

@mybluevan Tôi không hiểu downvote (nếu bạn đã làm nó). Một downvote xứng đáng cho những trường hợp này stackoverflow.com/privileges/vote-down Câu trả lời của tôi được đặt ở đây để hiển thị một giải pháp thay thế. Nó không phải là tốt nhất tôi biết nhưng nó cho phép có captcha và bố trí mô-đun tùy chỉnh. Tôi đã không rõ ràng bằng cách nói rằng nó sẽ ngăn chặn việc sử dụng bởi các mô-đun khác. Tôi muốn có nghĩa là nếu bạn muốn thêm một đứa trẻ vào khối này, nó vẫn sẽ tiếp tục là một vấn đề. Tôi vẫn đang điều tra một cách sạch hơn. Chiếc Fabian hoàn toàn không hoạt động, tôi mời bạn tự mình kiểm tra nó trong cùng điều kiện
Sylvain Rayé

1

captcha.xml tạo ra khối, vì vậy nó có thể sử dụng được. Bạn đã thêm một

<depends>
    <Mage_Captcha />
</depends>

để chắc chắn, khối của bạn đã tồn tại, khi bạn cố gắng thêm một đứa trẻ vào nó?


Đừng làm việc. Mô-đun của tôi dường như ghi đè hoặc được ưu tiên hơn mô-đun Captcha. Như bạn đã đề cập trên twitter, khối 'form.additable.info' chưa tồn tại. Vì vậy, một bố trí mô-đun tạo ra nó và không cho phép thêm một cái khác. Mô-đun bố trí thứ hai không đề cập đến 'form.additable.info' nhưng hãy thử tạo một mô-đun. Đó là lý do nó không hoạt động. Tôi cố gắng tìm một cách sạch sẽ để cho phép cả hai. Một giải pháp có thể để login.phtml ghi đè của mẫu onepage nhưng nó sẽ cung cấp công việc bổ sung cho các nhà phát triển khác trong trường hợp chủ đề tùy chỉnh
Sylvain Raye

Những gì Fabian đang cố gắng khuyên là sử dụng khối đầu tiên sử dụng <reference name="form.additional.info">và sau đó thêm <depends>. Nếu bạn sử dụng khối thứ hai <reference name="checkout.onepage.login">với khối <depends>đó sẽ ghi đè lên khối captcha như bạn đã đề cập.
mybluevan

@mybluevan cảm ơn bạn Tôi không phải là người mới. Nếu tôi đã viết, nó không hoạt động, điều đó có nghĩa là tôi đã thử nghiệm như Fabian đề xuất. Đầu tiên các mô-đun lõi Magento được tải sau đó là cộng đồng sau đó là cục bộ. Cùng thứ tự cho các tập tin xml bố trí mặc định. Mô-đun của tôi là trong cộng đồng, cuối cùng nó được tải. Thẻ dependskhông cần thiết trong trường hợp này. Và tất cả chúng ta đều đồng ý về cách ghi đè lên khối thứ hai của tôi. Tôi đã tìm thấy lý do tại sao nó không hoạt động nhưng tôi vẫn chưa tìm thấy giải pháp sạch. Xem chỉnh sửa của tôi trong câu hỏi.
Sylvain Rayé
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.