0

Magento 中是否有可能具有多选属性,为此我会在分层导航中使用文本框而不是显示多选中的所有项目?

我有一个属性,我将有数百个选项,并且需要在分层导航中使用它。

当客户使用无效值时,应显示错误。


编辑:在 FlorinelChis 的帮助下,我在 filter.phtml 中有以下代码:

<ol>
<?php foreach ($this->getItems() as $_item): ?>
  <?php
  $attributeModel = $this->getAttributeModel();    
  $attribute_code =  $attributeModel->getAttributeCode();
  ?>
    <li>
      <?php if ($attribute_code != 'available_zip'): ?>
        <?php if ($_item->getCount() > 0): ?>
        <a href="<?php echo $this->urlEscape($_item->getUrl()) ?>"><?php echo $_item->getLabel() ?></a>
        <?php else: echo $_item->getLabel() ?>
        <?php endif; ?>
        <?php if ($this->shouldDisplayProductCount()): ?>
        (<?php echo $_item->getCount() ?>)
        <?php endif; ?>
      <?php endif; ?>
    </li>
<?php endforeach ?>
</ol>
  <?php
    if ($attribute_code == 'available_zip'): 
          $cat =  Mage::registry('current_category')->getUrlPath() ;
          $url = Mage::getBaseUrl();
          /*$sendUrl = $this->urlEscape($_item->getUrl()).'+'.$url.$cat.'?'.$attribute_code.'='.$_item->getValue();*/
        echo '<form action="" method="get">';
        echo '<input type="text" size="5" maxlength="5" name="'.$attribute_code.'" />';
        echo '<button type="submit">OK</button>';
        echo '</form>';
  endif; ?>

我现在还有一件事:如何发送带有属性 id 而不是值的表单?

4

1 回答 1

1

首先,让我们看看 Magento 如何在左侧导航中显示过滤器

1)启用模板路径提示: Magento 启用模板路径提示

结果如下:

magento 分层导航过滤器

2)我们看一下app/design/frontend/base/default/template/catalog/layer/filter.phtml(你应该把这个文件复制到你的主题文件夹结构中)

3) 块(模板文件中的 $this 是扩展的 Mage_Catalog_Block_Layer_Filter_Attribute 的一个实例Mage_Catalog_Block_Layer_Filter_Abstract

4)您可以看到在Mage_Catalog_Block_Layer_Filter_AbstractgetName() 方法中存在,因此您可以依靠此函数来识别何时显示属性。不!标签可以更改,您的代码将不再有用。回到我们的模板文件,可以得到attribute_code(靠谱)

//$this is instance of Mage_Catalog_Block_Layer_Filter_Attribute 
$attributeModel = $this->getAttributeModel();    
$attribute_code =  $attributeModel->getAttributeCode();

5) 在您的模板上,您可以根据属性代码进行检查,因此您可以使用文本区域而不是巨大的列表显示标准列表或自定义 html 代码。

于 2013-01-23T21:38:11.500 回答