-
16-10-2019 - |
题
在产品列表中,我向制造商展示,一切正常。但是,当我进行搜索时,而不是显示制造商的名称,它显示了。我使用以下代码显示品牌:
$_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product)
我正在使用Magento 1.7.0.2。
解决方案
诊断您的实际问题:
- 确保用于搜索的产品集合包括制造商属性或在后端设置制造商属性以在前端显示(请参见下面的屏幕截图)。
- 确保
manufacturer
设置为 适当的商店视图呢在管理目录产品编辑视图中,请确保为商店视图的值设置下拉列表, 不是商店/网站/默认视图. - 确保您被重新索引。如果您在CE上,请手动运行索引器。如果在EE上确保您的索引是从Cron或通过的
$ php shell/indexer.php reindexall
. - 清除所有缓存。冲洗缓存存储。
rm -rf var/cache
以及所有破坏性的事物。检查是否存在/tmp/magento
文件夹。 - 禁用/启用平面目录和勒索。
启用前端/产品页面/收集可见性的属性:
为什么会发生这种情况:
所以,有一个 有效的原因 当没有可用数据时,为什么Magento返回“否”。方法 getFrontend
返回一个对象,该对象是 Mage_Eav_Model_Entity_Attribute_Frontend_Abstract
.
在方法中 getValue
, ,如果没有可用的选项 /设置,则默认为输出布尔值。因此,“否”的价值 - 这是前端布尔值等效的 false
:
public function getValue(Varien_Object $object)
{
$value = $object->getData($this->getAttribute()->getAttributeCode());
if (in_array($this->getConfigField('input'), array('select','boolean'))) {
$valueOption = $this->getOption($value);
if (!$valueOption) {
$opt = Mage::getModel('eav/entity_attribute_source_boolean');
//....
一旦完成了上述故障排除点 - 如果您仍然收到“否”,并且这是一个适当的响应(例如,您在产品上没有制造商设置制造商,并且是故意的),则可能需要在回声之前有条件地测试输出:
$value = $_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product);
echo $value=="No" ? "" : $value;