Magento 2 में विवरण विशेषता में कस्टम विशेषता को कैसे बदलें
कैसे custom attribute value
बदलें में बनाएँ description attribute
।
Ex: - मेरी कस्टम विशेषता सभी मानों को प्रतिस्थापित करती है उत्पाद विवरण टैब का अर्थ है विवरण विशेषता।
मेरे कस्टम विशेषता है local_description
।
यहाँ मेरा कोड है: -
<?php
$_helper = $this->helper(Magento\Catalog\Helper\Output::class);
$_product = $block->getProduct();
if (!$_product instanceof \Magento\Catalog\Model\Product) { return; } $_call = $block->getAtCall(); $_code = $block->getAtCode(); $_className = $block->getCssClass(); $_attributeLabel = $block->getAtLabel(); $_attributeType = $block->getAtType(); $_attributeAddAttribute = $block->getAddAttribute(); $renderLabel = true;
// if defined as 'none' in layout, do not render
if ($_attributeLabel == 'none') { $renderLabel = false;
}
if ($_attributeLabel && $_attributeLabel == 'default') {
$_attributeLabel = $_product->getResource()->getAttribute($_code)->getStoreLabel(); } if ($_attributeType && $_attributeType == 'text') { $_attributeValue = ($_helper->productAttribute($_product, $_product->$_call(), $_code)) ? $_product->getAttributeText($_code) : ''; } else { if($_code == 'description')
{
$_code = 'local_description'; } $_attributeValue = $_helper->productAttribute($_product, $_product->$_call(), $_code); } ?> <?php if ($_attributeValue) :?>
<div class="product attribute <?= $block->escapeHtmlAttr($_className) ?>">
<?php if ($renderLabel) :?> <strong class="type"><?= $block->escapeHtml($_attributeLabel) ?></strong> <?php endif; ?> <div class="value" <?= /* @noEscape */ $_attributeAddAttribute ?>><?= /* @noEscape */ $_attributeValue ?></div>
</div>
<?php endif; ?>
THANKS.
जवाब
आप निम्नलिखित की कोशिश कर सकते हैं।
catalog_product_view.xml
अपने मॉड्यूल या विषय में बनाएँ ।
और निम्न कोड जोड़ें
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="product.info.description">
<arguments>
<argument name="at_call" xsi:type="string">getLocalDescription</argument>
<argument name="at_code" xsi:type="string">local_description</argument>
</arguments>
</referenceBlock>
</body>
</page>
यह सिर्फ नमूना कोड है, अपनी आवश्यकता के अनुसार संशोधित करें।
हाय मेरी समझ के अनुसार पर्याप्त जानकारी के बिना यह पोस्ट कर रहा है और जो आपके विवरण के साथ नए टेस्ट विवरण फ़ील्ड को जोड़ देगा कृपया मुझे बताएं कि क्या आपको इसकी आवश्यकता है या फिर कृपया अधिक जानकारी के साथ अपने प्रश्न को अपडेट करें
सेटअप / InstallData.php
<?php
namespace Vendor\Module\Setup;
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface;
class InstallData implements InstallDataInterface
{
/**
* EAV setup factory
*
* @var EavSetupFactory
*/
private $eavSetupFactory; /** * Init * * @param EavSetupFactory $eavSetupFactory
*/
public function __construct(EavSetupFactory $eavSetupFactory) { $this->eavSetupFactory = $eavSetupFactory; } /** * {@inheritdoc} * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { /** @var EavSetup $eavSetup */
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]); /** * Add attributes to the eav_attribute */ $eavSetup->removeAttribute(\Magento\Catalog\Model\Product::ENTITY, 'test_descp');
$eavSetup->removeAttribute(\Magento\Catalog\Model\Product::ENTITY, 'test_descp'); // $statusOptions = 'Rbj\ProductAttribute\Model\Config\Source\StatusOptions';
$eavSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'test_descp',
[
'group' => 'Content',
'type' => 'text',
'backend' => '',
'frontend' => '',
'label' => 'New Test Description',
'input' => 'text',
'class' => '',
'source' => '',
'global' => ScopedAttributeInterface::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'is_used_in_grid' => true,
'visible_on_front' => false,
'used_in_product_listing' => false,
'unique' => false
]
);
}
}
अपडेट करें:-
इस कोड को कस्टम मॉड्यूल में dafault.xml के अंदर रखें
"अधिक जानकारी" टैब निकालने के लिए:
<referenceBlock name="product.attributes" remove="true" />
यदि आप "विवरण" टैब को हटाना चाहते हैं:
<referenceBlock name="product.info.details" remove="true" />