2010-08-22 14 views
12

tengo Magento 1.3.2 y no tengo problema raro:Magento -> getSku() o getData ('SKU') devuelve una cadena vacía

Cuando estoy en list.phtml, y trato de buscar el SKU mediante el uso de getSku() o getData('sku') obtengo una cadena vacía. getName() funciona. Sin embargo, cuando hago eso desde otras páginas, funciona bien.

I var_dump -Hazlo y no se muestra SKU.

¿Qué puede causar esto?

Respuesta

22

La otra opción es volver a cargar el objeto del producto en el list.phtml con el ID del producto que ya tiene. El código lee algo un poco como:

$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku(); 

Tenga en cuenta que $ _Product es lo que está recibiendo en su colección ya, y tenga en cuenta que getSku entre mayúsculas y minúsculas (como lo son todos los atributos Magento getter/setters).

@ La solución de Prattski es preferible, ya que realmente no desea jugar con la carga/manipulación de los objetos, pero parece que su colección está un poco desordenada. SKU es uno de los campos centrales que existe en la tabla base catalog_product_entity, por lo que sería inusual no cargarse.

+2

Estimados lectores en el futuro, esta solución tiene un gran impacto en el rendimiento si se utiliza dentro de foreach loop over collection. – mkutyba

4

Probablemente sku no se agrega a la lista de atributos cuando se recupera una colección. Supongo que estás hablando del archivo /template/catalog/product/list.phtml. Si es así, entonces necesita extender el archivo de código correspondiente (/app/code/core/Mage/Catalog/Block/Product/List.php).

creo que lo mejor es sobrecargar el método getLoadedProductCollection() para:

public function getLoadedProductCollection() 
    { 
     return $this->_getProductCollection()->addAttributeToSelect('sku'); 
    } 

Esto podría no funcionar, no he podido probarlo, como en mi tienda el SKU y todos los demás atributos son accesibles en el archivo de plantilla list.phtml.

+0

que podría ser una buena solución, pero me recomiendan para no extender la clase, sino más bien utilizar observador de eventos para este (tal vez 'catalog_block_product_list_collection'). – mkutyba

40

me sorprende que nadie le ha dado la respuesta más fácil y más adecuada aún:

ir a su administrador, >> Catálogo >> Atributos de gestión de los atributos. A continuación, edite el atributo 'sku'. Cambie el "Usado en el listado de productos" de 'No' a 'Sí'. A continuación, tendrá acceso a ella desde el objeto de producto en list.phtml con ->getSku()

+0

Ellos están mostrando allí. el getSku() simplemente no funciona ... – Himberjack

+1

Esto fue totalmente mi problema, gracias. – UltimateBrent

+0

buena idea solo la necesito en el pago –

-1

que tenía el mismo problema también, pero probé $ _Product [ 'SKU'] que funciona para mí

-4

$ _Product [ "SKU"]; lo suficiente como para obtener el producto sku.

0

Prueba esto:

<?php 
    $current_product = Mage::registry('current_product'); 
    if($current_product) { 
     $sku = $current_product->getSku(); 
     // output sku 
     echo $sku; 
    } 
?> 
Cuestiones relacionadas