2010-11-12 14 views
14

Próbuję napisać skrypt, który wyznaczy specjalną cenę za produkt z datą początkową i końcową. Po uruchomieniu skryptu z powodzeniem ustawiono cenę specjalną, ale data rozpoczęcia i zakończenia nie jest zapełniana w panelu administracyjnym.Ustawianie ceny specjalnej programowo w Magento

Kod używam jest następująco:

$product = Mage::getModel('catalog/product')->load(114912); 
$product->setSpecialPrice(($product->getPrice() * .90) ); 

$product->setSpecialFromDate('2010-11-01'); 
$product->setSpecialFromDateIsFormated(true); 

$product->setSpecialToDate('2010-11-30'); 
$product->setSpecialToDateIsFormated(true); 

$product->save(); 

Czy ktoś wie, co robię źle tutaj?

+0

Ja też chcę to zrobić. ale nie wiem, gdzie dodać ten kod, pomóż mi. – DRAJI

+0

Ten kod jest przeznaczony do pisania scenariusza, który żyje poza Magento. Ten wpis na blogu powinien pomóc Ci uzyskać tę konfigurację. http://overlycaffeinated.com/blog/2011/09/setting-up-your-magento-scripting-environment/ –

Odpowiedz

23

Właśnie wypróbowałem twój kod na moim katalogu i zadziałało to z niewielką korektą.

Powinieneś zwrócić uwagę na załadowany sklep; Nie można aktualizować niektórych pól produktów, jeśli magazyn ADMIN nie jest aktualnie załadowany (Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);).

<?php 

require_once('app/Mage.php'); 

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 

... 

$product->save(); 
?> 
+1

Dziękuję bardzo. +50 dla ciebie –

+0

To niesamowite .. pomóż mi lot.upvote ze Mnie –

+0

dla magento2 -> '$ objectManager-> get ('Magento \ Store \ Model \ StoreManagerInterface') -> setCurrentStore ('admin');' – MageDev

0

To tylko odgadnięcie, ale czy próbowałeś przekazać znacznik czasu jak z time() i pomijając setSpecialFromDateIsFormated(true)? To powinno spowodować, że model backendu odpowiednio go sformatuje.

+0

Spróbowałem i nie zadziałało. Dzięki za sugestię. –

Powiązane problemy