ম্যাজেন্টো 2 এ নেভিগেশন লিঙ্কগুলিতে একটি অ-বিভাগের লিঙ্ক যুক্ত করা হচ্ছে


29

আমি নিশ্চিত না যে আমি এখানে কী ভুল করছি। বিভাগটিতে থাকা ব্লকটি নেভিগেশন.সেকশন হিসাবে উল্লেখ করা হয়। আমি ধারনা করার জন্য নিম্নলিখিত যুক্তিগুলি নির্দেশ করে ভেবেছিলাম যে আমি এটির অধীনে একটি নতুন লিঙ্ক তৈরি করতে সক্ষম হব। কোন সাহায্য প্রশংসা করা হয়।

<referenceContainer name="navigation.sections">
            <block class="Magento\Framework\View\Element\Html\Links" name="mylink">
                    <arguments>
                        <argument name="label" xsi:type="string">Mylink</argument>
                        <argument name="path" xsi:type="string">mypath</argument>
                        <argument name="css_class" xsi:type="string">mycss</argument>
                    </arguments>
            </block>
</referenceContainer>

আমিও তাই ভাবছি .. আপনি কি এর সমাধান খুঁজে পেয়েছেন?

তালিকাভুক্ত উভয় সমাধানই আমার পক্ষে কাজ করেছে।
themanWoknowstheman

আপনি কোন ম্যাজেন্টো সংস্করণে কাজ করছেন?
রাজ্জান জামফির

উত্তর:


34

[সম্পাদনা]
স্পষ্টতই, এম 2 এর সর্বশেষ সংস্করণগুলিতে এটি আর কাজ করে না।
এটি নির্দেশ করার জন্য ম্যাক্সকে ধন্যবাদ।
পরবর্তী সংস্করণে আপনাকে Magento\Theme\Block\Html\Topmenuপর্যবেক্ষকের পরিবর্তে একটি প্লাগইন যুক্ত করতে হবে ।
এটিতে যুক্ত করুনetc/frontend/di.xml

<type name="Magento\Theme\Block\Html\Topmenu">
    <plugin name="[module]-topmenu" type="[Namespace]\[Module]\Plugin\Block\Topmenu" />
</type>

এবং প্লাগইন ক্লাস ফাইল তৈরি করুন [Namespace]/[Module]/Plugin/Block/Topmenu.php

<?php 

namespace [Namespace]\[Module]\Plugin\Block;

use Magento\Framework\Data\Tree\NodeFactory;

class Topmenu
{
    /**
     * @var NodeFactory
     */
    protected $nodeFactory;

    public function __construct(
        NodeFactory $nodeFactory
    ) {
        $this->nodeFactory = $nodeFactory;
    }

    public function beforeGetHtml(
        \Magento\Theme\Block\Html\Topmenu $subject,
        $outermostClass = '',
        $childrenWrapClass = '',
        $limit = 0
    ) {
        $node = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray(),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $subject->getMenu()->addChild($node);
    }

    protected function getNodeAsArray()
    {
        return [
            'name' => __('Label goes here'),
            'id' => 'some-unique-id-here',
            'url' => 'http://www.example.com/',
            'has_active' => false,
            'is_active' => false // (expression to determine if menu item is selected or not)
        ];
    }
}

[/ সম্পাদনা]
আসল উত্তর:
ইভেন্টটি ব্যবহার করে আপনি শীর্ষ মেনুতে উপাদান যুক্ত করতে পারেন page_block_html_topmenu_gethtml_before

সুতরাং আপনাকে এই ফাইলগুলি দিয়ে একটি মডিউল তৈরি করতে হবে (সমস্ত ফাইল থাকা উচিত app/code/[Namespace]/[Module]):

etc/module.xml - মডিউল ঘোষণা ফাইল

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="[Namespace]_[Module]" setup_version="2.0.0">
        <sequence>
            <module name="Magento_Theme"/>
        </sequence>
    </module>
</config>

registration.php - নিবন্ধকরণ ফাইল

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    '[Namespace]_[Module]',
    __DIR__
);

etc/frontend/events.xml - ঘটনা ঘোষণার ফাইল

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="page_block_html_topmenu_gethtml_before">
        <observer name="[namespace]_[module]_observer" instance="[Namespace]\[Module]\Observer\Topmenu" />
    </event>
</config>

Observer/Topmenu.php - প্রকৃত পর্যবেক্ষক

<?php
namespace [Namespace]\[Module]\Observer;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Data\Tree\Node;
use Magento\Framework\Event\ObserverInterface;
class Topmenu implements ObserverInterface
{
    public function __construct(
        ...//add dependencies here if needed
    )
    {
    ...
    }
    /**
     * @param EventObserver $observer
     * @return $this
     */
    public function execute(EventObserver $observer)
    {
        /** @var \Magento\Framework\Data\Tree\Node $menu */
        $menu = $observer->getMenu();
        $tree = $menu->getTree();
        $data = [
            'name'      => __('Menu item label here'),
            'id'        => 'some-unique-id-here',
            'url'       => 'url goes here',
            'is_active' => (expression to determine if menu item is selected or not)
        ];
        $node = new Node($data, 'id', $tree, $menu);
        $menu->addChild($node);
        return $this;
    }
}

php bin/magento setup:upgradeমডিউলটি ইনস্টল করতে এখন ক্লায়মে চালান এবং আপনি যেতে ভাল।


টপম্যানু.এফপি কোডের কোনও অংশ অনুপস্থিত?
themanWoknowstheman

1
@Solide। লিঙ্কগুলির ক্রম পর্যবেক্ষকগণ কার্যকর করা আদেশের উপর নির্ভর করে। যদি আপনার হোমপৃষ্ঠের পর্যবেক্ষকটি ক্যাটালগের আগে কার্যকর করা হয় তবে হোমপেজে লিঙ্কটি প্রথমে যুক্ত করা উচিত। যদি তা না হয় তবে আপনি লিঙ্কগুলির ক্রম পরিবর্তন করার জন্য এই পদ্ধতির দিকে একবার নজর দিতে পারেন: magento.stackexchange.com/q/7329/146 । পদ্ধতিটি Magento1 এর জন্য, তবে আপনি এটি এম 2 কোডে অনুবাদ করতে পারেন।
মারিয়াস

1
@ মারিয়াস: কী হওয়া উচিত 'is_active'। দয়া করে কিছু উদাহরণ যুক্ত করুন। আমি এই পৃষ্ঠায় সক্রিয় লিঙ্ক চাই।
জেড ব্ল্যাকবার্ড

1
একটি ইভেন্টে একটি পর্যবেক্ষক ব্যবহৃত হয়। একটি প্লাগইন যে কোনও পাবলিক পদ্ধতিতে কাজ করতে পারে। শীর্ষস্থানীয় মেনুতে বিভাগগুলি যুক্ত করতে মূলটি ব্যবহার করা হয়েছে বলে প্লাগইন পদ্ধতির ব্যবহার করার পরামর্শ দেব।
মারিয়াস

1
দুঃখিত, আমি একটি বোকা মত মনে হয়, কিন্তু আপনি কিভাবে একাধিক মেনু যুক্ত করতে পারেন? আমি যদি $menu->addChild($node)একাধিকবার ব্যবহার করি তবে শেষটি অন্যটিকে ওভাররাইড করে। এটি কেবলমাত্র একটি মেনু দেখায় (শেষটি)।
পিনিকিও

17

কেন সকলেই সর্বদা একটি মডিউল লিখতে চায়। আমি layout.xmlএটি আমার মধ্যে করেছি এবং এটি একটি কবজির মতো কাজ করেছে:

    <referenceBlock name="catalog.topnav">
        <block class="Magento\Framework\View\Element\Html\Link" name="contact-link">
            <arguments>
                <argument name="label" xsi:type="string" translate="true">Contact us</argument>
                <argument name="path" xsi:type="string" translate="true">contact</argument>
            </arguments>
        </block>
    </referenceBlock>

নতুন ট্যাবে সেই লিঙ্কটি কীভাবে খুলবেন?
জাফর পিনজার

ভাল প্রশ্ন. কোডটিতে কিছু পাওয়া গেছে। সম্ভবত এটি ব্যবহার করে দেখুন: <তর্ক নাম = "গুণাবলী" xsi: টাইপ = "অ্যারে"> <আইটেম নাম = "লক্ষ্য" এক্সসি: টাইপ = "স্ট্রিং"> _ ফাঁকা </item> </argument> পরীক্ষিত নয়, তবে রয়েছে বৈশিষ্ট্য বিকল্প উপলব্ধ।
জনি লম্বনেক

মডিউল তৈরি করা এটিকে আরও গতিশীল করে তোলে। আমি যাদের সাথে কাজ করি তারা প্রচুর গ্রাহক নিজের মতো জিনিসগুলি পৃষ্ঠাগুলি তৈরি করতে চান এবং এটিকে একটি নির্দিষ্ট ক্রমে টপম্যানুতে যুক্ত করতে চান।
রায় জিউরিসন

