我正在使用选项,以添加一些附加信息,例如图像。我使用 option_type_id 和 option_id 将此数据保存到我自己的表中。现在在前端我想将我自己的表数据加入到默认选项中。所以这些选项带有图像信息。
$_option->getValues()
这个函数返回选项数据,现在我必须在这个函数的实现处生成查询,这样我就可以添加连接来检索我自己的数据。
谢谢
我没有看到一个干净的方法来做到这一点。
这是一个肮脏的方法:在Mage_Catalog_Model_Resource_Product_Option
下面重写并添加这个函数。修改它与你加入。但是,每个产品选项都将加入您的表。您将需要检查某种标志,并且仅在设置了此标志时才添加您的加入。
protected function _getLoadSelect($field, $value, $object)
{
$select = parent::_getLoadSelect($field, $value, $object);
if("do your check here"){
$select->join('your table')
}
return $select;
}
这就是我从中获得成功的原因。
我覆盖了产品的资源集合
class MYC_COPSwatch_Model_Resource_Product_Option_Collection extends Mage_Catalog_Model_Resource_Product_Option_Collection{
public function addValuesToResult($storeId = null)
{
if ($storeId === null) {
$storeId = Mage::app()->getStore()->getId();
}
$optionIds = array();
foreach ($this as $option) {
$optionIds[] = $option->getId();
}
if (!empty($optionIds)) {
/** @var $values Mage_Catalog_Model_Option_Value_Collection */
$values = Mage::getModel('catalog/product_option_value')
->getCollection()
->addTitleToResult($storeId)
->addPriceToResult($storeId)
->addSwatchToResult($storeId) //USED Join in this function
->setOrder('sort_order', self::SORT_ORDER_ASC)
->setOrder('title', self::SORT_ORDER_ASC);
foreach ($values as $value) {
$optionId = $value->getOptionId();
if($this->getItemById($optionId)) {
$this->getItemById($optionId)->addValue($value);
$value->setOption($this->getItemById($optionId));
}
}
}
return $this;
}
可能会为某人节省时间。