OC v3.х Вывожу опции в категориях. Не выводится, ошибок нет и опций нет

  • Автор темы Автор темы arsen
  • Дата начала Дата начала

arsen

Разрушитель (V)
Сообщения
158
Реакции
48
Баллы
969
Что делаю
в контролер добавляю

Код:
$data['options'] = array();
        foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) {
            $product_option_value_data = array();
            foreach ($option['product_option_value'] as $option_value) {
                if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {
                    if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {
                        $price = $this->currency->format(($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false)), $this->session->data['currency']);
                    } else {
                        $price = false;
                    }
                    $product_option_value_data[] = array(
                        'product_option_value_id' => $option_value['product_option_value_id'],
                        'option_value_id'         => $option_value['option_value_id'],
                        'name'                    => $option_value['name'],
                        'image'                   => $this->ave->cropsize($option_value['image'], 50, 50),
                        'price'                   => $price,
                        'price_prefix'            => $option_value['price_prefix']
                    );
                }
            }
            $data['options'][] = array(
                'product_option_id'    => $option['product_option_id'],
                'product_option_value' => $product_option_value_data,
                'option_id'            => $option['option_id'],
                'name'                 => $option['name'],
                'type'                 => $option['type'],
                'value'                => $option['value'],
                'required'             => $option['required']
            );
        }
