Я тоже пытался убрать из предложения в карточке товара отсутствующие размеры, или изменить из цвет, что было понятно, что не нужно выбирать, или поменять очередность их вывода, что бы размеры с 0 были низу. Столкнулся с тем, что в shop.view.buy_form.php вывод параметров, влияющих на цену происходит в
foreach ($param["values"] as $value)
{
А в этом перечислении не могу обратиться с запросом количества выводимой характеристики. $price["count"] в нем не выводится.
$price["count"] работает в foreach ($result["row"]["price_arr"] as $price) .
Пробовал создать массив значений количества характеристик внутри foreach ($param["values"] as $value) и выводить его последовательно в окне выбора характеристик ( например получать результат размер 36=1, размер 37=2...). Потом можно как угодно использовать эти цыфры, хоть дописать условие, если=0 не выводить - в общем не важно. Главное что задачу не решил, так как массив значений формировался в порядке очередности характеристик по id, а вывод по алфовиту. В итоге пробывал упорядочить последовательность характеристик и выстроил их по алфовиту на странице самой характеристики. Все заработало, если только у товара одна характеристика. Но у меня встречается товар с двумя характеристиками в одной карточке. Например обувь - Цвет+размер. В этом случае получается чушь.
В итоге плюнул я на это и довольствуюсь терпением покупателя, который просто обязан догадаться, что в открывшейся странице с товаром надпись" Товар отсутствует" не означает, что он отсутстует, - это просто у первой характеристики он кончился. Нужно переключить размер и все появится - и кнопка купить и кнопка отложить.
Код вывода значения $g для случая с одной характеристикой в товаре:
foreach ($param["values"] as $value)
{
if(! empty($result["row"]["param_multiple"][$param["id"]][$value["id"]]))
{
//создание массва количества по характеристикам
$g[0] = 0;
$g = array();
foreach ($result["row"]["price_arr"] as $price)
{
$g[]=$price["count"];
}
//Далее стандартный код
if(! $select)
{
$select = ' '.$param["name"].'<select name="param'.$param["id"].'" class="shop-dropdown inpselect'.($result["row"]["param_multiple"][$param["id"]][$value["id"]] == 'depend' ? ' depend_param js_shop_depend_param' : '').'">';
}
// вставляем значение переменной "$g" рядом с выводимой характеристикой, для проверки
$select .= '<option value="'.$value["id"] .'"'
.(! empty($value["selected"]) ? 'selected' : '')
.'>'.$value["name"].$g[$nn=$nn+1].'</option>';
}
}
// Вывод окошка выбора характеристики
if($select)
{
echo '<div class="shop_form_param">'.$select.'</select></div>';
}