Две цены в WA Shop-Script
Плагин показывает еще одну или еще много цен для каждого продукта в Webasyst Shop-Script
Показывает столько цен, сколько id валют вы ему укажете.
Выводит цены согласно шаблону и форматированию вашей валюты из админ-панели и каждая цена имеет свой класс стиля (.cena1, .cena2….. )
Установка плагина:
- Файл function.cena.php размещаем в папке /kernel/includes/smarty/plugins
<?php function smarty_function_cena( $params, &$smarty ) { $disp=''; $sql='SELECT Price FROM SC_products WHERE productID="'.$params['pid'].'"'; if($r=mysql_query($sql)){ $res=mysql_fetch_assoc($r); $price=$res['Price']; } $curr=explode(',',$params['curr']); $a=1; foreach ($curr as $d){ $sql='SELECT * FROM SC_currency_types WHERE CID="'.$d.'"'; if($r=mysql_query($sql)){ $res=mysql_fetch_assoc($r); $curs=$res['currency_value']; $nprice=round($curs*$price,2); if($res['thousands_delimiter']=='_') $res['thousands_delimiter']=' '; $nprice=number_format($nprice,$res['decimal_places'],$res['decimal_symbol'],$res['thousands_delimiter']); $nprice=str_replace('{value}',$nprice,$res['display_template_ru']); $disp.='<div class="cena'.$a.'">'.$nprice.'</div>'; } $a++; } return $disp; } ?>
- в папке /published/SC/html/scripts/templates/frontend в файле
product_brief.html (карточка товара на странице категории) там где хотите выводить цены, например внутри блока
<div class=»prdbrief_price»>
вызываем плагин {cena pid=`$product_info.productID` curr=’9,7′}
где pid — это ID продукта, curr — перечень id валют, разделенный запятыми. - в файле product_list.html (это списки продуктов) {cena pid=`$_product.productID` curr=’9,7′}
- в файле product_price.html (вывод цены на странице продукта) {cena pid=`$product_info.productID` curr=’9,7′}
Пример использования
Просмотров: 2 770


