我正在使用GIANT捆绑项目列表,但只想根据用户输入的条件显示某些选项作为选项。只需在以下行中设置if语句就足够了:
$returnedproducts = array(21,50,78,23); // THESE ARE PRODUCT IDS.
if ($_product->getTypeId() == 'bundle'){
$selectionCollection = $_product->getTypeInstance(true)->getSelectionsCollection(
$_product->getTypeInstance(true)->getOptionsIds($_product), $_product
);
foreach($selectionCollection as $option) {
if(array_search($option['product_id'], $returnedproducts) !== FALSE){ // ADDED THIS TO FILTER
echo '<li>' . $option->option_id . '</li>';
}
}
}
问题在于,由于列表的大小和其他一些因素,这只会吸收大量资源。我想找到一种方法来查找和显示特定的选项ID,而无需筛选整个列表(可能会向获取选项ID的查询添加WHERE product_id = XXXX
)。但是,我似乎无法找到搜索单个捆绑选项的解决方案。任何人都可以帮我实现这个目标吗?
答案 0 :(得分:-1)
我可能会对此产生一些反对意见,但我发现当你达到Magento的大型收藏品的上限时,你可以做两件事之一。
你可以......
使用sql读取并不是特别危险,因为您不会尝试使用尚未经过彻底测试的代码将某些内容放回高度管理的数据库中。破坏任何东西都很机会。是的,有可能可能出错但您需要权衡使用这样的技巧的成本/收益,这对您的具体案例非常有用。它仍在使用Magento的sql接口,而不是自定义接口。
修改以下代码以提取entity_ids列表或任何您想要查找的内容,并使用该结果创建集合。
// Just in case ---$mysqli = Mage::getSingleton('core/resource')->getConnection('core_write');
$mysqlr = Mage::getSingleton('core/resource')->getConnection('core_read');
$sql = "select * from some_entity_table where some_column = 'somevars'";
$results = $mysqlr->fetchAll($sql);
echo "<PRE>";
foreach ($results as $res)
{
var_dump($res);
}