Как я делал две цены в webasyst

В один прекрасный день после запуска сайта на базе Webasyst Shop-Scrypt, появилась задача сделать две цена для товаров — оптовую и розничную. Обладая небольшими, чуть ли не нулевыми, знаниями программирования было решено перерыть рунет в поисках готового решения. Но как оказалось позже, проще самому было написать чем достучаться до пользователей десятков форумов и блогов.

Просидев два дня в изучении кода скрипта, были внесены следующие изменения:

-розничная цена осталась без изменения
-оптовая цена была загружена в «ячейку» старая цена
-были созданы группы покупателей: опт и розница

Для отображения оптовой цены, пользователя достаточно перетянуть в группу покупателей «Опт», заранее соданную, и все готово!

Для внесения изменений в скрипт необходимо узнать ID группы Опт! Для этого открываем phpMyAdmyn и выполняем запрос

SELECT * FROM `SC_custgroups` 


В результате появятся все ваши группы покупателей, нам нужен будет «custgroupID» группы Опт.
Это значение и нужно подставить для сравнения в код ниже вместо цифры 4 (у меня группе Опт соответствует custgroupID=4)!

1. В product_brief.html заменить
<input class="product_price" value="{$product_info.list_priceWithUnit|escape:'html'}" type="hidden" />

на
{if $smarty.session.gruppa_po_id=='4' and $smarty.session.log} 
<input class="product_price" value="{$product_info.list_priceWithUnit|escape:'html'}" type="hidden" />
{else}
<input class="product_price" value="{$product_info.PriceWithUnit|escape:'html'}" type="hidden" />
{/if}


а также заменить
<span class="totalPrice"> 

на
<span class="totalPrice">{if $smarty.session.gruppa_po_id=='4' and $smarty.session.log}{$product_info.list_priceWithUnit}{else}{$product_info.PriceWithUnit}{/if} 


2. В product_info.html добавить код вывода цены:
{if $smarty.session.gruppa_po_id=='4' and $smarty.session.log}Цена опт. {$product_info.list_priceWithUnit}{else}Цена розн. {$product_info.PriceWithUnit}{/if}


3. В cart_functions.php заменить
$q=db_query("select Price from ".PRODUCTS_TABLE." where productID='".$productID."'")

на

if ($_SESSION['gruppa_po_id'] =='4' and $_SESSION['log'] )
{
$q=db_query("select list_price from ".PRODUCTS_TABLE." where productID='".$productID."'");
}
else
{
$q=db_query("select Price from ".PRODUCTS_TABLE." where productID='".$productID."'");
}


4. В registration_functions.php в функции regAuthenticate перед

$_SESSION["log"] = $login;
$_SESSION["pass"] = Crypt::PasswordCrypt($password, null);


добавить

$posetitelya=array();
$gruppa_po_id='0';
$gruppa_po_nazvaniyu="";
$posetitelya=regGetCustomerInfo2($login);
$gruppa_po_id=$posetitelya["custgroupID"];
$gruppa_po_nazvaniyu=$posetitelya["custgroup_name"];
$_SESSION["gruppa_po_id"] = $gruppa_po_id;
$_SESSION["gruppa_po_nazvaniyu"] = $gruppa_po_nazvaniyu;

Вот и все! Желаю удачи.


7 комментариев

avatar
Добрый день! Отличный материал :) Пытаюсь сейчас внедрить себе. Единственный вопрос:
— В product_brief.html заменить
/>
на
{if $smarty.session.gruppa_po_id=='4' and $smarty.session.log}
/>
{else}
/>
{/if}

а также заменить
на
{if $smarty.session.gruppa_po_id=='4' and $smarty.session.log}{$product_info.list_priceWithUnit}{else}{$product_info.PriceWithUnit}{/if}
— а также заменить… на… там было пропущено что-то?

И ещё — получается, при входе человека, которому была присвоена группа «опт», он видит «старую цену» и всё? там будет так и написано «старая цена»? :)

Спасибо! Если не сложно, можете ответить на e-mail: info@stoodio.ru
avatar
1. В product_brief.html заменить
/>
как то не совсем понятно, что заменять, и что выводить тоже не очень(
avatar
Код поправил, проверяйте!
avatar
Спасибо, все работает
комментарий был удален
avatar
Подскажите а можно сделать чтобы вторая цена которая оптовая была в долларах, а первая оставалась по умолчанию той которая в магазине?
avatar
Подскажите в пункте 2. В product_info.html добавить код вывода цены:

нет такого файла есть только fb.product_info.html

или где этот фаил лежит?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.