J'ai Magento 1.3.2 et j'ai un problème étrange:
Lorsque je suis dans list.phtml
et que j'essaie d'extraire le SKU en utilisant getSku()
ou getData('sku')
, la chaîne est vide. getName()
fonctionne. Cependant, lorsque je le fais à partir d'autres pages, cela fonctionne bien.
Je var_dump
- édité et aucune référence n'est affichée.
Qu'est-ce qui peut causer ça?
L'autre option consiste à recharger l'objet produit dans le fichier list.phtml en utilisant l'ID du produit que vous avez déjà. Le code lit quelque chose comme:
$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku();
Notez que $ _product est ce que vous obtenez déjà dans votre collection et notez que getSku est sensible à la casse (comme tous les attributs Magento getter/setters).
La solution de @ Prattski est préférable car vous ne voulez pas vraiment vous occuper du chargement/de la manipulation des objets, mais il semble que votre collection soit un peu foirée. La SKU est l’un des principaux champs de la table de base catalog_product_entity
; il serait donc inhabituel de ne pas être chargé.
Je suis surpris que personne ne vous ait donné la réponse la plus facile et la plus appropriée à ce jour:
Accédez à votre administrateur, Catalogue >> Attributs >> Gérer les attributs . Puis éditez le 'sku' attribut. Modifiez le "Utilisé dans la liste de produits" de "Non" à "Oui" . Vous y aurez alors accès à partir de l’objet product dans list.phtml
avec ->getSku()
Sku n'est probablement pas ajouté à la liste des attributs lorsqu'une collection est récupérée. Je suppose que vous parlez du fichier /template/catalog/product/list.phtml. Si tel est le cas, vous devez étendre le fichier de code correspondant (/app/code/core/Mage/Catalog/Block/Product/List.php).
Je pense que votre meilleur pari est de surcharger la méthode getLoadedProductCollection () pour:
public function getLoadedProductCollection()
{
return $this->_getProductCollection()->addAttributeToSelect('sku');
}
Cela pourrait ne pas fonctionner, je n'ai pas pu le tester, car dans mon magasin, le sku et tous les autres attributs sont accessibles dans le fichier de modèle list.phtml.
Essaye ça:
<?php
$current_product = Mage::registry('current_product');
if($current_product) {
$sku = $current_product->getSku();
// output sku
echo $sku;
}
?>