Magento 2 में विवरण विशेषता में कस्टम विशेषता को कैसे बदलें

Aug 18 2020

कैसे 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.

जवाब

1 AnshuMishra Aug 18 2020 at 06:23

आप निम्नलिखित की कोशिश कर सकते हैं।

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>

यह सिर्फ नमूना कोड है, अपनी आवश्यकता के अनुसार संशोधित करें।

2 Pramod Aug 18 2020 at 05:29

हाय मेरी समझ के अनुसार पर्याप्त जानकारी के बिना यह पोस्ट कर रहा है और जो आपके विवरण के साथ नए टेस्ट विवरण फ़ील्ड को जोड़ देगा कृपया मुझे बताएं कि क्या आपको इसकी आवश्यकता है या फिर कृपया अधिक जानकारी के साथ अपने प्रश्न को अपडेट करें

सेटअप / 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" />