যে কোনও ম্যাজেন্টো টেমপ্লেটে খালি বৈশিষ্ট্যটি কীভাবে আড়াল করবেন?


12

আমি ম্যাজেন্টো টেমপ্লেটে কাস্টম বৈশিষ্ট্যটি আড়াল করতে চাই। আমার ম্যাজেন্টো সংস্করণটি 1.8.1

আমরা আমাদের পণ্যের জন্য ব্র্যান্ড, মাত্রা, পণ্যের ধরণের ইত্যাদি হিসাবে কাস্টম বৈশিষ্ট্য যুক্ত করেছি তবে কখনও কখনও আমরা এই বৈশিষ্ট্যগুলিতে মান যোগ করি না। ম্যাজেন্টো পণ্য ভিউ পৃষ্ঠায় No বা N / A দেখায়।

সুতরাং, আমরা এমন বৈশিষ্ট্যগুলি গোপন করতে চাই যা খালি বা টেমপ্লেটের কোনও মূল্য নেই।


সাহায্য করার জন্য আমাদের আরও অনেক তথ্যের প্রয়োজন হবে (কোন বৈশিষ্ট্যটি? কোথায়?)
বেনমার্কস

উত্তর:


7

দ্রুত সমাধান:

ইন app/[mypackage]/[mytheme]/template/catalog/product/view/attributes.phtml(বা বেস বা ডিফল্ট কাস্টম থিম থেকে আপনার থিমটিতে এই ফাইলটি অনুলিপি করুন):

<?php foreach ($_additional as $_data):
// Add these 2 lines
$_test_data_value = trim($_data['value']);
if ((empty($_test_data_value) || in_array($_test_data_value, array(Mage::helper('catalog')->__('N/A'), Mage::helper('catalog')->__('No'))))) continue;?>

নীচে আপনি যা জিজ্ঞাসা করেছেন তা অর্জন করার জন্য প্রয়োজনীয় নয়:

সেই বৈশিষ্ট্যগুলি এখনও লোড হয়। এটি অনুকূলকরণ করতে (আপনার যদি বৈশিষ্ট্যগুলির সেটে একটি বৃহত সংখ্যক বৈশিষ্ট্য থাকে) করুন:

public function getAdditionalData(array $excludeAttr = array())
{
    $data = array();
    $product = $this->getProduct();
    $attributes = $product->getAttributes();
    foreach ($attributes as $attribute) {
//            if ($attribute->getIsVisibleOnFront() && $attribute->getIsUserDefined() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {
        if ($attribute->getIsVisibleOnFront() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {

            // Fix:
            //$value = $attribute->getFrontend()->getValue($product);

            if (!$product->hasData($attribute->getAttributeCode())) {
                $value = Mage::helper('catalog')->__('N/A');
            } 
            // Fix:
            elseif ((string) ($value = $attribute->getFrontend()->getValue($product)) == '') {
                $value = Mage::helper('catalog')->__('No');
            } elseif ($attribute->getFrontendInput() == 'price' && is_string($value)) {
                $value = Mage::app()->getStore()->convertPrice($value, true);
            }

            if (is_string($value) && strlen($value)) {
                $data[$attribute->getAttributeCode()] = array(
                    'label' => $attribute->getStoreLabel(),
                    'value' => $value,
                    'code'  => $attribute->getAttributeCode()
                );
            }
        }
    }
    return $data;
}

দুটি // Fix:মন্তব্য নোট করুন ।

এই পরিবর্তিত ফাংশনটি এসেছে Mage_Catalog_Block_Product_View_Attributes। আপনার মডিউল থেকে আপনার ব্লক ক্লাসে উপরের ফাংশনটি অনুলিপি করতে হবে। আপনার ব্লক শ্রেণিটি মূল ব্লক শ্রেণীর পুনর্লিখন করে। এটি প্রয়োগ করলে সামনের অংশে প্রোডাক্ট ভিউ পৃষ্ঠা লোডের যথেষ্ট উন্নতি হবে।

আপনি যদি জানেন না কীভাবে স্থানীয় ডিয়ারে একটি কাস্টম মডিউল তৈরি করতে হয় তবে কীভাবে ম্যাজেন্টো মডিউলটি তৈরি করতে হয় এবং কীভাবে একটি ব্লক শ্রেণীর পুনর্লিখন করতে হয় তার টিউটোরিয়াল অনুসন্ধান করতে হয়। অথবা http://www.magentocommerce.com/magento-connect/ultimate-module-creator.html চেষ্টা করুন


প্রথম সমাধান টেমপ্লেট ফাইল পরিবর্তন করা ঠিক আছে, তবে দুটি সমস্যা আছে। প্রথমে যদি হ্যাঁ / না-তে কোনও মান নির্ধারিত মান সহ হ'ল / না থাকে তবে এটি অগ্রভাগে লুকানো থাকবে যা ঠিক নয়। দ্বিতীয়ত যদি কোনও বৈশিষ্ট্য না থাকে আপনি শিরোনাম অতিরিক্ত তথ্য পাবেন যা ঠিক নেই। যদি কোনও বৈশিষ্ট্য না থাকে তবে শিরোনামটি উপস্থিত হওয়া উচিত নয়।
ADDISON74

6

বৈশিষ্ট্য.এফটিএমটিএল ফাইলটি সন্ধান করুন এবং খুলুন । এই ফাইলটি এখানে পাওয়া যাবে: /app/design/frontend/[YOUR PACKAGE]/[YOUR THEME]/template/catalog/product/view/attribute.phtml

ফাইলটি খুলুন এবং নিম্নলিখিত লাইনের জন্য অনুসন্ধান করুন:

<?php foreach ($_additional as $_data): ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
<?php endforeach; ?>

নিম্নলিখিত কোডের লাইনের সাথে পুরো ফোরচ লুপটি প্রতিস্থাপন করুন:

<?php foreach ($_additional as $_data): ?>
    <?php $_attribute = $_product->getResource()->getAttribute($_data['code']);
    if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != '')) { ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
    <?php } ?>
