Afficher l'attribut personnalisé dans backend Afficher la commande
-
16-10-2019 - |
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');
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:
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!