перед
$data['products'][] = array(
в сам массив добавляю
'options' => $options,
В twig файл шаблона добавил
 
PHP:
    {% if options %}
                                <div class="h6 d-none">{{ text_option }}</div>
                                {% set i = 0 %}
                                {% for option in options %}
                                {% set i = i + 1 %}
                                {% if option.type == 'select' %}
                                <div class="mb-3 {% if not option.product_option_value and not option.required %} d-none {% endif %}">
                                    <div class="form-group{% if option.required %} required {% endif %} m-0">
                                        <label class="control-label" for="input-option{{ option.product_option_id }}"><strong>{{ option.name }}</strong></label>
                                        <select name="option[{{ option.product_option_id }}]" id="input-option{{ option.product_option_id }}" class="custom-select form-control">
                                            <option value="">{{ text_select }}</option>
                                            {% for option_value in option.product_option_value %}
                                            <option value="{{ option_value.product_option_value_id }}">{{ option_value.name }}
                                            {% if option_value.price %}
                                            ({{ option_value.price_prefix }}{{ option_value.price }})
                                            {% endif %} </option>
                                            {% endfor %}
                                        </select>
                                    </div>
                                </div>
                                {% endif %}
                                {% if option.type == 'radio'%}
                                <div class="mb-3 {% if not option.product_option_value and not option.required %} d-none {% endif %}">
                                    <div class="form-group{% if option.required %} required {% endif %} m-0">
                                        <label class="control-label"><strong>{{ option.name }}</strong></label>
                    <div id="input-option{{ option.product_option_id }}" class="mx-n1">
                                            <div class="d-flex flex-wrap">
                                              {% for option_value in option.product_option_value %}
                                              {% if option_value.image %}
                        <div class="mb-2 mx-1">
                          <input
                            type="radio"
                            class="option-image d-none"
                            id="option-{{ option.product_option_id }}-{{ option_value.product_option_value_id }}"
                            name="option[{{ option.product_option_id }}]"
                            value="{{ option_value.product_option_value_id }}"
                            >
                          <label class="border overflow-hidden rounded cursor-pointer d-block m-0 p-0" for="option-{{ option.product_option_id }}-{{ option_value.product_option_value_id }}">
                            <span class="d-block position-relative">
                                                    <svg class="d-block img-fluid" width="50px" height="50px" xmlns="http://www.w3.org/2000/svg"></svg>
                                                    <img class="d-block img-fluid position-absolute t-0 l-0 img-fluid d-block w-100" src="{{ option_value.image }}" {% if option_value.image2x %}srcset="{{ option_value.image }} 1x, {{ option_value.image2x }} 2x, {{ option_value.image3x }} 3x, {{ option_value.image4x }} 4x"{% endif %} alt="{{ option_value.name }} {% if option_value.price %} {{ option_value.price_prefix }} {{ option_value.price }} {% endif %}" data-toggle="tooltip" data-offset="0, 8" title="{{ option_value.name }}{% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}){% endif %}" />
                                                </span>
                          </label>
                        </div>
                                              {% else %}
                        <div class="custom-control custom-radio w-100 mb-1">
                          <input
                            type="radio"
                            class="custom-control-input"
                            id="option-{{ option.product_option_id }}-{{ option_value.product_option_value_id }}"
                            name="option[{{ option.product_option_id }}]"
                            value="{{ option_value.product_option_value_id }}"
                            >
                          <label class="custom-control-label cursor-pointer ml-1" for="option-{{ option.product_option_id }}-{{ option_value.product_option_value_id }}">
                            {{ option_value.name }} <span class="text-secondary">{% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}){% endif %}</span>
                          </label>
                        </div>
                                              {% endif %}
                                              {% endfor %}
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                {% endif %}
                                {% if option.type == 'checkbox' %}
                                <div class="mb-3 {% if not option.product_option_value and not option.required %} d-none {% endif %}">
                                    <div class="form-group{% if option.required %} required {% endif %} m-0">
                                        <label class="control-label"><strong>{{ option.name }}</strong></label>
                                        <div id="input-option{{ option.product_option_id }}" class="mx-n1">
                                            <div class="d-flex flex-wrap">
                                              {% for option_value in option.product_option_value %}
                                              {% if option_value.image %}
                        <div class="mb-2 mx-1">
                          <input
                            type="checkbox"
                            class="option-image d-none"
                            id="option-{{ option.product_option_id }}-{{ option_value.product_option_value_id }}"
                            name="option[{{ option.product_option_id }}][]"
                            value="{{ option_value.product_option_value_id }}"
                            >
                          <label class="border overflow-hidden rounded cursor-pointer d-block m-0 p-0" for="option-{{ option.product_option_id }}-{{ option_value.product_option_value_id }}">
                            <span class="d-block position-relative">
                                                    <svg class="d-block img-fluid" width="50px" height="50px" xmlns="http://www.w3.org/2000/svg"></svg>
                                                    <img class="d-block img-fluid position-absolute t-0 l-0 img-fluid d-block w-100" src="{{ option_value.image }}" {% if option_value.image2x %}srcset="{{ option_value.image }} 1x, {{ option_value.image2x }} 2x, {{ option_value.image3x }} 3x, {{ option_value.image4x }} 4x"{% endif %} alt="{{ option_value.name }} {% if option_value.price %} {{ option_value.price_prefix }} {{ option_value.price }} {% endif %}" data-toggle="tooltip" data-offset="0, 8" title="{{ option_value.name }}{% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}){% endif %}" />
                                                </span>
                          </label>
                        </div>
                                              {% else %}
                        <div class="custom-control custom-checkbox w-100 mb-1">
                          <input
                            type="checkbox"
                            class="custom-control-input"
                            id="option-{{ option.product_option_id }}-{{ option_value.product_option_value_id }}"
                            name="option[{{ option.product_option_id }}][]"
                            value="{{ option_value.product_option_value_id }}"
                            >
                          <label class="custom-control-label cursor-pointer ml-1" for="option-{{ option.product_option_id }}-{{ option_value.product_option_value_id }}">
                            {{ option_value.name }} <span class="text-secondary">{% if option_value.price %} ({{ option_value.price_prefix }}{{ option_value.price }}){% endif %}</span>
                          </label>
                        </div>
                                              {% endif %}
                                              {% endfor %}
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                {% endif %}

                                {% endfor %}
                                {% endif %}
 
И в итоге ни ошибок ни опций не понимаю почему
Рассматривал вариант, что к опциям надо обратиться через продукт product.options - тоже без результата
Где я косячу?
Ps админу - в 3 сообщения вопрос задан ввиду ограничения в 1000 символов, не флуда ради
 
Я так понимаю в ручную решил прокинуть данные? Если есть кинь ссылку, укажи какой шаблон используешь и какой плагин. Или напиши в лс, может что помогу.
 
Проверь для начала результат работы функции
PHP:
$this->model_catalog_product->getProductOptions($this->request->get['product_id'])
Хотя стоп. А откуда у тебя в категории возмьется $this->request->get['product_id'] ?
Сюда нужно динамический айдишник товара вставлять.
 
Назад
Верх