Выбор характеристики товара для помещения в корзину из просмотра категории.

День добрый.
У нас в магазине на старом скрипте из просмотра категории товаров изначально можно выбирать какой размер стекла покупатель может положить в корзину - целый лист или половинку, сделать это можно не заходя в раздел конкретного продукта, например тут http://vitrage.su/index.php?categoryID=196 , под каждым товаром есть выпадающее меня с возможностью выбора и соотвествующей цены. В новом же скрипте выбрать целый лист или половинку можно только при открытии конкретного продукта, при открытии категории в корзину положить можно товар, но новичкам будет непонятно, что они положили в корзину целый лист или половинку http://ss5.vitrage.su/category/katalog/189/rr/ . Вопрос, можно ли в SS5 для данных товаров возможность выбора характеристики товара (целый лист или половинка) вынести сразу в категорию, в которой он находится, чтобы все было сразу понятно для клиента. Спасибо!

1 ответ

  • 1
    Леонид Вакуленко Webasyst 26 сентября 2013 10:24 #
    Это возможно. Есть способ простой, а-ля "синяя изолента", и есть способ очень сложный, но аккуратный и правильный.

    Простой способ состоит в том, чтобы в шаблоне 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() :)

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите