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


10

আমি লিস্টিং পৃষ্ঠায় আমার কাস্টম ব্লকটি যুক্ত করতে চাই [ম্যাজেন্টো -২] তবে list.phtmlকোনও.phtml ফাইল বা কোনও ফাইল ছাড়াইxmlফাইল ব্যবহার করে কোন সম্ভাবনা আছে ?

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

যে কোন ধরণের সাহায্য গ্রহন করা হবে.


দুর্দান্ত নিবন্ধ। অরজিনাল তালিকা পৃষ্ঠাটি ওভাররাইড করার জন্য আপনি কি টেস্ট.ফটিএমটিএলে আরও বিশদ প্রসারিত করবেন? আমি যেমন ম্যাজেন্টো ২ তে নতুন

টেস্ট.ফটিটিএমএলে গ্রিডে 'লেবেল' নিউ যুক্ত করার জন্য আমি কীভাবে getProductDetailsHtml () ফাংশনটি ব্যবহার করতে পারি?
ক্লি

উত্তর:


10

আপনি যদি এই ব্লকটিকে ওভাররাইড করতে নতুন মডিউল তৈরি করেন তবে আপনি এটি করতে পারেন: vendor\magento\module-catalog\Block\Product\ListProduct.php

এই ব্লকটি ওভাররাইড করতে আপনার এটিকে তৈরি করতে di.xmlহবেapp\code\Vendor\Module_Name\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">
    <preference for="Magento\Catalog\Block\Product\ListProduct" type="Vendor\Module_Name\Block\Product\ListProduct" />
</config>

নতুন ফাইল নাম লিখুন ListProduct.phpapp\code\Vendor\Module_Name\Block\Product

ListProduct.php বিষয়বস্তু:

namespace Vendor\Module_Name\Block\Product;
class ListProduct extends \Magento\Catalog\Block\Product\ListProduct
{
    public function getProductDetailsHtml(\Magento\Catalog\Model\Product $product)
    {
        $html = $this->getLayout()->createBlock('Magento\Framework\View\Element\Template')->setProduct($product)->setTemplate('Vendor_ModuleName::test.phtml')->toHtml();
        $renderer = $this->getDetailsRenderer($product->getTypeId());
        if ($renderer) {
            $renderer->setProduct($product);
            return $html.$renderer->toHtml();
        }
        return '';
    }
}

আপনি Magento\Framework\View\Element\Templateআপনার ব্লকে ব্লক পরিবর্তন করতে পারেন

test.phtmlফাইল তৈরি করুনapp\code\Vendor\Module_Name\view\frontend\templates


আমার কাছ থেকে তথ্য +1 জন্য ধন্যবাদ ... কিন্তু আমরা কি ওভাররাইড ছাড়াই অর্জন করতে পারি?
কিয়ুর শাহ

@ কেয়ারশাহ, তালিকা পৃষ্ঠায় আপনার কাস্টম ব্লক যুক্ত করার জন্য ম্যাজ 2.0 তে এখন পর্যন্ত সেরা পদ্ধতির থেকে উপরে? আমি ক্যান্ডির সাথেও সম্মত হই কারণ পণ্যের আউটপুট তালিকা.পিএফটিএমএলে হার্ডকোডযুক্ত।
স্লিমশাদ্দিয়

@ বিক্রম এখনও অবধি, আমি মনে করি এটি এখন পর্যন্ত সেরা পদ্ধতি এবং এটি আমার পক্ষেও ভাল কাজ করছে ..
কিয়ুর শাহ

@ কেয়ারশাহ, di.xmlউপরের পদ্ধতিটি ব্যবহার করে আমি ইতিমধ্যে ওভাররেডিয়ান করেছি । এখন কীভাবে তালিকাভুক্ত পৃষ্ঠায় আমার কাস্টম অ্যাট্রিবিউট মানটি প্রদর্শন করবেন?
স্লিমশাদ্দেয়

@ ভিক্রাম আপনি নিজের কাস্টম বৈশিষ্ট্যটি প্রদর্শনের জন্য ম্যাগেভ 2 কোড ব্যবহার করতে পারেন। আমার অর্থ টেস্ট.ফিটএমএল আপনি $ পণ্য অবজেক্ট এবং $ পণ্য অবজেক্ট থেকে আপনি সহজেই এর বৈশিষ্ট্যটির মান পেতে পারেন।
কিউর শাহ

4

বর্তমানে আপনি এটি করতে পারবেন না কারণ পণ্য আউটপুটটির সমস্ত যুক্তি list.phtmlটেমপ্লেটে হার্ডকডযুক্ত ।


হ্যাঁ আমি জানি যে ,,, তবে এর জন্য কি কোনও হুক বা কোনও কৌশল উপলব্ধ? বিটিডব্লিউ, তথ্যের জন্য ধন্যবাদ।
কিউর শাহ

0

সমাধানটি সম্পর্কে আমার গ্রহণ এখানে - তবে আপনাকে অবশ্যই list.phtmlটেমপ্লেটটি পরিবর্তন করতে হবে :

catalog_category_view.xml

<referenceBlock name="category.products.list">
    <block class="Magento\Catalog\Block\Product\ProductList\Item\Container" name="custom.block.container" as="custom-block-container">
        <block class="Magento\Catalog\Block\Product\ProductList\Item\Block" name="custom.block" as="custom-block"
           template="Magento_Catalog::product/view/custom-block.phtml" />
    </block>
</referenceBlock>

ইন custom-block.phtmlআপনি ভালো পণ্য পেতে পারেন:

$_product = $block->getProduct();

আপনাকে list.phtmlযদিও টেমপ্লেটটি ওভাররাইট করতে হবে ... আপনি যেখানে নিজের কাস্টম ব্লকটি প্রদর্শন করতে চান কেবল এটি এটি যুক্ত করুন:

<?php if ($customBlock = $block->getChildBlock('custom-block-container')): ?>
    <?= $customBlock->setProduct($_product)->getChildHtml() ?>
<?php endif; ?>

আপনি যদি সত্যিইlist.phtml টেমপ্লেটটি সংশোধন করা এড়াতে চান তবে আপনি একই জাতীয় জিনিসটি করতে সক্ষম হতে পারেন তবে অন্য কোনও টেমপ্লেটে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.