আমি লিস্টিং পৃষ্ঠায় আমার কাস্টম ব্লকটি যুক্ত করতে চাই [ম্যাজেন্টো -২] তবে list.phtml
কোনও.phtml
ফাইল বা কোনও ফাইল ছাড়াই । xml
ফাইল ব্যবহার করে কোন সম্ভাবনা আছে ?
যে কোন ধরণের সাহায্য গ্রহন করা হবে.
আমি লিস্টিং পৃষ্ঠায় আমার কাস্টম ব্লকটি যুক্ত করতে চাই [ম্যাজেন্টো -২] তবে list.phtml
কোনও.phtml
ফাইল বা কোনও ফাইল ছাড়াই । xml
ফাইল ব্যবহার করে কোন সম্ভাবনা আছে ?
যে কোন ধরণের সাহায্য গ্রহন করা হবে.
উত্তর:
আপনি যদি এই ব্লকটিকে ওভাররাইড করতে নতুন মডিউল তৈরি করেন তবে আপনি এটি করতে পারেন: 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.php
এapp\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
di.xml
উপরের পদ্ধতিটি ব্যবহার করে আমি ইতিমধ্যে ওভাররেডিয়ান করেছি । এখন কীভাবে তালিকাভুক্ত পৃষ্ঠায় আমার কাস্টম অ্যাট্রিবিউট মানটি প্রদর্শন করবেন?
সমাধানটি সম্পর্কে আমার গ্রহণ এখানে - তবে আপনাকে অবশ্যই 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
টেমপ্লেটটি সংশোধন করা এড়াতে চান তবে আপনি একই জাতীয় জিনিসটি করতে সক্ষম হতে পারেন তবে অন্য কোনও টেমপ্লেটে।