Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как можно сделать таблицу из опций (размерную сетку)?


nashivan

Recommended Posts

Есть размерная сетка на opencart 2.3, ее нужно повторить но уже на opencart 3:

на двойке она сделана на чистом php в tpl файле (product.tpl), но opencart 3 поддерживает только twig формат, поэтому скопировать просто php код на тройку не получится (product.twig)

 

Спойлер

image.thumb.png.0e769265e45ef8b870150baa2ddcec98.png

 

Вот код на opencart 2.3:

<table>
                          <?php 
                            $s1 = array();
                            $s2 = array();
                            $arr = array();
                            foreach ($option['product_option_value'] as $option_value) { 
                              list($a, $b) = explode("x", $option_value['name']);
                              $s1[] = intval($a);
                              $s2[] = intval($b);
                              $arr[intval($a)][] = array(intval($b), $option_value['product_option_value_id']);
                            }
                            $id = $option['product_option_id'];
                            $s1 = array_unique($s1);
                            rsort($s1);
                            $s2 = array_unique($s2);
                            sort($s2);
                            foreach ($s1 as &$value) {
                              echo "<tr>";
                              echo "<td>".$value."</td>";
                              foreach ($s2 as &$value2) {
                                echo "<td>";
                                $p = false;

                                foreach ($arr[$value] as &$value3) {
                                  if($value3[0] == $value2){
                                    $p = true;
                                    $val = $value3[1];
                                  }
                                }
                                if ($p) {
                                  echo "<label><input type='radio' name='option[".$id."][]' value='".$val."' required /><span class='stock' val='".$val."' name ='".$value."x".$value2."' vid='".$id."'></span></label>";
                                }
                                else{
                                  echo "<span class='out-stock'></span>";
                                }

                                echo "</td>";
                              }
                              echo "</tr>";
                            }
                            echo "<tr><td></td>";
                            foreach ($s2 as &$value) {
                              echo "<td>".$value."</td>";
                            }
                            echo "</tr>";
                          ?>
                        </table>

В админке опции прописаны вот так: 170x52, 170x54, 170x60, 176x52, 176x54, 176x60, 182x52, 182x54, 182x60 (пример)

 

Спойлер

image.thumb.png.dcae53c302bd05601e4ab439859556da.png

 

Пытался воспользоваться онлайн сервисом http://phptotwig.com/ , но выдает ошибку на строке с explode

Пытался адаптировать сам этот код под твиг, но опыта в этом мало, вот что получилось:

<table>
                <tbody>
                  {% for option_value in option.product_option_value %}
                  <tr>
                    <td>{{ option_value.name | split('x', 2)[0] }}</td>
                    <td><label><input type="radio" name="option[{{ option.product_option_id }}][]" value="{{ option_value.product_option_value_id }}" required=""><span class="stock" val="{{ option_value.product_option_value_id }}" name="{{ option_value.name }}" vid="402"></span></label></td>

                  </tr>
                  {% endfor %}
                  <tr>
                    <td></td>
                    {% for option_value in option.product_option_value %}
                    <td>{{ option_value.name | split('x', 2)[1] }}</td>
                    {% endfor %}
                  </tr>
                </tbody>
              </table>

 

Спойлер

image.thumb.png.a6a80165db461a1270ff58d7cea80209.png

 

Может есть модуль для такой сетки? Или лучше уже допилить код? Подскажите, пожалуйста, в какую сторону нужно копать.

 

Надіслати
Поділитися на інших сайтах


Всю логику формирования таблицы нужно перенести в контроллер.

А на фронте уже делать вывод двумя циклами, по строкам и столбцам.

Простым конвертером тут не обойтись.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.