0 Пользователей и 1 Гость просматривают эту тему.
  • 18 Ответов
  • 1963 Просмотров
*

cvoboda

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Всем привет!
Возможно ли в настраиваемых полях (атрибут корзины) помимо сложения добавить умножение, чтобы свойства товара умножались когда ставишь знак * от начальной цены товара?
Я так понимаю за это отвечает calculationh.php В строке 304 можно заменить в $basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant); + на *, но тогда свойства будут просто умножаться, а как сделать, чтобы когда надо складывались, т.е например пишешь +100 либо *100...

Кто нибудь заморачивался?
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Можно попробовать это:
Код
$basePriceShopCurrency = (substr($variant,0,1)=='+')?($basePriceShopCurrency + doubleval($variant)):($basePriceShopCurrency * doubleval($variant));
« Последнее редактирование: 13.05.2013, 21:57:53 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

cvoboda

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Большое спасибо, но не работает.

Если заменить код $basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant); на Ваш, то значения в настраиваемых полях только умножаются, т.е если поставить просто значение, например "2" или "+2" , то умножается на "2", а если поставить "-2" то умножается на 2 и ставится знак минуса перед значением. Если поставить *2, то ничего не происходит...
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
А к какому типу переменных относятся $variant и $basePriceShopCurrency? Как я понял, они записаны в БД? Если структура поля - numeric, а вы пытаетесь записать туда string (а *2 является string), то вызываете ошибку и ничего не будет происходить.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 724 / 7
  • Все начинается с Value
Код: php-brief
<?php
$a='20';
$b=5;
echo ($a*$b);//100
?>
robert для вас :o
Код: php-brief
<?php
$a=5;
$b='*20';
eval ("\$c =$a$b;");
echo $c;//100
?>
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
robert для вас :o
Спасибо, Федор! Очередной урок от вас  ^-^.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

cvoboda

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
А к какому типу переменных относятся $variant и $basePriceShopCurrency? Как я понял, они записаны в БД? Если структура поля - numeric, а вы пытаетесь записать туда string (а *2 является string), то вызываете ошибку и ничего не будет происходить.
Возможно ли в коде дописать возможность умножения или нет? Ведь работает же функция "+" и "-".
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
Fedor Vlasenko же наглядно показал примеры, вы могли бы уже сами найти ответ.
Код
if(substr($variant,0,1)!=='*'){
$basePriceShopCurrency=$basePriceShopCurrency + doubleval($variant);
}else{
eval("\$basePriceShopCurrency=$basePriceShopCurrency$variant;");
}
Имейте в виду: подразумеваем, что $variant - это та переменная, которая будет иметь префикс "*" или "+".
« Последнее редактирование: 15.05.2013, 09:42:41 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 724 / 7
  • Все начинается с Value
так одной строчки хватит
Код: php-brief
eval("\$basePriceShopCurrency=$basePriceShopCurrency$variant;");
будет обрабатывать строки + - * / и т. д. (Будет выполнять код)
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
так одной строчки хватит
Ну конечно же.
Я думал, что это на случай, когда человек кроме "+ - * /" вдруг что-нибудь еще напишет. Но оказалось, что никакой разницы нет.

P.S. Хотя
Код
<?php
$a=5;
$b='20';
eval ("\$c =$a$b;");
echo $c;//520
?>
« Последнее редактирование: 15.05.2013, 12:09:39 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

cvoboda

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Большое спасибо, но моих тупых мозгов не хватает понять что менять на что...

у меня в коде след:

               
Код
if (!empty($variant)) {
 
                $basePriceShopCurrency=$basePriceShopCurrency + doubleval($variant);
       
$prices['basePrice'] = $prices['basePriceVariant'] = $basePriceShopCurrency;


Как подключить ваш код, в php мягко говоря слабоват...
*

Fedor Vlasenko

  • Живу я здесь
  • 3842
  • 724 / 7
  • Все начинается с Value
Код: php-brief
if (!empty($variant)) {		  
                eval("\$basePriceShopCurrency=$basePriceShopCurrency$variant;");
$prices['basePrice'] = $prices['basePriceVariant'] = $basePriceShopCurrency;
только везде надо писать +число или -число или *число
*

cvoboda

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Код: php-brief
if (!empty($variant)) {		  
                eval("\$basePriceShopCurrency=$basePriceShopCurrency$variant;");
$prices['basePrice'] = $prices['basePriceVariant'] = $basePriceShopCurrency;
только везде надо писать +число или -число или *число


К сожалению, не перемножает(((
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
К сожалению, не перемножает(((
Что именно не перемножает? Пошагово объясните, что вы сделали.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

cvoboda

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Что именно не перемножает? Пошагово объясните, что вы сделали.

Создал два настр поля атрибут корзины для товара

первое, высота: 350мм;500мм;
второе, кол-во секций: 1 секц; 2секц;

Основная стоимость, например 300 руб

первое поле:
500 мм : 0
350 мм : -14

второе:
1секц : 0;
2секц : *2

Если использовать ваш код, то значения меняются только если выбирать между 350 и 500, т.е работает только вычитание
Если выбрать секционность, то умножение не работает не при выборе 350, не при выборе 500 мм.

Придется скорее всего объединять эти два значения, например
350мм - 1 секц
350мм - 2 секц
500мм - 1 секц
500мм - 2 секц

Слишком длиный список получается, чего мне не хотелось, думал, что добавить функцию умножение не сложно.
*

robert

  • Живу я здесь
  • 4950
  • 456 / 20
А если
Код
первое поле:
500 мм : 0
350 мм : *14
? Так работает?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

cvoboda

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
А если
Код
первое поле:
500 мм : 0
350 мм : *14
? Так работает?

Нет, к сожалению...
*

Kumigy

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Ребята, а как победить то, что при сохранении товара все знаки поля удаляются кроме плюса?
если я пишу *100 или /100 у меня после сохранения там 0,0000
*

Kumigy

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
в общем победил я этот недуг, в базе данных нашёл таблицу j25_virtuemart_product_customfields и сменил тип custom_price на варчар.
добавил небольшое условие:
Код
			if(!empty($matches)){
eval("\$basePriceShopCurrency=$basePriceShopCurrency$variant;");
$this->productPrices['basePrice'] = $this->productPrices['basePriceVariant'] = $basePriceShopCurrency;
}else{
$basePriceShopCurrency = $basePriceShopCurrency + doubleval($variant);
$this->productPrices['basePrice'] = $this->productPrices['basePriceVariant'] = $basePriceShopCurrency;
}

это что бы если знак не указан, сложение выполнялось по умолчанию.
в программировании не силён, так что камнями не закидывайте)))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с отображением атрибута корзины в письме

Автор korets77

Ответов: 0
Просмотров: 40
Последний ответ 22.09.2020, 22:42:58
от korets77
Как удалить дочерние товары в карточке товара VM 2?

Автор zeus07

Ответов: 0
Просмотров: 87
Последний ответ 12.05.2020, 14:51:39
от zeus07
[Решено] Вывод других товаров тойже категории в карточке товара

Автор x-render

Ответов: 30
Просмотров: 5654
Последний ответ 06.01.2020, 07:39:31
от Igoritaly
Дчерний товар-&gt;Настраиваемые поля-&gt;Унаследованное поле от родителя

Автор Viktor

Ответов: 2
Просмотров: 203
Последний ответ 18.11.2019, 06:31:06
от Any_Color
Ярлычок на изображение товара, на странице категории

Автор Елeна

Ответов: 43
Просмотров: 856
Последний ответ 25.03.2019, 12:58:41
от Елeна