Question

Je voudrais être en mesure de voir les attributs supplémentaires dans les éléments de commande. Jusqu'à présent, je suis dans la vente / commande / Voir / / renderer / default.phtml - et j'ai les attributs avec cet extrait:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $_item->getSku(), array('cost'));
echo $product->getCost();

Mais cet attribut est le prix de revient, et je veux qu'il apparaisse comme un prix, non lige 66,000 - Y at-il une meilleure solution? La même chose vaut pour les autres attributs, leur numéro d'attribut est affiché à la place de leur nom, comme si elle était un attribut de couleur, il dirait 2595 au lieu de noir.

UPDATE

Avec cette I'am maintenant en mesure de voir les fournisseurs:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $_item->getSku(), array('suppliers'));
echo $product->getAttributeText('suppliers');
Était-ce utile?

La solution

Réfléchissons cela par:

L'année 2010 est

  • Un ordre est créé dans votre magasin pour un iPhone 3GS
  • Les charges d'administration de l'ordre à des fonds de capture et générer l'expédition
  • Le client reçoit l'ordre à l'heure et il est heureux.

Avance rapide à 2013

Le contrat du client est et veut mettre à niveau et d'acheter un nouvel iPhone. Vous demandez le numéro de contrat. Ils ne connaissent pas leur numéro de compte; pas de problème, vous chercher sur l'ordre d'origine.

Vous chargez l'ordre de regarder et BAM:

PHP Fatal error: cannot call method getData on a non-object.

Pourquoi ?! Qu'est-il arrivé * ?

Le produit n'existe plus dans le magasin. Le produit a été supprimé par il y a votre âge équipe de merchandising parce que vous ne vendez plus de l'iPhone 3GS. Bien sûr, le produit a été autour depuis quelques années et peut-être il a été désactivé ou répertorié comme en rupture de stock. Mais un jour est venu et que quelqu'un a décidé de le supprimer et maintenant vous essayez de charger le modèle de produit et obtenir un attribut de celui-ci.

Eh bien, je suppose que vous êtes hors de la chance, alors.


Ceci est un simple cas de « Je suis désolé Mario mais notre princesse est dans un autre château » - l'information produit est volatile. Produits un jour sortir de la mode, à court de stock, les fournisseurs meurent, ou les droits de douane à l'importation / FDA changement et vous ne pouvez plus faire ou vendre l'objet.

Pour atténuer le problème à la main, nous devons copier l'information pertinente à la vente se citent et éventuellement à l'ordre de vente. Je sais, je sais, cela va à l'encontre tout ce que vous pensiez que vous étiez au courant de la normalisation . Mais le problème comme je l'ai expliqué, il est assez simple et la seule solution consiste à ne pas permettre aux administrateurs de produits supprimer ou à des informations en double tel qu'il était au moment de l'achat du client .

Un autre exemple serait si vous ne l'avez suppression que l'iPhone 3GS; au lieu que vous avez renommé pour iPhone 4, puis 4S, puis 5. Vous ne voudriez pas revenir 4 ans plus tard et regarder comme si le client a acheté un iPhone 5 en 2010, maintenant, voulez-vous?

Au contraire, vous aurez envie de ces informations magasin puis récupérer à partir du modèle de vente. Cela a été répondu à une demi-douzaine de fois sur Magento.SE - voici quelques-unes:

https://magento.stackexchange.com/a/3810/336

https://magento.stackexchange.com/a/3812/336

http://www.atwix.com/ magento / / custom-produit attribut quote-order-item

Lorsque vient le temps, vous aurez envie de charger l'attribut sur le chiffre d'affaires / modèle de commande en tant que tel:

$order = Mage::registry('current_order');
$suppliers = $order->getSuppliers();
$cost = $order->getCost();

Bien sûr, cela se fait à partir d'un fichier modèle qui est rendu par un bloc qui est ajouté à votre page de vue de la commande dans un module personnalisé.

Ceci est trop de travail

Vous avez raison; mais il est correct approche.

Vous porterez plutôt utiliser options personnalisées . Enregistrer les attributs en question aux options objet dans l'élément de citation au moment de la commande et lorsque l'ordre est affiché dans le back-end, vous devriez voir toutes les options énumérées dans la vue de l'ordre.

Tim a une grande conférence sur la façon d'accomplir ceci:

http://vimeo.com/62770300

Conclusion

Magento est difficile, non? Je suis heureux que nous ayons StackExchange. :) À la vôtre.


* Ceci est probablement l'exemple le plus désastreux des fonctionnalités mal mises en œuvre; en réalité, les plus récents informations seraient probablement affichées comme toute personne normale et saine d'esprit ne remettrait pas Mage::getModel('catalog/product')->load($id); à nouveau sur la page lorsquele produit est déjà chargé. Droite? Droit!

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top