Здравствуйте
Подскажите плз, а как выяснить id валют?
В выпадающем списке валют value для каждой валюты — это ее id
Сделал все как написано — результата нет
пробую на localhoste
На сервере — все работает.
ОГРОМНОЕ СПАСИБО
Поспешил я…
Выдает 2-е цены на главной, но… Выдает так: 120 грн. $0.00, хотя, курс выставлен (правда, убран выпадающий список выбора валют)
На странице (расширенного) описания продукта — вообще только одна цена — в грн.
Ну в списке товаров, когда страница начинает грузится — подгружаются 2-е цены — грн. и $, а когда, страница загрузится, то, выдает это —
Артем, помогите «добить» до конца плз
В общем, перепробовал и так и так — у меня не работает
перемнные (такие как $product_info.productID) пишутся не в одинарных кавычках ‘ а внутри знаков « (не знаю как они называются)
))
на клавиатуре вместе с буквой Ё
парсер немного съел комментарий — но смысл понятен
Спасибо за отличную помощь…
В место того, чтобы чем-то помочь/объяснить/подсказать, проще всего взять и удалить мои комментарии и, поставить мои вопросы в игнор…
Молодец — так держать…
у тебя все в пордке? а кому я ответил если не тебе
ты не правильно переменные прописал. и еще и хамишь у меня в блоге.
больше ответов тебе от меня не будет — всего доброго
Я абсолютно не хотел тебе хамить — у меня, кроме моего «спасибо», и твоего ответа про мое «хамство», больше ничего нет. Как тогда мне воспринимать?
надо так
{cena pid=`$product_info.productID` curr=’9,7′}а у тебя так
{cena pid='$product_info.productID' curr=’9,7′}Ага, вот де собака порылась… Вся проблема в кавычках…
СПАСИБО!!!! и сорри за непонятку — реально всех комментов нет…
Можно сказать, что заработало, но, есть 2-а вопроса:
1) когда подгружается страница, то валюты отображаются так, как и должны, но, как только страница загрузилась, все валюты, кроме первой!, исчезают… Из-за чего такое может быть?
2) не пойму, в какое именно место, в product_price.html нужно прописать {cena pid=`$product_info.productID` curr=’9,6,7′}…?
Тыкал уже, куда только можно… Безрезультатно…
уберите цену из-под класса prdbrief_price и totalPrice
там цены подгружаются ява скриптом и обновляются при изменении доп. характеритик
по второму пункту не могу ничего подсказать
Все же я «дотыкался»
В файле product_price.html, ищем {$product_info.PriceWithUnit} и заменяем на {cena pid=`$product_info.productID` curr=’9,7′}
Все заработало — ОГРОМНОЕ СПАСИБО.
P. S.
Сорри за непонятку
Здравствуйте!
Делал все по инструкциям и столкнулся с проблемой — сначала появляется цена а потом исчезает.. убрал классы но в результате получил — 0.00 грн. $0.00.
Помогите, пожалуйста, пока я не сошел с ума..
Вы не могли бы мне выслать на почту ваши файлы:
product_brief.html
product_list.html
product_price.html
2broken2 собака жмейл ком
огромнейшее спасибо!
с уважением.
Юрий
не могу. таких сейчас нет в наличии с этой доработкой
чтобы цена не перерисовывалась, нужно убрать классы
если показывать 0, то где-то ошибка в запросе
нужно добавить
echo mysql_error();перед return
это покажет ошибку если она в sql запросе
пожалуйста
Для меня удобно вести учет товара в $, соответственно базовая валюта та же…сейчас у товара 2 цены в у.е и грн.
При оформлении заказа, клиент видит только долларовую цену — это весьма не удобно….стоимость доставки тоже в у.е.
Как это подправить?
- можно ли вслед за ценой в у.е. поставить результат формулы типа: (цена в грн.)= (цена в $) * (курс)
или базовую поставить в у.е. а в витрине по умолчанию грн. ?
Артем, Вы можете подсказать, как правильно реализовать, несколько цен (Ваш вариант полностью работает — спасибо) и, если нет цены у товара, т. е., цена = 0, то, выводилась надпись: Уточняйте у менеджера.
Есть вариант, который работает на «чистом WA»:
В /published/SC/html/scripts/templates/frontend/product_detailed.tpl.html заменить
{if $product_info.Price <= 0}
n/a
{else}
на
{if $product_info.Price <= 0}
Уточняйте цену у менеджера
{else}
Но, когда на сайте используется Ваш вариант (несколько цен), то, вариант с "Уточняйте цену у менеджера" не работает…
после строки
$price=$res['Price'];
вставьте
if($price==0)
return translate(‘fraza’);
а в админ части добавьте строку локализации с id «fraza»
if($price==0)
return translate(‘txtNotPrice’);
вставлять нужно в function.cena.php в папке /kernel/includes/smarty/plugins ?
Если да, то не сработало
txtNotPrice — это из локализации, вместо Вашей ‘fraza’
должно работать
Вот мой код файла function.cena.php в папке /kernel/includes/smarty/plugins
<?php
function smarty_function_cena( $params, &$smarty )
{
$disp='';
$sql='SELECT Price FROM SC_products WHERE productID="'.$params['pid'].'"';
if($r=mysql_query($sql)){
$res=mysql_fetch_assoc($r);
$price=$res['Price'];
if($price==0)
return translate('txtNotPrice');
}
$curr=explode(',',$params['curr']);
$a=1;
foreach ($curr as $d){
$sql='SELECT * FROM SC_currency_types WHERE CID="'.$d.'"';
if($r=mysql_query($sql)){
$res=mysql_fetch_assoc($r);
$curs=$res['currency_value'];
$nprice=round($curs*$price,2);
if($res['thousands_delimiter']=='_') $res['thousands_delimiter']=' ';
$nprice=number_format($nprice,$res['decimal_places'],$res['decimal_symbol'],$res['thousands_delimiter']);
$nprice=str_replace('{value}',$nprice,$res['display_template_ru']);
$disp.='’.$nprice.»;
}
$a++;
}
return $disp;
}
?>
специально проверил. все работает
там нечему ломаться. изменения минимальные
Блин… вот хоть убей, а не работает… Что хоть могет быть из-за чего может не работать?
там нечему ломаться. изменения минимальные
Подскажите, а как вывести 2 цены в одну строку, через разделитель » / » ?
строчку
можно заменить ее на
тогда цены будут в одну строчку. а разделители уже добавляйте куда нравится
Спасибо, все получилось!
В код попал «&» вместо «&» =)
В код попал «amp;» вместо «&» =)
farique, вот спасибо, а то никак не могу понять в чём дело.
Артем, а вам большое спасибо за интересные фитчи. давно пользуюсь!
Артем, добрый день.
Меня интересует решение похожей задачи.
Как бы переделать ваш плагин так, чтобы выводились несколько цен одной валюты?
Пример цен на товар:
Розница, Опт, Дилер, Супер дилер, Мега дилер
Очень жду ответа.
если их можно рассчитать, тот тут ничего сложно. нужно будет просто сделать вывод новых цен
если их нужно вводить для каждого товара, тот тут немного сложнее — с добавлением полей в таблицу товара.
Т.е. это можно решить добавлением дополнительных полей к таблице.
А как организовать выборку из БД с помощью Smarty?
выборка с помощью php и передача переменных в шаблон smarty
или плагином. тогда можно просто вызывать плагин из smarty, а в php файле выводить все, что нужно
А примерчик можно какой-нть?
PHP я знаю, не знаю как со Smarty работать.
Все примеры описаны на этом сайте, в руководстве http://easyweb.org.ua/shop-script/manual4/ или на сайте смарти
там есть толковая документация
у меня ошибка
Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE in ……
kernel/includes/smarty/plugins/function.cena.php on line 3
поблема
вызываю
{cena pid=`$product_info.productID` curr=’6,9’ }
выводит
18,213.10 грн.
то есть одну цену
спасибо все работает
при копировании кодировка изменила символы