バンドルされたアイテムの巨大なリストを操作していますが、ユーザーから入力された基準に基づいて、特定のアイテムのみをオプションとして表示したいと考えています。これは、次の行に沿って 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 のみを検索して表示する方法を見つけたいと思います (WHERE product_id = XXXX
オプション ID を取得するクエリに a を追加できます)。ただし、個々のバンドル オプションを検索するための解決策が見つからないようです。誰でもこれを達成するのを手伝ってもらえますか?