Получить опции товаров в стандартном модуле featured OC3

Подскажите пожалуйста как в opencart 3 в стандартном (базовом) модуле featured вывести опции товаров

В файл: modification\catalog\controller\extension\module\featured.php

добавил код:

$options = array();
foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) {
    if($option['required']){
        $product_option_value_data = array();
        foreach ($option['product_option_value'] as $option_value) {
            if (!$option_value['subtract'] || ($option_value['quantity'] >= 0)) {
                $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->model_tool_image->resize($option_value['image'], 50, 50),
                    'quantity'                => $option_value['quantity'],
                    'price_prefix'            => $option_value['price_prefix']
                );
            }
        }
        $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,

Для вывода в файле: template\extension\module\featured.twig

в карточку товара добавил код:

{% if product.options %}
    {% for option in product.options %}

    {% if option.type == 'radio' %}
            <div class="groupOptionWrap {% if option.required %} required {% endif %}">
                {#<label class="control-label">
                    {{ option.name }}
                </label>#}
                <div id="input-option{{ option.product_option_id }}" class='groupOptionElements'>
                    {% for option_value in option.product_option_value %}
                        {% if option_value.quantity == "0" %}
                            <div class="groupOption groupOptionDisable">
                                {{ option_value.name }}
                            </div>
                        {% else %}
                            <div class="groupOption">
                                {{ option_value.name }}
                            </div>
                        {% endif %}
                    {% endfor %}
                </div>
            </div>
        {% endif %}
    {% endfor %}
{% endif %}

Но это не сработало, просьба подсказать, если кто знает рабочий вариант

Весь код данного модуля:

<?php
    class ControllerExtensionModuleFeatured extends Controller {
        public function index($setting) {
    
            $this->load->language('extension/module/notify_when_available');
            $data['text_out_of_stock'] = $this->language->get('text_out_of_stock');
            $data['out_of_stock_show'] = $this->config->get('module_notify_when_available_stock');
            $data['out_of_stock_notify'] = $this->config->get('module_notify_when_available_notify');
            
            $this->load->language('extension/module/featured');
    
            $this->load->model('catalog/product');
    
            $this->load->model('tool/image');
    
            $data['products'] = array();
    
            if (!$setting['limit']) {
                $setting['limit'] = 4;
            }
    
            if (!empty($setting['product'])) {
    
    
            $lang = $this->config->get('config_language_id');
            $title = isset($setting['titles']['title'.$lang]) && $setting['titles']['title'.$lang] ? $setting['titles']['title'.$lang] : '';
    
            if (isset($title) && $title) {
                $data['heading_title'] = $title;
            }
    
            if (isset($setting['shuffle']) && $setting['shuffle']) {
                shuffle($setting['product']);
            }
    
                
                $products = array_slice($setting['product'], 0, (int)$setting['limit']);
    
                foreach ($products as $product_id) {
                    $product_info = $this->model_catalog_product->getProduct($product_id);
    
                    if ($product_info) {
                        if ($product_info['image']) {
                            $image = $this->model_tool_image->resize($product_info['image'], $setting['width'], $setting['height']);
                        } else {
                            $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']);
                        }
    
                        if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
                            $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
    
                    $data['priceInt'] = $this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'));
                
                        } else {
                            $price = false;
                        }
    
    
                    $specialSavings =0; 
                
                        if ((float)$product_info['special']) {
                            $special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
    
                    $data['specialInt'] = $this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'));
                    $data['specialSavings'] = round((($data['priceInt']-$data['specialInt'])/$data['priceInt'])*100, 2);
                    $specialSavings = $data['specialSavings'];
                
                        } else {
                            $special = false;
                        }
    
                        if ($this->config->get('config_tax')) {
                            $tax = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price'], $this->session->data['currency']);
                        } else {
                            $tax = false;
                        }
    
                        if ($this->config->get('config_review_status')) {
                            $rating = $product_info['rating'];
                        } else {
                            $rating = false;
                        }
                        $options = array();
                        foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) {
                            if($option['required']){
                                $product_option_value_data = array();
                                foreach ($option['product_option_value'] as $option_value) {
                                    if (!$option_value['subtract'] || ($option_value['quantity'] >= 0)) {
                                        $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->model_tool_image->resize($option_value['image'], 50, 50),
                                            'quantity'                => $option_value['quantity'],
                                            'price_prefix'            => $option_value['price_prefix']
                                        );
                                    }
                                }
                                $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(
                            'product_id'  => $product_info['product_id'],
                            'quantity'  => $result['quantity'],
                            'quantity'  => $product_info['quantity'],
                            'quantity'  => isset($result['quantity']) ? $result['quantity'] : (isset($product_info['quantity']) ? $product_info['quantity'] : 1),
                            'attribute_groups' => $this->model_catalog_product->getProductAttributes($product_info['product_id']),
                            'thumb'       => $image,
                            'name'        => $product_info['name'],
                            'description' => utf8_substr(strip_tags(html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
                            'price'       => $price,
                            'special'     => $special,
                            'specialSavings'     => $specialSavings,
                            'tax'         => $tax,
                            'rating'      => $rating,
                            'options' => $options,
                            'href'        => $this->url->link('product/product', 'product_id=' . $product_info['product_id'])
                        );
        

Ответы (0 шт):