Выбор характеристики товара для помещения в корзину из просмотра категории.
День добрый.
У нас в магазине на старом скрипте из просмотра категории товаров изначально можно выбирать какой размер стекла покупатель может положить в корзину - целый лист или половинку, сделать это можно не заходя в раздел конкретного продукта, например тут http://vitrage.su/index.php?categoryID=196 , под каждым товаром есть выпадающее меня с возможностью выбора и соотвествующей цены. В новом же скрипте выбрать целый лист или половинку можно только при открытии конкретного продукта, при открытии категории в корзину положить можно товар, но новичкам будет непонятно, что они положили в корзину целый лист или половинку http://ss5.vitrage.su/category/katalog/189/rr/ . Вопрос, можно ли в SS5 для данных товаров возможность выбора характеристики товара (целый лист или половинка) вынести сразу в категорию, в которой он находится, чтобы все было сразу понятно для клиента. Спасибо!
У нас в магазине на старом скрипте из просмотра категории товаров изначально можно выбирать какой размер стекла покупатель может положить в корзину - целый лист или половинку, сделать это можно не заходя в раздел конкретного продукта, например тут http://vitrage.su/index.php?categoryID=196 , под каждым товаром есть выпадающее меня с возможностью выбора и соотвествующей цены. В новом же скрипте выбрать целый лист или половинку можно только при открытии конкретного продукта, при открытии категории в корзину положить можно товар, но новичкам будет непонятно, что они положили в корзину целый лист или половинку http://ss5.vitrage.su/category/katalog/189/rr/ . Вопрос, можно ли в SS5 для данных товаров возможность выбора характеристики товара (целый лист или половинка) вынести сразу в категорию, в которой он находится, чтобы все было сразу понятно для клиента. Спасибо!
2 ответа
Простой способ состоит в том, чтобы в шаблоне index-thumbs добавить для каждого продукта внутрь форм вида <form class="addtocart" ...> вот такой селектор:
<pre>{if $p.sku_type && // $p.type_id - тип товара, для которого нужно показывать этот селектор // }
<select class="sku-feature" name="features[8]">
<option value="18" selected="">пол листа (61х61см)</option>
<option value="17">целый лист (61x122см)</option>
</select>
{/if}</pre>
IDшники 8, 17 и 18, и проверка $p.type_id тупо зашиты в код шаблона. Это ужасно с точки зрения хорошего кода. Придётся менять код шаблона при изменении настроек типов и характеристик. Но это сработает. Это синяя изолента.
Аккуратный и правильный способ очень сложен. Я опишу примерный план.
Идея в том, чтобы добавить тот же самый селектор в ту же самую форму, но честно подгружать ID и строки из базы. Основная наша проблема в том, что нужные данные - характеристики - не подгружаются в шаблон списка. Чтобы добыть их из базы, надо сделать примерно следующее.
<pre>{$product_features = shopCustom::getProductFeaturesSelectable(array_keys($products))}</pre>
shopCustom - это класс, который нам придётся создать, и написать метод getProductFeaturesSelectable() который вернёт нужные данные по product_ids, которые мы туда передали. Результат работы этого метода, т.е. $product_features, должен выглядеть как-то так:
<pre>
array(
...,
product_id => array(
...,
feature_id => array(
... data from shop_feature table ...,
'values' => array(
...,
feature_value_id => value // data from shop_feature_values_* depending on feature type
...,
)
),
...
),
...
)
</pre>
Аналогичный набор данных собирается в похожий массив для одного продукта вот тут: lib/actions/frontend/shopFrontendProduct.action.php - массивы $features_selectable, $sku_selectable. Так вот надо сделать примерно то же самое, но для набора product_id. Предполагаю, что это потребует глубоко закопаться в исходники Магазина, написать приличное количество кода, и притом аккуратно, чтобы не появилось тормозов на сайте. Могу только пожелать удачи. Да поможет вам wa_dump() :)