6

মডিউল তৈরির বাইরে আর একটি সমাধান হ'ল টপম্যানু.এফটিএমএল ওভাররাইট করা। আমি নোট করব যে @ মারিয়াসের সরবরাহিত সমাধানটি এটি করার সেরা উপায় যদি আপনি নিজের লিঙ্কগুলি নেভিগেশন ক্লাসের উত্তরাধিকার সূত্রে ইচ্ছুক হন। এটি ঠিক সঠিক সিএসএস ছাড়াই ম্যাজেন্টোর মোবাইল মেনুতে প্রদর্শিত হবে। আপনি সেই অনুসারে স্টাইল করতে css_class আর্গুমেন্টটি ব্যবহার করতে পারেন।

YourTheme / Magento_Theme / টেমপ্লেট / HTML / topmenu.phtml

<?php $columnsLimit = $block->getColumnsLimit() ?: 0; ?>
<?php $_menu = $block->getHtml('level-top', 'submenu', $columnsLimit) ?>

<nav class="navigation" role="navigation">
    <ul data-mage-init='{"menu":{"responsive":true, "expanded":true, "position":{"my":"left top","at":"left bottom"}}}'>
        <?php /* @escapeNotVerified */ echo $_menu; ?>
        <?php echo $block->getChildHtml() ?>
    </ul>
</nav>

YourTheme / Magento_Theme / লেআউট / default.xml

<referenceContainer name="catalog.topnav">
               <block class="Magento\Framework\View\Element\Html\Link\Current" name="your.link">
                    <arguments>
                        <argument name="label" xsi:type="string">Link-name</argument>
                        <argument name="path" xsi:type="string">Link-url</argument>
                    </arguments>
              </block>
</referenceContainer>

সিএসএস শ্রেণির যুক্তির উদাহরণ কোথায় পাব?
ক্যামডিক্সন


আপনি কীভাবে টেমপ্লেট ফাইলটিকে এক্সএমএল ফাইলের সাথে সংযুক্ত করবেন ..
সর্বवेश তিওয়ারি

6

এই উত্তরটি মারিয়াস দ্বারা সরবরাহ করা হয়েছে just আমি কেবল বিভাগের ট্যাব মেনুতে শিশু বিভাগ যুক্ত করতে এটি সংশোধন করেছি আপনি মারিয়াসের উত্তর উল্লেখ করতে পারেন। আমি কেবলমাত্র শীর্ষ বিভাগে শিশু বিভাগে যুক্ত করতে শীর্ষস্থানীয় টপম্যানু.এফপি ফাইলটি সংশোধন করেছি

<?php 

namespace Ktpl\Navigationlink\Plugin\Block;

use Magento\Framework\UrlInterface;
use Magento\Framework\Data\Tree\NodeFactory;
use Magento\Store\Model\StoreManagerInterface;

class Topmenu
{
    /**
     * @var NodeFactory
     */
    protected $nodeFactory;
    protected $urlBuilder;
    protected $_storeManager;

    public function __construct(
        UrlInterface $urlBuilder,
        NodeFactory $nodeFactory,
        StoreManagerInterface $storeManager
    ) {
        $this->urlBuilder = $urlBuilder;
        $this->nodeFactory = $nodeFactory;
        $this->_storeManager = $storeManager;
    }

    public function beforeGetHtml(
        \Magento\Theme\Block\Html\Topmenu $subject,
        $outermostClass = '',
        $childrenWrapClass = '',
        $limit = 0
    ) {
        // condition for store
        if($this->getStoreCode() == 'store_id'):
        $productNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Products','products'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $stockistsNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Stockists','stockists'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $ourstoryNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Our Story','ourstory'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $contactsNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Customer Care','contacts'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        /******* contacts's child *******/
        $warrantyRegistrationNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Warranty Registration','warranty-registration'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $faqNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Frequently Asked Questions','faq'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $ourProductGuaranteeNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Our Product Guarantee','our-product-guarantee'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $warrantiesNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Warranties, Repairs & Spare Parts','warranties-repairs-spare-parts'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $termsNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Terms & Conditions','terms-and-conditions'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $privacyPolicyNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Our Privacy Policy','privacy-policy'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );
        $bookNode = $this->nodeFactory->create(
            [
                'data' => $this->getNodeAsArray('Book A Viewing','book-a-viewing'),
                'idField' => 'id',
                'tree' => $subject->getMenu()->getTree()
            ]
        );

