回答
我只給你一個產品的例子。假設您知道所需產品的Sku(例如,讓它爲「ABCDE」)。所以你將能夠獲得該產品的ID。
的代碼將是有點像: -
$productSku = "ABCDE";
$product = Mage::getModel('catalog/product');
$productId = $product->getIdBySku($productSku);
$product->load($productId);
/**
* In Magento Models or database schema level, the product's Custom Options are
* executed & maintained as only "options". So, when checking whether any product has
* Custom Options or not, we should check by using this method "hasOptions()" only.
*/
if($product->hasOptions()) {
echo '<pre>';
foreach ($product->getOptions() as $o) {
$optionType = $o->getType();
echo 'Type = '.$optionType;
if ($optionType == 'drop_down') {
$values = $o->getValues();
foreach ($values as $k => $v) {
print_r($v);
}
}
else {
print_r($o);
}
}
echo '</pre>';
}
我認爲這將讓你上手。
根據變量「$optionType
」中選項的類型,您需要調用另一個嵌套的「foreach
」循環。我曾在文本框,文本字段,下拉菜單上,但沒有在其他類型上。所以我想你需要自己做更多的RnD。
我在查詢自定義選項時也遇到了問題。對於可變尺寸的產品(大,中,小),我想向用戶顯示選項。我在這裏發佈了一個相關的問題:http://stackoverflow.com/questions/5033427/magento-query-for-product-options – John 2011-02-18 17:06:15
謝謝!它適用於我:)然而,我用這個phtml文件,甚至有產品加載,沒有選擇,直到我再次加載它。奇怪,但有效! – s3v3n 2011-07-07 10:37:21
@知識渴望,當我試圖做到這一點,我得到一個錯誤,你能幫助嗎?這是錯誤:'致命錯誤:調用一個非對象的成員函數hasOptions()'非常感謝! – Abude 2013-03-18 18:21:27
對於那些誰希望看到所選的自定義選項後面管理面板在訂單/發票/發貨/貸記通知單, 查找文件: /應用/設計/ adminhtml/[默認] /默認/模板/銷售/ order/view/items/renderer/default.phtml
/app/design/adminhtml/[default]/default/template/sales/order/invoice/view/items/renderer/default.phtml /app/design/adminhtml /[default]/default/template/sales/order/shipment/view/items/renderer/default.phtml /app/design/adminhtml/[default]/default/template/sales/order/creditmemo/view/items/renderer/default.phtml PS:我沒有更改configurated.phtml文件的發票/發貨/貸記通知單
後<?php echo $_item->getSku(); ?></div>
,它的行的結束標記</td>
在什麼地方插入代碼(注意,這是每個文件不同)
插入代碼:
<?php
//---------start:---------------
// if ($allOptions = $_item->_getData('product_options')) { // only for order item
if ($allOptions = $_item->getOrderItem()->getData('product_options')) { // for invoice, shipping, creditmemo
$options = unserialize($allOptions);
if (isset($options['options'])) {
foreach ($options['options'] as $optionValues) {
if ($optionValues['value']) {
echo ' <strong><i>'. $optionValues['label'].'</i></strong>: ';
$_printValue = isset($optionValues['print_value']) ? $optionValues['print_value'] : strip_tags($optionValues['value']);
$values = explode(', ', $_printValue);
foreach ($values as $value) {
if (is_array($value))
foreach ($value as $_value)
echo $_value;
else echo $value;
}
echo '<br />';
}
}
}
}
//---------end:---------------
?>
還要注意的是,在代碼中有一行(如果是句子)只能用於default.phtml文件, ,第二個如果在發票/運輸/貸記憑證文件中起作用。這取決於你發佈代碼的位置,確保正確的句子被註釋掉。
希望這有助於 還要感謝知識渴求其代碼幫了我不少:-) jazkat
請注意,
$product->hasCustomOptions()
在「知識渴求」的解決方案總是做返回false(至少在我的情況下,Magento 1.6.2)。因此if條件永遠不會滿足,下面的塊不會被執行。
非常感謝您的回答。是的,我不得不承認,從Magento v1.5.x開始,它不起作用,但我忘了更新這個答案。所以再次感謝您向我展示正確的方式! – 2012-06-10 15:30:57
@KnowledgeCraving好像你忘了再次更新它:D仍然沒有在你的答案中看到任何提及... – OZZIE 2014-09-12 14:28:23
$quote=$observer->getEvent()->getQuote();
$quoteid=$quote->getId();
$session= Mage::getSingleton('checkout/session');
$getotal = Mage::helper('checkout')->getQuote()->getGrandTotal();
foreach($session->getQuote()->getAllItems() as $item)
{
$sellcheck = Mage::getModel('catalog/product')->load($item->getProduct()->getId())->getissellbool();
$options = Mage::getModel('catalog/product')->load($item->getProduct()->getId())->getProductOptionsCollection();
foreach ($options as $o)
{
$title = $o->getTitle();
$values = $o->getValues();
foreach($values as $v)
{
$mydata = $v->getPrice();
echo 'options price: ' . $mydata;
}
}
}
要訪問購物車上的產品自定義選項,您可以使用此代碼。
只是一個說明 - 你正在加載產品兩次 – 2016-09-13 18:36:48
我希望它能對你有用的獲得產品頁面只自定義下拉值
只需粘貼在該文件下面的代碼在最後
應用程序/設計/前端/基/默認/模板/目錄/產品/查看/ options.phtml
<?php
$product = Mage::getModel("catalog/product")->load($this->getProduct()->getId()); //product id
foreach ($product->getOptions() as $_option) {
$values = $_option->getValues();
foreach ($values as $v) {
print_r($v->getTitle());
echo "<br />";
}
}
?>
對不起現在我有這個解決方案 – Naresh 2013-08-23 09:54:37
我們也可以這樣解決,可以顯示在結帳頁面上。
$items = Mage::getModel('checkout/cart')->getQuote()->getAllVisibleItems();
foreach($items as $product) {
$options = $product->getProduct()->getTypeInstance(true)->getOrderOptions($product->getProduct());
if ($options)
{
if (isset($options['options']))
{
$result = $options['options'];
}
if(count($result)>0){
foreach($result as $key =>$value){
$resultoption = $value['value'];
}
}
}
你可以嘗試在模板/結帳/車/項目/如default.php驗證碼:
if($Product->hasOptions)
{
$optionsArr = $Product->getOptions();
foreach ($optionsArr as $optionKey => $optionVal)
{
$optStr.= "<select style='display:block; clear:both;' name='options[".$optionVal->getId()."]'>";
foreach($optionVal->getValues() as $valuesKey => $valuesVal)
{
$optStr.= "<option value='".$valuesVal->getId()."'>".$valuesVal->getTitle()."</option>";
}
$optStr.= "</select>";
}
echo($optStr);
}
- 1. 如何在magento中以編程方式更新自定義選項?
- 2. 如何在Magento中以編程方式獲得爲項目訂單選擇的自定義選項的SKU
- 3. Magento:以編程方式更新購物車中的商品自定義選項?
- 4. 如何在Magento中以編程方式更新屬性選項?
- 5. Magento以編程方式導入產品添加自定義選項
- 6. 如何使用自定義選項信息將產品以編程方式保存在另一個表中magento
- 7. Eclipse:如何以編程方式獲取啓動首選項
- 8. Magento - 如何獲取我的自定義屬性選項列表?
- 9. 如何在magento 1.9.3中獲得自定義選項值?
- 10. 以編程方式獲取由hook_menu定義的菜單項?
- 11. 在magento中獲取自定義選項下拉大小?
- 12. 我如何取消選擇magento中的自定義選項?
- 13. 以編程方式自定義樣式
- 14. 以編程方式更新/編輯Magento中的屬性選項
- 15. 如何以編程方式獲取由@DeclareRoles定義的角色
- 16. 如何自定義magento中的自定義選項?
- 17. 如何以編程方式在magento中創建貸項憑證
- 18. 如何在magento中以編程方式進行自動裝運?
- 19. Magento。如何通過自定義選項以編程方式添加簡單產品
- 20. 如何以編程方式獲得SAS編碼選項?
- 21. Magento自定義選項
- 22. magento的自定義選項
- 23. 自定義選項Magento
- 24. 以編程方式在多選中設置選定的選項
- 25. 如何以編程方式獲取layout_weight?
- 26. 如何以編程方式編輯選定的子項目?
- 27. 如何以編程方式在TFS中獲取新創建的定義?
- 28. Magento - 分配選項,以編程方式多選屬性
- 29. 如何以編程方式設置選定的選項卡SlidingTabLayout
- 30. 如何以編程方式更改選定的選項卡?
有很多的方式(內置,模塊等)來得到一個定製選項附加到Magento中的產品。如果您讓社區知道您如何添加選項,您將有更好的機會獲得答案。 – 2010-05-13 18:41:05
只需簡單地在php中製作一個產品,並能夠獲得附加到該產品的自定義選項。 – DaveC 2010-05-13 18:54:37
這是導致混淆的術語「自定義選項」。自定義選項如何添加到產品中?通過Magento?通過商業擴展?通過自定義擴展? – 2010-05-13 21:15:22