Наконец то я каким то чудом смогла добавить отображения опций в модули, а так же в карточке в сопутствующие товары, но есть проблема...
И так что нужно чтоб опции отображались в сопутствующих товарах:
1. контролер catalog/controller/product/product.php
Находим код:
$data['products'][] = array(
и сразу над ним пишем так:
$options = array();
foreach ($this->model_catalog_product->getProductOptions($result['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->model_tool_image->resize($option_value['image'], 50, 50),
'price' => $price,
'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']
);
}
2. Шаблон catalog/view/theme/default/template/product/product.twig
точный вывод зависит от шаблона но где то во внутрь после строчек:
{% if products %}
<h2 class="home-heading text-center">{{ text_related }}<span class="head-bottom"></span></h2>
<div class="pro-nepr row thummargin">
<div id="related" class="owl-carousel owl-theme">
{% for product in products %}
Обычно перед кнопкой покупки, добавляем код:
{% if product.options %}
{% for option in product.options %}
{% if option.type == 'text' %}
<div class="form-group{% if option.required %} required {% endif %}">
<label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label>
<input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" />
</div>
{% endif %}
{% endfor %}
{% endif %}
Собственно все, теперь опции красиво отображаются в всех сопутствующих товарах...
Обратите внимание что в примере только опция вида текст:
{% if option.type == 'text' %}
<div class="form-group{% if option.required %} required {% endif %}">
<label class="control-label" for="input-option{{ option.product_option_id }}">{{ option.name }}</label>
<input type="text" name="option[{{ option.product_option_id }}]" value="{{ heading_title }}" placeholder="{{ option.name }}" id="input-option{{ option.product_option_id }}" class="form-control" />
</div>
{% endif %}
но по аналогии можно и любую другую или же все виды опций вывести, мне же нужен был именно текст...
В общем как оказалось все легко и просто, но тут для меня и закончились радостные эмоции...
Дело в том что отобразить опции я то отобразила но при клике по кнопке купить происходит следующее:
Если в товаре опция не обязательная, то товар падает просто в корзину, но без выбранной опции, ну а если опция обязательная то соответственно бросает на страницу данного товара....
То есть опция не выбирается.
Я понимаю что проблема в javascript и самой кнопке, то есть нужно изменить кнопку ее вызов а так же добавить соответствующий код javascript , но вот какой код ума не приложу, нашла куча примеров в интернете но все они для 2 или 1.5 ветки, а для моей третьей версии ничего нету....
Подскажите пожалуйста какой в третьей версии javascript нужно прописать чтоб опции выбирались....?