Тоже сейчас актуальная тема.
Я решил попробовать связать добавив в опции и в карточку товара поле "родительская опция".
в таблицу базы product_option_value добавил поле product_parent_option_value_id.
В модели продукта в функции public function getProductOptions($product_id) {
.........................
foreach ($product_option_value_query->rows as $product_option_value) {
$product_option_value_data[] = array(
'product_option_value_id' => $product_option_value['product_option_value_id'],
'option_value_id' => $product_option_value['option_value_id'],
'name' => $product_option_value['name'],
'image' => $product_option_value['image'],
'quantity' => $product_option_value['quantity'],
'subtract' => $product_option_value['subtract'],
'price' => $product_option_value['price'],
'price_prefix' => $product_option_value['price_prefix'],
'points' => $product_option_value['points'],
'points_prefix' => $product_option_value['points_prefix'],
'weight' => $product_option_value['weight'],
'weight_prefix' => $product_option_value['weight_prefix'],
'product_parent_option_value_id' => $product_option_value['product_parent_option_value_id'],
);
}
В контоллере продукта после $product_options = $this->model_catalog_product->getProductOptions($result['product_id']);
foreach ($product_option['product_option_value'] as $product_option_value) {
$option_value_data[] = array(
'product_option_value_id' => $product_option_value['product_option_value_id'],
'option_value_id' => $product_option_value['option_value_id'],
'name' => $product_option_value['name'],
'price' => (float)$product_option_value['price'] ? $this->currency->format($product_option_value['price'], $this->config->get('config_currency')) : false,
'price_prefix' => $product_option_value['price_prefix'],
'product_parent_option_value_id' => $product_option_value['product_parent_option_value_id'],
и в виде продукта
.........
<?php foreach ($product_option['product_option_value'] as $product_option_value) { ?>
<tbody id="option-value-row<?php echo $option_value_row; ?>">
<tr>
<td class="left">сюда еще не придумал как получать родительскую опцию по product_parent_option_value_id</td>
<td class="left"><select name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][option_value_id]">
</select>
<input type="hidden" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][product_option_value_id]" value="<?php echo $product_option_value['product_option_value_id']; ?>" /></td>
и там же при добавлении новой строки
function addOptionValue(option_row) {
html = '<tbody id="option-value-row' + option_value_row + '">';
html += ' <tr>';
html += ' <td class="left"></td>';
html += ' <td class="left">сюда хочу вывести список с вариантами родительской опции выбранной в предыдущей закладке - пока не хватает ума как это сделать</td>';
html += ' <td class="right"><input type="text" name="product_option[' + option_row + '][product_option_value][' + option_value_row + '][quantity]" value="" size="3" /></td>';
У меня к каждому цвету идет размер.В итоге имею первая закладка с опциями цветов.
Вторая закладка РАЗМЕР с родительским полем цвет и опцией размер.
Пока только наброски ....