I am using Magento 2.1.7 with Porto theme, I recently updated theme and magento now in product information I am also seeing empty attributes that are unrelated to the current products as N/A . how can I hide them?
I saw people discussing here this in Magento 1. but it doesn't work for 2.0.
please help if you know how to do it. thanks
Magento ver. 2.1.7
Theme: Porto 2.5.0
Solved! Go to Solution.
Just override file into your theme,
app/code/{Packagename}/{themename}/Magento_Catalog/templates/product/view/attributes.phtml
Just keep line, <?php if($_data['value'] == 'N/A') continue;?> after <?php foreach ($_additional as $_data): ?> line,
Full code,
<?php
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
// @codingStandardsIgnoreFile
/**
* Product additional attributes template
*
* @var $block \Magento\Catalog\Block\Product\View\Attributes
*/
?>
<?php
$_helper = $this->helper('Magento\Catalog\Helper\Output');
$_product = $block->getProduct()
?>
<?php if ($_additional = $block->getAdditionalData()): ?>
<div class="additional-attributes-wrapper table-wrapper">
<table class="data table additional-attributes" id="product-attribute-specs-table">
<caption class="table-caption"><?php /* @escapeNotVerified */ echo __('More Information') ?></caption>
<tbody>
<?php foreach ($_additional as $_data): ?>
<?php if($_data['value'] == 'N/A') continue;?>
<tr>
<th class="col label" scope="row"><?php echo $block->escapeHtml(__($_data['label'])) ?></th>
<td class="col data" data-th="<?php echo $block->escapeHtml(__($_data['label'])) ?>"><?php /* @escapeNotVerified */ echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif;?>
Clear cache.
Check link, How to remove empty attributes “N/A” in Magento 2?
If Issue solved, click Kudos and Accept as Solution.
Just override file into your theme,
app/code/{Packagename}/{themename}/Magento_Catalog/templates/product/view/attributes.phtml
Just keep line, <?php if($_data['value'] == 'N/A') continue;?> after <?php foreach ($_additional as $_data): ?> line,
Full code,
<?php
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
// @codingStandardsIgnoreFile
/**
* Product additional attributes template
*
* @var $block \Magento\Catalog\Block\Product\View\Attributes
*/
?>
<?php
$_helper = $this->helper('Magento\Catalog\Helper\Output');
$_product = $block->getProduct()
?>
<?php if ($_additional = $block->getAdditionalData()): ?>
<div class="additional-attributes-wrapper table-wrapper">
<table class="data table additional-attributes" id="product-attribute-specs-table">
<caption class="table-caption"><?php /* @escapeNotVerified */ echo __('More Information') ?></caption>
<tbody>
<?php foreach ($_additional as $_data): ?>
<?php if($_data['value'] == 'N/A') continue;?>
<tr>
<th class="col label" scope="row"><?php echo $block->escapeHtml(__($_data['label'])) ?></th>
<td class="col data" data-th="<?php echo $block->escapeHtml(__($_data['label'])) ?>"><?php /* @escapeNotVerified */ echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif;?>
Clear cache.
Check link, How to remove empty attributes “N/A” in Magento 2?
If Issue solved, click Kudos and Accept as Solution.
wow man you relived me from a disaster. it worked. thanks a lot! ![]()
![]()
Not working for me 2.1.8 with custom theme with Blank as base. Can you please help ?
I changed N/A to 'Nee' then it is wroking on the Dutch site, but not in the English or German. What is value I have to put in to get it working for all languages ?
The files is in 2.1.8 located somewhere else:
vendor/magento/module-catalog/view/frontend/templates/product/view
I translate Nee to N/A with inline translation, problem solved.
Is this the same in version 1.9.3.4 also? If not what do I need to do?
Awesome. Was looking for that. In regards to different languages:
If you use
<?php if($_data['value'] == __('N/A')) continue;?>instead, it works language-independent, as well!
To support multiple languages, you may replace:
<?php if($_data['value'] == 'N/A') continue;?>
with:
<?php if(is_object($_data['value'])) continue; ?>
Update: I found out that this fix is not working on configurable products like it does on simples, so this is my current attributes.phtml after I fixed it (if it helps someone...):
<?php
$_helper = $this->helper('Magento\Catalog\Helper\Output');
$_product = $block->getProduct();
$excludeAttr = [];
$_additionalData = [];
$attributes = $_product->getAttributes();
foreach ($attributes as $attribute) {
if ($attribute->getIsVisibleOnFront() && !in_array($attribute->getAttributeCode(), $excludeAttr)) {
$value = $attribute->getFrontend()->getValue($_product);
if ($attribute->getFrontendInput() == 'price' && is_string($value)) {
$value = $this->priceCurrency->convertAndFormat($value);
}
if (is_string($value) && strlen($value)) {
$_additionalData[$attribute->getAttributeCode()] = [
'label' => __($attribute->getStoreLabel()),
'value' => $value,
'code' => $attribute->getAttributeCode(),
];
}
}
}
?>
<?php if ($_additionalData): ?>
<div class="additional-attributes-wrapper table-wrapper">
<table class="data table additional-attributes" id="product-attribute-specs-table">
<caption class="table-caption"><?= /* @escapeNotVerified */ __('More Information') ?></caption>
<tbody>
<?php foreach ($_additionalData as $_data): ?>
<?php if(is_object($_data['value'])) continue; ?>
<tr>
<th class="col label" scope="row"><?= $block->escapeHtml(__($_data['label'])) ?></th>
<td class="col data" data-th="<?= $block->escapeHtml(__($_data['label'])) ?>"><?= /* @escapeNotVerified */ $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif;?>