Вход • Регистрация

Скидки для оптовых закупок

  • 21 апреля 2011 г.
  • Сейчас у меня так - создал характеристику, влияющую на цену и в ней вписал цены в зависимости от числа покупок в заказе (список с выбором нескольких значений). Но при отображении выглядит это мягко говоря "хреново". Куча кнопок, отвлекающих внимание. В версии 4.3 хоть можно было выбрать из списка одно значение (число товара). Версия 4.4 удалила эту возможность. Какие будут советы?
    • 22 апреля 2011 г.
    • Переделать функцию form в /modules/shop/shop.view.php
      Раньше их было две, form и form_/
      В первой рабочей функции по умолчанию был выпадающий список, а во второй был вариант как в 4.4, с несколькими кнопками "Купить". Потому, что кто-то просил выпадающий, а кто-то хотел кнопки. В 4.3 переименовал функции и отображение изменилось. А в 4.4 решили убрать, чтобы не путать код. Можете в ТП спросить, как и что поправить, чтобы стал выпадащий список. Можем и тут рецепт написать.
  • 28 апреля 2011 г.
  • Для возвращения старого вида с выпадающим списком делаем следующее:

    1. В модуле /modules/shop/shop.view.php заменяем функцию form на ту, что была раньше -
    Код
    private function form($row, $result)
    {
    if(! $result["buy"])
    return FALSE;

    echo '
    <form method="post" action="'.(isset($result["action"]) ? BASE_PATH_HREF.$result["action"] : '').'" class="shop-form ajax">
    <input name="module" value="shop" type="hidden">
    <input type="hidden" name="addshop" value="'.$row["id"].'">
    <input type="hidden" name="ajax" value="">';

    if(! empty($row["param_select_buy"]))
    {
    foreach($row["param_select_buy"] as $id => $rows)
    {
    $depends = $result["depends"][$id];
    echo '
    <div class="shop-form-param">
    '.$depends["name"].':
    <select name="param'.$id.'" class="inpselect">
    <option value="" rel="">-</option>';
    foreach($rows as $r)
    {
    echo '
    <option value="'.$r["value"].'"'.($r["selected"] ? ' selected' : '').'>'.$depends["values"][$r["value"]].'</option>';
    }
    echo '</select>
    </div>';
    }
    }

    if($row["depend"])
    {
    $depends = $result["depends"][$row["depend"]["param_id"]];
    echo $depends["name"].': <select name="depend" class="inpselect">
    <option value="" rel="">-</option>';
    foreach($row["depend"]["rows"] as $r)
    {
    echo '
    <option value="'.$r["value"].'" rel="'.$r["price"].' '.$result["currency"].'"'.($r == $row["depend"]["rows"][0] ? ' selected' : '').'>'.$depends["values"][$r["value"]].'</option>';
    if($r == $row["depend"]["rows"][0])
    {
    $row["price"] = $r["price"];
    }
    }
    echo '</select>
    <span class="shop-price-depend">'.($row["price"] ? $row["price"].' '.$result["currency"] : '').'</span>';
    }
    echo '
    <input type="text" class="inpnum" value="1" name="count" size="1">
    <input type="submit" class="button" value="'._LANG_BUY.'">
    <div class="errors error"'.($row["error"] ? '>'.$row["error"] : ' style="display:none">').'</div>
    </form>';

    return TRUE;
    }


    2. В данный код добавляем параметр
    Код
    <input name="module" value="shop" type="hidden">
    . В примере выше параметр уже добавлен.

    3. В модуль /js/user-func.js после кода
    Код
    $("form input[name=attachment]").live('change', function() {...
    добавляем
    Код
    $("select[name=depend]").change(function() {
    var price = $(this).find('option:selected').attr('rel');
    $(this).parents('form').find('span').text(price);
    });


    Теперь у нас опять нормальный выпадающий список, а не куча кнопок.
  • 06 мая 2011 г.
  • Далее, для правильного отображения скидок в модуле /modules/shop/shop.view.php после
    Код
    if(! $result["buy"])
    return FALSE;
    if($row["no_buy"] || ! $row["count"] && ! $row["depend"])
    {
    echo '<div class="shop_no_buy">'.$this->_('NO_BUY').'</div>';
    return FALSE;
    }


    вставляем
    Код
    if($row["depend"])
    {
    if(! empty($row["depend"]["rows"][0]["old_price"]))
    {
    echo '<strong><div class="shop_price">'.$this->_('PRICE').': <span class="shop_price_value">'.$row["depend"]["rows"][0]["price"].'</span> <span class="shop_price_currency">'.$result["currency"].'</span></div></strong>';
    echo '<div class="shop_old_price">'.$this->_('OLD_PRICE').': <span class="shop_price_value">'.$row["depend"]["rows"][0]["old_price"].'</span>'
    .' <span class="shop_price_currency">'.$result["currency"].'</span></div>';
    }
    }


    Здесь у нас появляются 2 одинаковых условия "if($row["depend"])" в разных местах. Это сделано специально для правильного отображения цены при выборе значений из списка в характеристике, влияющей на цену. Если их объединить, то при выборе значений будет происходить дублированный вывод цены.
  • 13 мая 2011 г.
  • Я чего-то не полностью понял по поводу 2 моментов.
    1. в /js/user-func.js
    Код
    $("select[name=depend]").change(function() {
    var price = $(this).find('option:selected').attr('rel');
    $(this).parents('form').find('span').text(price);
    });
    уже имеется, а вот конструкции
    Код
    $("form input[name=attachment]").live('change', function() {...
    я чегото не нашёл
    2. по поводу правильного отображения скидок
    Код
    if(! $result["buy"])
    return FALSE;
    if($row["no_buy"] || ! $row["count"] && ! $row["depend"])
    {
    echo '<div class="shop_no_buy">'.$this->_('NO_BUY').'</div>';
    return FALSE;
    }
    эта конструкция находится в функции которая отображает кучу кнопок и мы её заменили на выше предложенное, так что непонятно куда вставлять ниже следующее :|

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум