나는 번들 항목의 거대한 목록으로 작업하고 있지만 사용자가 입력 한 기준에 따라 옵션으로 특정 항목을 표시하기를 원합니다. 이것은 단순히의 라인을 따라 if 문을 설정하여 충분히 쉬웠다 :번들 제품의 개별 옵션 ID 얻기
$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
추가). 개별 번들 옵션을 검색하는 솔루션을 찾을 수없는 것 같습니다. 아무도 내가 이것을 성취하도록 도울 수 있습니까?
태그에 입력 할 수있는 제목 줄에 정보를 넣지 마십시오. 태그 시스템은 매우 잘 작동하며 도움을 필요로하지 않습니다. :-) 감사. –
필자는'$ selectionCollection-> addFieldToFilter ('entity_id', array ('in'=> $ returnedproducts));를 사용하여 콜렉션을 더 자세히 필터링하려고 시도했지만 작동하지 않는 것으로 보입니다. 그것으로부터 MySQL 문을 얻으면 잘 동작하지만 컬렉션이로드 되 자마자'addFieldToFilter()'가 제거됩니다 ... – 1000Nettles
'addFieldToFilter()'대신'addAttributeToFilter()'를 시도 했습니까? –