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而不是值的表单?
答案 0 :(得分:1)
首先,让我们了解Magento如何在左侧导航中显示过滤器
1)启用模板路径提示:
以下是结果:
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_Abstract
中存在getName()方法,因此您可以依赖此函数来识别何时显示属性。别!标签可以更改,您的代码将不再有用。
回到我们的模板文件,您可以获得attribute_code(可靠)
//$this is instance of Mage_Catalog_Block_Layer_Filter_Attribute
$attributeModel = $this->getAttributeModel();
$attribute_code = $attributeModel->getAttributeCode();
5)在您的模板上,您可以根据属性代码进行检查,因此您可以使用textarea而不是大型列表显示标准列表或自定义html代码。