OK、私はそれを働かせました。これは、magento から送料見積もりをプログラムで取得するための最終的なコードです。
この関数は、特定の製品、数量、国、郵便番号に対して利用可能なすべての配送料を返します。コードは送料無料を除外しています。これは削除することで元に戻すことができますif($_rate->getPrice() > 0) { ...
<?php
require_once("Mage.php");
umask(0);
ini_set('display_errors',true); Mage::setIsDeveloperMode(true);
Mage::app();
function getShippingEstimate($productId,$productQty,$countryId,$postcode ) {
$quote = Mage::getModel('sales/quote')->setStoreId(Mage::app()->getStore('default')->getId());
$_product = Mage::getModel('catalog/product')->load($productId);
$_product->getStockItem()->setUseConfigManageStock(false);
$_product->getStockItem()->setManageStock(false);
$quote->addProduct($_product, $productQty);
$quote->getShippingAddress()->setCountryId($countryId)->setPostcode($postcode);
$quote->getShippingAddress()->collectTotals();
$quote->getShippingAddress()->setCollectShippingRates(true);
$quote->getShippingAddress()->collectShippingRates();
$_rates = $quote->getShippingAddress()->getShippingRatesCollection();
$shippingRates = array();
foreach ($_rates as $_rate):
if($_rate->getPrice() > 0) {
$shippingRates[] = array("Title" => $_rate->getMethodTitle(), "Price" => $_rate->getPrice());
}
endforeach;
return $shippingRates;
}
echo "<pre>";
// product id, quantity, country, postcode
print_r(getShippingEstimate(1098,100,"GB","SY21 7NQ"));
echo "</pre>";
これは、次のようにドロップダウン リストに入れることができます。
$results = getShippingEstimate(1098,100000,"GB","SY21 7NQ");
$count = -1;
echo "<select>";
foreach ($results as $result):
$count++;
?>
<option value="<?=$count?>"><?=$result["Title"]." - £".$result["Price"]?></option>
<?php
endforeach;
echo "</select>"