Автор Тема: Изменение цены после выбора комбинации  (Прочитано 1491 раз)

17 Май 2014, 18:01:58
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Была задача вывести комбинации в списке товаров, сделал это, исправив CategoryController.php и product-list.tpl, написал свой js скрипт для изменения цены при выборе комбинации, это всё работает, но проблема в том, что при добавлении товара в корзину, цена добавляется старая без влияния комбинации. Помогите пожалуйста, как это можно исправить? Какой скрипт и откуда берёт цену для добавления в корзину?
18 Май 2014, 12:55:23
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
product.js
В нем функции, которые менют цены, картинки, при выборе разных атрибутов
18 Май 2014, 13:12:22
Ответ #2
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Для показа аттрибутов на странице категоии (список товаров), нужно изменить products-list.tpl и CategoryController.php,
В файле CategoryController.php добавить новую функцию
public function getProductAttributeCombinations($products) {
    $combinations = array();

    foreach($products as $product)
    {
        // load product object
        $product = new Product ($product['id_product'], $this->context->language->id);

        // get the product combinations data
        // create array combinations with key = id_product
        $combinations[$product->id] = $product->getAttributeCombinations($this->context->language->id);
    }

    return $combinations;
}
и изменить
public function initContent()
{
    parent::initContent();
    $products = $this->category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay);
    $combinations = $this->getProductAttributeCombinations($products);
    $this->context->smarty->assign('combinations', $combinations);
}
В файле products-list.tpl добавить вывод аттрибутов
{foreach from=$combinations key=k item=comb}
    {if $k = $product.id_product}
        <p class="comb_title">{$comb.group_name}</p>
        <select>
        {foreach from=$comb item=attr}
            <option value="{$attr.id_attribute}">{$attr.attribute_name} {l s=': +'} {convertPrice price=$attr.unit_price_impact}</option>
        {/foreach}
        </select>
    {/if}
{/foreach}
Больше ничего делать не нужно, должно работать.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
18 Май 2014, 13:18:21
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Добавление товара в корзину - ajax-cart.js
$('.ajax_add_to_cart_button').unbind('click').click(function()
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
18 Май 2014, 13:23:59
Ответ #4
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо вам за ответы, но я это всё сделал, и цена не связывается с комбинациями, пробовал простыми функциями js влиять на цену, но в корзину всё равно добавляется стандартная цена без влияния.