        $contactsNode->addChild($warrantyRegistrationNode);
        $contactsNode->addChild($faqNode);
        $contactsNode->addChild($ourProductGuaranteeNode);
        $contactsNode->addChild($warrantiesNode);
        $contactsNode->addChild($termsNode);
        $contactsNode->addChild($privacyPolicyNode);
        $contactsNode->addChild($bookNode);
        /******* end contacts's child *******/

        $subject->getMenu()->addChild($productNode);
        $subject->getMenu()->addChild($stockistsNode);
        $subject->getMenu()->addChild($ourstoryNode);
        $subject->getMenu()->addChild($contactsNode);
        endif;
    }

    protected function getNodeAsArray($name,$id)
    {
        return [
            'name' => __($name),
            'id' => $id,
            'url' => $this->urlBuilder->getUrl($id),
            'has_active' => false,
            'is_active' => false // (expression to determine if menu item is selected or not)
        ];
    }

    public function getStoreCode()
    {
        return $this->_storeManager->getStore()->getCode();
    }
}

আপনার পিতামাতার বিভাগ এবং শিশু বিভাগের জন্য নোড তৈরি করতে হবে এবং তার পরে আপনি অ্যাডচিল্ড পদ্ধতিটি ব্যবহার করে পিতা মাতৃ বিভাগে শিশু বিভাগটি নির্ধারণ করতে পারেন এটি একটি উদাহরণ

$contactsNode->addChild($warrantyRegistrationNode);

ধন্যবাদ! বুঝতে পারিনি সাবমেনু যুক্ত করা এত সহজ!
জুলিয়ানো ভার্গাস

এবং স্যার যদি আমি আমার কাস্টম দেখাতে চান DIV আছে কাস্টম লিঙ্ক আমি যোগ উপর Topmenu। আমি যখন লিংকে মাউস দিই তারপরে এটি আমার কাস্টম ডিভ
আসাদ খান

1

মারিয়াসের উপরের উত্তরটি ব্যবহার করে আমি সাবমেনু আইটেম যুক্ত করেছি। এইচটিএমএল তৈরি হওয়ার আগে আপনি গাছটি সম্পাদনা করতে পারেন এবং তারপরে এইচটিএমএল তৈরি হওয়ার পরে সরাসরি কীভাবে সম্পাদনা করবেন তাও আমি একটি উপায় দেখায়। এটি ম্যাজেন্টো ২.১ এ কাজ করে। এটি দিয়ে শীর্ষস্থানীয় আপডেট করুন:

<?php
namespace Seatup\Navigation\Observer;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Data\Tree\Node;
use Magento\Framework\Event\ObserverInterface;
class Topmenu implements ObserverInterface
{
    protected $_cmsBlock;

    public function __construct(
        \Magento\Cms\Block\Block $cmsBlock
    )
    {
        $this->_cmsBlock = $cmsBlock;
    }
    /**
     * @param EventObserver $observer
     * @return $this
     */
    public function execute(EventObserver $observer)
    {
        /** @var \Magento\Framework\Data\Tree\Node $menu */
        $eventName = $observer->getEvent()->getName();
        if($eventName == 'page_block_html_topmenu_gethtml_before'){
            // With the event name you can edit the tree here
            $menu = $observer->getMenu();
            $tree = $menu->getTree();
            $children = $menu->getChildren();

            foreach ($children as $child) {
                if($child->getChildren()->count() > 0){ //Only add menu items if it already has a dropdown (this could be removed)
                    $childTree = $child->getTree();
                    $data1 = [
                        'name'      => __('Menu item label here'),
                        'id'        => 'some-unique-id-here',
                        'url'       => 'url goes here',
                        'is_active' => FALSE
                    ];
                    $node1 = new Node($data1, 'id', $childTree, $child);
                    $childTree->addNode($node1, $child);
                }
            }
            return $this;
        } else if($eventName == 'page_block_html_topmenu_gethtml_after'){
            // With the event name you can edit the HTML output here
            $transport = $observer['transportObject'];

            //get the HTML
            $old_html = $transport->getHtml();

            //render the block. I am using a CMS block
            $new_output = $this->_cmsBlock->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('cms_block_identifier')->toHtml();
            //the transport now contains html for the group/class block
            //which doesn't matter, because we already extracted the HTML into a 
            //string primitive variable
            $new_html = str_replace('to find', $new_output , $old_html);    
            $transport->setHtml($new_html);
        }
    }
}

1

