ম্যাজেন্টো 2: কীভাবে চেকআউট পৃষ্ঠায় অতিরিক্ত ব্লক যুক্ত করবেন?


11

আমি উপরের ফাইলটিকে ওভাররাইড করতে চাই এবং এতে আমার কাস্টম ব্লকটি প্রদর্শন করতে চাই li।

Magento \ বিক্রেতা \ Magento \ মডিউল-চেকআউট \ দৃশ্য \ ফ্রন্টএন্ড \ ওয়েব \ টেমপ্লেট \ shipping.html

<li id="shipping" class="checkout-shipping-address" data-bind="fadeVisible: visible()">
    <div class="step-title" data-bind="i18n: 'Shipping Address'" data-role="title"></div>
</li>   

<!-- ko if:myBlock --> // Mine need to call block created from Admin
<li>
    <p data-bind="html: myBlock"></p>
</li> 
<!-- /ko -->

<!--Shipping method template-->
<li id="opc-shipping_method"
    class="checkout-shipping-method"
    data-bind="fadeVisible: visible(), blockLoader: isLoading"
    role="presentation">
    <div class="checkout-shipping-method">
        <div class="step-title" data-bind="i18n: 'Shipping Methods'" data-role="title"></div>
    </div>
</li>

যদি অ্যাডমিনে ব্লক সক্ষম থাকে তবে এটি liব্লক ডেটা সহ একটি কাস্টম দেখায়, অন্যথায় এটি কিছুই দেখায় না।

.htmlব্লকটি সক্ষম রয়েছে কি না আমরা সরাসরি ফাইলটিতে পরীক্ষা করতে পারি ?



হাই @ অ্যালেক্সকনস্ট্যান্টাইনসুকু শিপিংয়ের উপরে উপস্থাপন করতে চান
— অঙ্কিত শাহ

উত্তর:


20

এখানে আমি চেকআউটটির শিপিং পদ্ধতির উপরে কাস্টম ব্লক দেখানোর উদাহরণ দিই

1) di.xML এ তৈরি করুন

অ্যাপ্লিকেশন / কোড / বিক্রেতা / মডিউল, / etc / ফ্রন্টএন্ড / di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Checkout\Model\CompositeConfigProvider">
        <arguments>
            <argument name="configProviders" xsi:type="array">
                <item name="cms_block_config_provider" xsi:type="object">Vendor\Module\Model\ConfigProvider</item>
            </argument>
        </arguments>
    </type>
</config>

2) আপনার উইন্ডোজ কোডে চেকআউটকনফিগের স্থিতিশীল ব্লকটি সংজ্ঞায়িত করতে কনফিগারপ্রভাইডার.এফপি তৈরি করুন

অ্যাপ্লিকেশন / কোড / বিক্রেতা / মডিউল / মডেল / ConfigProvider.php

<?php

namespace Vendor\Module\Model;

use Magento\Checkout\Model\ConfigProviderInterface;
use Magento\Framework\View\LayoutInterface;

class ConfigProvider implements ConfigProviderInterface
{
    /** @var LayoutInterface  */
    protected $_layout;

    public function __construct(LayoutInterface $layout)
    {
        $this->_layout = $layout;
    }

    public function getConfig()
    {
        $myBlockId = "my_static_block"; // CMS Block Identifier
        //$myBlockId = 20; // CMS Block ID

        return [
            'my_block_content' => $this->_layout->createBlock('Magento\Cms\Block\Block')->setBlockId($myBlockId)->toHtml()
        ];
    }
}

3) আপনার মডিউলে Checkout_index_index.xML ওভাররাইড করুন এবং আপনার নিজস্ব শিপিং উপাদানটি সংজ্ঞায়িত করুন component

অ্যাপ্লিকেশন / কোড / বিক্রেতা / মডিউল / দৃশ্য / ফ্রন্টএন্ড / লেআউট / checkout_index_index.xml

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="checkout.root">
                <arguments>
                    <argument name="jsLayout" xsi:type="array">
                        <item name="components" xsi:type="array">
                            <item name="checkout" xsi:type="array">
                                <item name="children" xsi:type="array">
                                    <item name="steps" xsi:type="array">
                                        <item name="children" xsi:type="array">
                                            <item name="shipping-step" xsi:type="array">
                                                <item name="children" xsi:type="array">
                                                    <item name="shippingAddress" xsi:type="array">
                                                        <item name="component" xsi:type="string">Vendor_Module/js/view/shipping</item>
                                                    </item>
                                                </item>
                                            </item>
                                        </item>
                                    </item>
                                </item>
                            </item>
                        </item>
                    </argument>
                </arguments>
        </referenceBlock>
    </body>
</page>

4) এখন শিপিং.জেএস তৈরি করুন এবং আপনার নিজস্ব শিপিং টেম্পলেট ফাইলটি সংজ্ঞায়িত করুন

অ্যাপ্লিকেশন / কোড / বিক্রেতা / মডিউল / দৃশ্য / ফ্রন্টএন্ড / ওয়েব / JS / দৃশ্য / shipping.js

