0

Magento 在将空属性显示为“否”或“不适用”方面做得很好,但我需要它们显示为空表格单元格。

我知道这段代码完全隐藏了空属性:

<?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: //www.magthemes.com/magento-blog/empty-attributes-showing-na-fix/

但由于我是 php 新手,我真的不知道如何修改它以显示它们为空。

我知道我可以转到核心文件并修改 Attributes.php,但这是一种不好的做法,我想把它做对。

提前致谢!

4

4 回答 4

4
  1. 您可以编写一个扩展来重写 Mage_Catalog_Block_Product_View_Attributes::getAdditionalData。但这需要比修改模板更多的知识。

  2. 修改模板。您的代码已经完成。只需要少量修改

    <?php foreach ($_additional as $_data): ?>
    <?php 
        $_attribute = $_product->getResource()->getAttribute($_data['code']);
        $_isEmpty = (!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 if (!$_isEmpty) { echo $_helper->productAttribute($_product, $_data['value'], $_data['code'])} ?> </td>
        </tr>
    <?php endforeach; ?>
    

PS代码可能包含错误,尚未测试:)

于 2013-04-23T16:07:16.160 回答
2

ALT+0160

编辑产品时,使用上述键盘快捷键作为属性值。

如何?

至少在 Windows 上,请执行以下操作:

按住ALT键并在键盘上键入数字 0160。现在松开ALT钥匙。

基本上会出现一个不是空格字符的空白字符。这将为您的产品字段注册为非空值,并且引擎将呈现字符,幸运的是,对于我们人类来说,这是一个我们不会看到的空格。

它并不优雅,但它会帮助那些无法修改模板代码的人。

于 2016-06-11T10:10:19.240 回答
1

我尝试使用此选项删除“No or N/A”并确定删除此词,但不要删除属性名称。我使用这个代码:

 <?php
    $_helper = $this->helper('catalog/output');
    $_product = $this->getProduct()
?>
<?php if($_additional = $this->getAdditionalData()): ?>
<div class="akordeon-item-head">
    <div class="akordeon-item-head-container">
        <div class="akordeon-heading">
            <?php echo $this->__('Additional Information') ?>
        </div>
    </div>
</div>
<div class="akordeon-item-body">
    <div class="akordeon-item-content">
        <table class="data-table" id="product-attribute-specs-table">
            <col width="25%" />
            <col />
            <tbody>
            <?php foreach ($_additional as $_data): ?>
            <?php 
    $_attribute = $_product->getResource()->getAttribute($_data['code']);
    $_isEmpty = (!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 if ($_isEmpty) { echo $_helper->productAttribute($_product, $_data['value'], $_data['code']);} ?>
                </tr>
            <?php endforeach; ?>
            </tbody>
        </table>
        <script type="text/javascript">decorateTable('product-attribute-specs-table')</script>
    </div>
</div>
<?php endif;?>
于 2013-11-26T15:36:09.833 回答
0

我发现这个问题并为我工作

<?php foreach ($_additional as $_data): ?>
<?php if ($_data['value'] == 'No') {continue;} ?>
<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>
于 2013-11-26T17:05:46.187 回答