El fabricante no trabaja en la búsqueda
-
16-10-2019 - |
Pregunta
En la lista de productos, muestro al fabricante y todo funciona bien. Pero cuando hago una búsqueda, en lugar de mostrar el nombre del fabricante, muestra No. Uso el siguiente código para mostrar las marcas:
$_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product)
Estoy usando Magento 1.7.0.2.
Solución
Diagnóstico de su problema real:
- Asegúrese de que la colección de productos utilizada para la búsqueda incluya el atributo del fabricante o que el atributo del fabricante esté configurado en el backend para mostrar en el frontend (ver captura de pantalla a continuación).
- Asegúrese de que el
manufacturer
ATTR está configurado para el Vista de tienda apropiada! En la vista de edición de productos de catálogo de gestión, asegúrese de que el menú desplegable se esté configurando para el valor de la vista de la tienda, no la tienda/sitio web/vista predeterminada. - Asegúrate de que te reintexen. Si estás en CE, ejecute el indexador manualmente. Si está en EE, asegúrese de que sus índices se renovan de Cron o Vía
$ php shell/indexer.php reindexall
. - Limpia todos tus cachés. Almacenamiento de almacenamiento de caché.
rm -rf var/cache
y todas las cosas destructivas. Verifique la existencia de un/tmp/magento
carpeta. - Desactivar/habilitar el catálogo plano y el reindex.
Habilitando un atributo para frontend/producto/visibilidad de la colección:
Por qué sucede esto:
Entonces, hay un razón válida Por qué Magento devuelve "no" cuando no hay datos disponibles. El método getFrontend
Devuelve un objeto que es una subclase de Mage_Eav_Model_Entity_Attribute_Frontend_Abstract
.
En el método getValue
, si no hay opciones disponibles / establecidas, es predeterminado que salga boolean. Por lo tanto, el valor de "no", que es el equivalente booleano frontend de 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');
//....
Una vez que se realizan los puntos de solución de problemas anteriores, si aún recibe "no" y es una respuesta apropiada (por ejemplo, no tiene fabricante establecido en un producto y, a propósito), es posible que desee probar condicionalmente la salida antes de hacer eco:
$value = $_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product);
echo $value=="No" ? "" : $value;