<?php endforeach; ?>

সূত্র: http://codingbasics.net/hide-magento-attributes-value/

সূত্র: http://www.magthemes.com/magento-blog/empty-attributes-showing-na-fix/


4

আমি সঠিক জানি না, তবে আমি এটি কোথাও পড়েছি।

"অ্যাট্রিবিউটস.পিটিএমটিএল" হিসাবে নামযুক্ত টেম্পলেট ফাইলটি সম্পাদনা করে খালি বৈশিষ্ট্যগুলি লুকান।

আপনার কোডে, নিম্নলিখিত লাইনগুলি সন্ধান করুন:

<?php foreach ($_additional as $_data): ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
<?php endforeach; ?>

এবং এইগুলির সাথে এই লাইনগুলি প্রতিস্থাপন করুন :

<?php foreach ($_additional as $_data): ?>
    <?php if ((string)$_data['value'] != '' and $_data['value'] != 'N/A'): ?>
        <tr>
            <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
            <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
        </tr>
    <?php endif; ?>
<?php endforeach; ?>

1
আপনার সমাধানটি কেবলমাত্র বিশদ টাইপ ডেটটাইম লুকায় যা কেবলমাত্র N / A মানযুক্ত having একটি পাঠ্য ক্ষেত্র, পাঠ্য অঞ্চল, মাল্টিসিলেট, ড্রপডাউন এর কোনও মূল্য নেই। যদি বৈশিষ্ট্যটির ধরণটি তারিখের সময় হয় এবং মানটি সেট করা থাকে তবে এটি লুকিয়ে রাখার পরিবর্তে প্রদর্শিত হবে।
ADDISON74

1

অ্যাপ / ডিজাইন / ফ্রন্টএন্ড / বেস / ডিফল্ট / টেম্পলেট / ক্যাটালগ / পণ্য / দর্শন / বৈশিষ্ট্য.এফটিএমএলে নিম্নলিখিত কোডটি পরিবর্তন করুন :

থেকে:

<?php foreach ($_additional as $_data): ?>
<tr>
    <th class="label"><?php echo $this->escapeHtml($this->__($_data['label'])) ?></th>
    <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>

প্রতি:

<?php foreach ($_additional as $_data): ?>
<?php if ($_product->getAttributeText($_data['code']) == '') continue; ?>
<tr>
    <th class="label"><?php echo $this->escapeHtml($this->__($_data['label'])) ?></th>
    <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>

2
বেস টেমপ্লেটগুলি পরিবর্তন করবেন না ...
জেল সিডেরিয়াস

1

আপনার কাস্টম থিম সালে নেভিগেট করুন: catalog\product\view\attributes.phtml। আপনার পিএইচপি কোডটি সমস্ত ভাষাতে গুণমানের মান "না" বা "এন / এ" আছে কিনা তা পরীক্ষা করা উচিত। এটি এই মানগুলির সাথে বৈশিষ্ট্যগুলি সরবরাহ করবে না।

কোডটি এর মতো দেখাবে:

<?php
$_helper = $this->helper('catalog/output');
$_product = $this->getProduct();
$emptyValues = array($this->__('N/A'), $this->__('No'));
?>
<?php if($_additional = $this->getAdditionalData()): ?>
    <h2><?php echo $this->__('Additional Information') ?></h2>
    <table class="data-table" id="product-attribute-specs-table">
        <col width="25%" />
        <col />
        <tbody>
        <?php foreach ($_additional as $_data): ?>
            <?php if(!in_array($_data['value'], $emptyValues)): ?>
                <tr>
                    <th class="label"><?php echo $this->escapeHtml($this->__($_data['label'])) ?></th>
                    <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
                </tr>
            <?php endif; ?>
        <?php endforeach; ?>
        </tbody>
    </table>
    <script type="text/javascript">decorateTable('product-attribute-specs-table')</script>
<?php endif;?>

ভেরিয়েবল যুক্ত $emptyValuesকরা হয়েছে এবং কোডটিতে এটি অ্যারেতে রয়েছে কিনা তা পরীক্ষা করুন।

