tl; dr: Odpowiedź na to pytanie zależy od złożoności w zależności od rodzaju produktu (konfigurowalny, prosty, etc.).Może to wpłynąć na sposób konfiguracji katalogu i ustawić prostą widoczność produktu. Jeśli wszystko, co masz w swoim katalogu, to proste elementy, to zadanie jest bardzo proste. Ponadto: patrz edytuj na końcu.
Istnieje wiele scenariuszy do rozważenia. Na przykład, jeśli dodasz do koszyka element konfigurowalny, wycena będzie zawierała dwa elementy wyceny dla każdej opcji: jeden element cudzysłowu dla konfigurowalnego produktu nadrzędnego, który będzie zawierał informacje o ilości opcji i jeden element wyceny, który zapewni proste dane produktu opcji. Elementy pakietu będą miały element pakietu nadrzędnego, a także prosty element dla każdej opcji pakietu.
Sprowadza się to do tego, że musisz zdecydować, w jaki sposób reprezentujesz ilość każdego rodzaju produktu dla użytkownika; na przykład, czy chcesz reprezentować ten sam model koszuli co jeden element zamówienia o dowolnej wielkości, czy też chcesz je rozdzielić dla każdego rozmiaru (ten ostatni jest tym, w jaki sposób Magento renderuje je w obszarach koszyka/recenzji).
Polecam dodać produkty do koszyka, a następnie za pomocą tego w frontend, aby zobaczyć dane artykuł Cytat:
<?php
include 'app/Mage.php';
Mage::setIsDeveloperMode(true);
Mage::app(); // Mage_Core_Model_App
Mage::getSingleton('core/session', array('name'=>'frontend'));
$quote = Mage::helper('checkout/cart')->getCart()->getQuote();
echo count($quote->getItemsCollection());
foreach ($quote->getItemsCollection() as $item){
Zend_Debug::dump($item->debug());
}
Polecam stosując zainstalować z przykładowych danych i dodając różne ilości każdego rodzaju produktu do koszyka. Na podstawie tego + wyjście z powyższego kodu zobaczysz, że masz kilka podejść i pułapek w miarę przechodzenia. Zakłócający scenariusze gdy masz następujące elementy:
- KONFIGUROWANE
- Dla każdej opcji, będziesz miał konfigurowalny produkt jako elementu i prosty produkt, z którego wywodzi się opcja jako przedmiot. Jeśli chcesz wyświetlić całkowitą liczbę przez konfigurowalnego rodzica, musisz się zgadzać całkowitą konfigurowalny Ilość w pętli:
kod:
$configurables = array();
// ...then, inside your foreach
if($item->getProductType() === 'configurable'){
if(isset($configurables[$item->getProductId()])){
//add to the other options' quantity
$configurables[$item->getProductId()] += $item->getQty();
}
else {
$configurables[$item->getProductId()] = $item->getQty();
}
}
- Zgrupowane przedmioty
- Proste produkty, które są dodawane do oferty w ramach zgrupowanego przedmiotu, są oddzielone od prostych pozycji dodawanych indywidualnie ly i inne grupy, do których mogą należeć.Jeśli chcesz agregować te możesz pętli tak:
Kod:
$grouped = array();
// ...then, inside your foreach
if($item->getProductType() === 'grouped' || $item->getProductType() === 'simple'){
if(isset($grouped[$item->getProductId()])){
//add to the other options' quantity
$grouped[$item->getProductId()] += $item->getQty();
}
else {
$grouped[$item->getProductId()] = $item->getQty();
}
}
- Bundle przedmioty
- Bundle pozycji produkt ofertowe są reprezentowane przez jednego produkt dla produktu pakowanego i oddzielić proste produkty dla każdej opcji. Proste produkty mają zapisane informacje ilościowe. Proste elementy mają nadrzędny identyfikator produktu, który powraca z powrotem do elementu oferty produktu pakietowego, tak jak robią to przedmioty z konfigurowalnym produktem z ofertą towarów.
Widać, że obsługa wszystkich scenariuszy jest kłopotliwe. Chciałbym móc powiedzieć, że łatwiej jest to zrobić za pomocą modeli zasobów, ale faktem jest, że w bazie danych tabela sales_flat_quote_item_option
przechowuje informacje o ilości w kolumnie zserializowanych danych, więc musisz przeciągnąć rzeczy do PHP, aby uzyskać wszędzie z nimi (co jest zrobione dla ciebie poprzez model zasobów).
Przykro nam, że jest to tak długa odpowiedź, ale możesz zobaczyć, że w oparciu o konfigurację katalogu, musisz dokładnie rozważyć i przetestować, aby upewnić się, że masz pod ręką swoje bazy.
EDIT:Starając się być dokładny, nie udało mi się wspomnieć, że należy spojrzeć do tabeli sales_flat_quote_item
. W zależności od wymagań można z łatwością korzystać z danych w nim, aby szybko, z wdziękiem i wydajnie modelować dane potrzebne do osiągnięcia wymagań wyświetlania.
otrzymuję ten błąd: fatal error: Zadzwoń do getStoreId funkcji członka() w sposób wolny od obiektu w/app/code/core/Mage/Sales/Model/Mysql4/Quote/Item/Collection.php on line 67 – Bizboss
Będziesz mieć problemy z tym, ponieważ oferta będzie oczekiwać, że obiekt sklepu zostanie załadowany. Jeśli używasz tego kodu "na zewnątrz" Mage :: run(), użyj 'Mage :: getSingleton ('core/session', array ('name' => 'frontend'));' – benmarks