本文整理汇总了PHP中Mage_Catalog_Model_Product_Option::getProductOptionCollection方法的典型用法代码示例。如果您正苦于以下问题:PHP Mage_Catalog_Model_Product_Option::getProductOptionCollection方法的具体用法?PHP Mage_Catalog_Model_Product_Option::getProductOptionCollection怎么用?PHP Mage_Catalog_Model_Product_Option::getProductOptionCollection使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mage_Catalog_Model_Product_Option
的用法示例。
在下文中一共展示了Mage_Catalog_Model_Product_Option::getProductOptionCollection方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getProductOptionCollection
public function getProductOptionCollection(Mage_Catalog_Model_Product $product)
{
$action = Mage::app()->getFrontController()->getAction()->getFullActionName();
if ($action == "catalog_category_view") {
return parent::getProductOptionCollection($product);
}
$helper = Mage::helper('mageworx_customoptions');
$collection = $this->getCollection()->addFieldToFilter('product_id', $product->getId())->addTitleToResult($product->getStoreId())->addPriceToResult($product->getStoreId())->addViewModeToResult($product->getStoreId())->addDescriptionToResult($product->getStoreId())->addDefaultTextToResult($product->getStoreId())->setOrder('sort_order', 'asc')->setOrder('title', 'asc');
$isProductEditPage = Mage::app()->getStore()->isAdmin() && Mage::app()->getRequest()->getControllerName() == 'catalog_product';
if ($isProductEditPage) {
$collection->addTemplateTitleToResult();
}
$collection->addValuesToResult($product->getStoreId());
if (!$isProductEditPage) {
// filter by view_mode
$isRequire = false;
foreach ($collection as $key => $item) {
// 0-Disable, 1-Visible, 2-Hidden, 3-Backend, 4-Admin Only
if ($item->getViewMode() == 0 && !is_null($item->getViewMode())) {
$collection->removeItemByKey($key);
} elseif (!Mage::app()->getStore()->isAdmin() && ($item->getViewMode() == 3 || $item->getViewMode() == 4)) {
$collection->removeItemByKey($key);
} elseif ($item->getIsRequire(true)) {
$isRequire = true;
}
}
if (!$isRequire) {
$product->setRequiredOptions(0);
}
if (count($collection) == 0) {
$product->setHasOptions(0);
}
$customerGroupId = $helper->getCustomerGroupId();
// filter by CustomerGroups
if ($helper->isCustomerGroupsEnabled()) {
$isRequire = false;
foreach ($collection as $key => $item) {
$groups = $item->getCustomerGroups();
if ($groups !== '' && !in_array($customerGroupId, explode(',', $groups))) {
$collection->removeItemByKey($key);
} elseif ($item->getIsRequire(true)) {
$isRequire = true;
}
}
if (!$isRequire) {
$product->setRequiredOptions(0);
}
if (count($collection) == 0) {
$product->setHasOptions(0);
}
}
$storeViewId = Mage::app()->getStore()->getId();
// filter by StoreViews
if ($helper->isStoreViewsEnabled()) {
$isRequire = false;
foreach ($collection as $key => $item) {
$storeViews = $item->getStoreViews();
if ($storeViews !== '' && !in_array($storeViewId, explode(',', $storeViews))) {
$collection->removeItemByKey($key);
} elseif ($item->getIsRequire(true)) {
$isRequire = true;
}
}
if (!$isRequire) {
$product->setRequiredOptions(0);
}
if (count($collection) == 0) {
$product->setHasOptions(0);
}
}
// recheck inventory
if ($product->getRequiredOptions()) {
if ($helper->isInventoryEnabled() && ($helper->getOutOfStockOptions() == 1 || $helper->isSetProductOutOfStock())) {
$isDependentEnabled = $helper->isDependentEnabled();
// checkDependentInventory for parent -> set parent option "Out of stock"
if ($isDependentEnabled) {
foreach ($collection as $option) {
if ($this->getGroupByType($option->getType()) != self::OPTION_GROUP_SELECT || count($option->getValues()) == 0) {
continue;
}
foreach ($option->getValues() as $value) {
if (!$value->getDependentIds()) {
continue;
}
$customoptionsQty = $helper->getCustomoptionsQty($value->getCustomoptionsQty(), $value->getSku(), $product->getId(), $value->getExtra(), $value);
if ($customoptionsQty !== 0 && !$this->checkDependentInventory($collection, $value, $product)) {
$value->setCustomoptionsQty(0);
}
}
}
}
// if all required options "Out of stock" -> set product "Out of stock"
foreach ($collection as $option) {
if (!$option->getIsRequire(true) || $isDependentEnabled && $option->getIsDependent() || $this->getGroupByType($option->getType()) != self::OPTION_GROUP_SELECT || count($option->getValues()) == 0) {
continue;
}
$outOfStockFlag = true;
foreach ($option->getValues() as $value) {
$customoptionsQty = $helper->getCustomoptionsQty($value->getCustomoptionsQty(), $value->getSku(), $product->getId(), $value->getExtra(), $value);
if (is_numeric($customoptionsQty) && $customoptionsQty != 0) {
//.........这里部分代码省略.........