আপনি সীমান্তে পরিবর্তনগুলি করার পরে ক্যাশে খালি করার বিষয়টি নিশ্চিত করুন।


আমার জন্য কোডের উপরে কাজ করছে না
রত্ন

1

এটি কোডের একটি ছোট অংশের সাহায্যে করা যেতে পারে। attributes.phtmlফাইলটি খুলুন এবং খুলুন এই ফাইলটি এখানে পাওয়া যাবে:/app/design/frontend/[theme name]/[package name]/template/catalog/product/view/attribute.phtml

ফাইলটি খুলুন এবং নিম্নলিখিত লাইনের জন্য অনুসন্ধান করুন:

<?php foreach ($_additional as $_data): ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
<?php endforeach; ?>

নিম্নলিখিত কোডের লাইনের সাথে পুরো ফোরচ লুপটি প্রতিস্থাপন করুন:

<?php foreach ($_additional as $_data): ?>
    <?php $_attribute = $_product->getResource()->getAttribute($_data['code']);
    if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != '')) { ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
    <?php } ?>
<?php endforeach; ?>

0

সমস্যার সমাধান হয়েছে :) সমাধান এখানে রয়েছে: http://www.magentocommerce.com/boards%20/viewthread/294064/#t407742

এই মডিউলটি ম্যাজেন্টো 1.8.1 এর সাথে সূক্ষ্মভাবে কাজ করে module মডিউল কিনতে বা কোনও কোড সম্পাদনা করার দরকার নেই।

ধন্যবাদ নীরো (এই মডিউলটির বিকাশকারী)


1
লিঙ্কটি নষ্ট হয়ে গেছে আমি কী লাইভ লিঙ্কটি আপডেট জানতে পারি?
চাঁদ

4
বা আরও ভাল: সঠিক উত্তরটি এখানে পোস্ট করুন। নতুন লিঙ্কটি আবার ভেঙে যাবে ...
সিমোথেন্সোরেরার

0

সহজ উপায়, তবে অন্যের চেয়ে ভাল প্রয়োজন।

আপনার অনুবাদ ফাইল আপডেট করুন Mage_Catalog.csv। নীচের মত খালি মান সেট করুন।

N/A,""
No,""

যখন না বা এন / এ হবে তখন সম্মুখভাগের বৈশিষ্ট্যগুলি উপেক্ষা করা হবে।


0

কখনও কখনও আমরা এমন একটি স্টোর জুড়ে আসি যা অনেকগুলি বিভিন্ন পণ্য বৈশিষ্ট্য রাখতে চায় তবে তারা কেবলমাত্র ডিফল্ট বৈশিষ্ট্য সেট চায়। এর অর্থ হ'ল প্রতিটি পণ্য 10+ বিকল্প বলতে দেয় যা কখনও কখনও নির্দিষ্ট পণ্যগুলিতে প্রয়োগ হয় না। উদাহরণস্বরূপ কোনও পোশাকের জন্য কোনও আকারের বৈশিষ্ট্যের প্রয়োজন হতে পারে, তবে এক টুকরো আসবাবের প্রয়োজন নেই। যেহেতু স্টোর প্রতিটি পণ্যের জন্য একই বৈশিষ্ট্য সেট ব্যবহার করে খালি আকারের বৈশিষ্ট্যটি এটির মতো প্রদর্শিত হবে:

এটি অবশ্যই গ্রাহকদের জন্য খুব বিভ্রান্তিকর, সুতরাং আরও ভাল বিকল্পটি হ'ল বৈশিষ্ট্যটির মানটি খালি রাখা hide এটি কোডের একটি ছোট অংশের সাহায্যে করা যেতে পারে। attributes.phtmlফাইলটি খুলুন এবং খুলুন এই ফাইলটি এখানে পাওয়া যাবে:app/design/frontend/default/[theme name]/template/catalog/product/view/attribute.phtml

ফাইলটি খুলুন এবং নিম্নলিখিত লাইনের জন্য অনুসন্ধান করুন:

<?php foreach ($_additional as $_data): ?>
    <?php $_attribute = $_product->getResource()->getAttribute($_data['code']);
    if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != '')) { ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
    <?php } ?>
<?php endforeach; ?>

নিম্নলিখিত কোডের লাইনের সাথে পুরো ফোরচ লুপটি প্রতিস্থাপন করুন:

<?php foreach ($_additional as $_data): ?>
    <?php $_attribute = $_product->getResource()->getAttribute($_data['code']);
    if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != '')) { ?>
    <tr>
        <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
        <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
    </tr>
    <?php } ?>
<?php endforeach; ?>

এটাই! খালি বৈশিষ্ট্যগুলি এখন আপনার পণ্য পৃষ্ঠা থেকে গোপন করা হবে। পরিবর্তনগুলি দেখতে আপনার ক্যাশে রিফ্রেশ করতে ভুলবেন না।

সোর্স : https://tejabhagavan.blogspot.in/2016/03/hide-magento-attributes-with-no-value-2.html


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