<header>
সিএমএস পৃষ্ঠা, গ্যালারীটিতে একটি লিঙ্ক যুক্ত করার মধ্যে শীর্ষস্থানীয় নেভিগেশনে একটি লিঙ্ক যুক্ত করতে চান

এখানে default / xML সম্পাদনা করুন:

app/design/frontend/Vendor/theme/Magento_Theme/layout/default.xml

নিম্নলিখিত কোড যুক্ত করুন:

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="catalog.topnav">
           <block class="Magento\Framework\View\Element\Html\Link\Current" name="gallery.link">
                <arguments>
                    <argument name="label" xsi:type="string">Gallery</argument>
                    <argument name="path" xsi:type="string">gallery</argument>
                </arguments>
          </block> 
       </referenceContainer>
    </body>
</page>

এটি নীচের সেটিংস সহ সিএমএস পৃষ্ঠা, গ্যালারীটিতে একটি লিঙ্ক যুক্ত করেছে:

Title = Gallery
Url Key = gallery
Link = https://example.com/gallery/

নতুন লিঙ্কটি সঠিকভাবে প্রান্তিককরণ নিশ্চিত করতে নিম্নলিখিত স্টাইলিং যুক্ত করুন:

.navigation .nav.item {
margin: 0 10px 0 0;
display: inline-block;
position: relative;
}

কোডের ফলাফল (উদাহরণস্বরূপ পণ্যগুলি বিভাগ হিসাবে সেটআপ করা হয়)



0

যারা is_activeঅভিব্যক্তি যোগ করতে চান, তাদের জন্য বিশেষত @ZZZKX ব্ল্যাকবার্ড যারা উপরে জিজ্ঞাসা করেছেন।

আমি পরিচিতির লিঙ্কটি ব্যবহার করেছি এবং এটির সাথে আমি সংযুক্ত হওয়ার সাথে সাথে এটি কাস্টম মডিউলটির সাথেও কাজ করবে।

'is_active' => ($ এটি-> অনুরোধ-> getFrontName () == 'যোগাযোগ'? সত্য: মিথ্যা)

// (মেনু আইটেমটি নির্বাচন করা হয়েছে কিনা তা নির্ধারণের জন্য অভিব্যক্তি)

আশা করি এটি যে কাউকে সাহায্য করবে।


0

এটি একটি ভাল বিকল্প:

অ্যাপ্লিকেশন / ডিজাইন / ফ্রন্টএন্ড / বিক্রেতা / yourtheme / Magento_Theme / লেআউট / default.xml

<referenceBlock name="header.links">
    <block class="Magento\Framework\View\Element\Html\Link" name="yourlinkname" before='wish-list-link'>
        <arguments>
            <argument name="label" xsi:type="string" translate="true">yourlink</argument>
            <argument name="path" xsi:type="string" translate="true">yourlink</argument>
        </arguments>
    </block>
</referenceBlock>

-1

শুধু নেভিগেশন মেনু লিঙ্কের জন্য, অর্জনের খুব বেশি পদক্ষেপ নেই, আমি এটি করার একটি সংক্ষিপ্ত টিউটোরিয়াল পেয়েছি, এটি এমন একটি থিমকে বোঝায় যা মডিউল topmenu.phtmlথেকে ফাইলকে ওভাররাইড করে Magento_Theme: https://linkstraffic.net/adding-custom- মেনু-আইটেম-ভিতরে-magento2 / আমি এটি সফলভাবে পরীক্ষা করেছি, তাই আমি আপনাকে এটি ভাগ করে নিই।


Magento এসই এ স্বাগতম। যদি আপনি একটি উত্তরে লিঙ্কগুলি পোস্ট করেন তবে দয়া করে নিশ্চিত হয়ে নিন যে উত্তরটি এখনও মূল্যবান কিনা, যদি লিঙ্কটি কিছু সময় মরে যায়: উদাহরণস্বরূপ, লিঙ্কযুক্ত নিবন্ধটি সংক্ষিপ্ত করুন বা প্রাসঙ্গিক অংশগুলি উদ্ধৃত করুন। এটি গুরুত্বপূর্ণ কারণ স্ট্যাক এক্সচেঞ্জের লক্ষ্য একটি জ্ঞান ডাটাবেস, কোনও সমর্থন ফোরাম নয় যা এই মুহুর্তে একজন ব্যক্তিকে সহায়তা করে। ভবিষ্যতের দর্শকদের এখনও প্রশ্নোত্তর থেকে উপকার পাওয়া উচিত।
সিয়ারে উখুলেবাউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.