define(
    [
        'jquery',
        'ko',
        'Magento_Checkout/js/view/shipping'
    ],
    function(
        $,
        ko,
        Component
    ) {
        'use strict';
        return Component.extend({
            defaults: {
                template: 'Vendor_Module/shipping'
            },

            initialize: function () {
                var self = this;
                this._super();
            }

        });
    }
);

5) কপি শিপিং। Html থেকে

বিক্রেতা / Magento / মডিউল-চেকআউট / দৃশ্য / ফ্রন্টএন্ড / ওয়েব / টেমপ্লেট / shipping.html

করতে তোমার মডিউল

অ্যাপ্লিকেশন / কোড / বিক্রেতা / মডিউল / দৃশ্য / ফ্রন্টএন্ড / ওয়েব / টেমপ্লেট / shipping.html

এখনই যোগ window.checkoutConfig.my_block_content করার shipping.html যেখানে আপনি আপনার স্ট্যাটিক ব্লক দেখাতে চান

<div data-bind="html: window.checkoutConfig.my_block_content"></div>

এখানে আমি আমার স্থিতিশীল ব্লকে নতুন পণ্য উইজেট যুক্ত করি

আউটপুট:

এখানে চিত্র বর্ণনা লিখুন


আমি একই কাজ করেছি কিন্তু কাজ করছি না। আমি এই ট্যাবে স্থিতিশীল ব্লক সামগ্রী দেখতে পাচ্ছি না।
— সরফরাজ সিপাই

@ প্রিন্স, "শিপিং পদ্ধতি" এর নীচে ব্লক প্রদর্শন করতে আমার কী করা উচিত?
— বিনয়া মহেশ্বরী

1
@ বিনায়া মহেশ্বরী shipping.htmlশিপিং পদ্ধতির পরে ব্লকটি দেখানোর জন্য আপনার ব্লক ডিভিকে শেষ রাখবেন
— প্রিন্স প্যাটেল

1
@ বিনায়া মহেশ্বরী এটি ব্রাউজার ক্যাশে হতে হবে। নকআউট জেএস
— প্রিন্স প্যাটেল

1
হ্যাঁ! এটি ব্রাউজারের ক্যাশে ছিল, আপনার সহায়তার জন্য ধন্যবাদ।
— বিনয়া মহেশ্বরী

4

আমি সাইডবারের নীচে চেকআউট পৃষ্ঠায় একটি সিএমএস ব্লক প্রদর্শন করতে এটি করেছি। 1. টেমপ্লেটগুলিতে / onepage.phtml আমি এই জাতীয় সিম ব্লক বিষয়বস্তু ধরে রাখতে একটি জেএস ভেরিয়েবল তৈরি করেছি:

<?php $myCmsBlock = $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('my_cms_block')->toHtml() ?>

<script type="text/javascript">
    var my_cms_block = <?php echo json_encode($myCmsBlock)?>;
</script>

২. নকআউট টেমপ্লেট ফাইলে (আমার ক্ষেত্রে এটি ওয়েব / জেএস / টেম্পলেট / সাইডবার এইচটিএমএল ছিল) উপরের জেএস ভেরিয়েবলের থেকে সিমস ব্লক সামগ্রীটি প্রদর্শিত হয়েছিল:

<div class="opc-help-cms" data-bind="html:my_cms_block">
    </div>

আশা করি এটি কাউকে সাহায্য করবে! ধন্যবাদ!


সহজ সমাধান। কাস্টম onepage.phtml প্রস্তুত করার জন্য কেবল প্রয়োজন। আমি এই ম্যাজেন্টো.স্ট্যাকেক্সেঞ্জার.কম
— গেডিমিনাস

আপনি কি জানেন যে আমি যদি অর্থ প্রদানের পদক্ষেপে এটি যুক্ত করতে চাই তবে আমার কী করা উচিত? আপনি উপরে উল্লিখিত যা বিক্রেতার / ম্যাজেন্টো / মডিউল-চেকআউট / ভিউ / ফ্রন্টএন্ড / ওয়েব / টেমপ্লেট / অনপেজ এইচটিএমএল এবং পেমেন্ট এইচটিএমএলে যোগ করার চেষ্টা করেছি তবে কোনও প্রভাব ফেলেনি। magento.stackexchange.com/Qestions/296500/…
— ক্রিস ওয়েন

পেমেন্ট এইচটিএমএল onepage.phtml থেকে জেএস ভেরিয়েবল অ্যাক্সেস করতে সক্ষম হওয়া উচিত। চেকআউট পৃষ্ঠায় কনসোলে এটি মুদ্রণের মাধ্যমে এটি যথাযথভাবে রেন্ডার হয়েছে তা নিশ্চিত করুন
— সিজু জোসেফ

-1

পিএইচটিএমএল ফাইতে স্ট্যাটিক ব্লক যুক্ত করুন:

<?php echo $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('block_identifier')->toHtml();?>

এক্সএমএল ব্যবহার করে ব্লক যুক্ত করুন:

<referenceContainer name="content">
    <block class="Magento\Cms\Block\Block" name="block_identifier">
       <arguments>
         <argument name="block_id" xsi:type="string">block_identifier</argument>
       </arguments>
    </block>
</referenceContainer>

সেমি পৃষ্ঠাতে ব্লক যুক্ত করুন:

{{block class="Magento\Cms\Block\Block" block_id="block_identifier"}}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.