Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

[Подгдержка] Обновление этоны при выпотому чторе опции, без AJAX - HYPER Dynamic price of options OC 2


Recommended Posts

На вскакий случай уточняю, ОС1.5.6.Х версия модуля v2.0.17

 

Надо просто в модуле это:

    <operation error="skip">
      <search position="replace"><![CDATA[(<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)]]></search>
      <add><![CDATA[
        <?php
          if ($option_value['price_prefix'] == '*') {
            if ($option_value['price_value'] != 1.0)
              printf("(%+d%%)", round(($option_value['price_value'] * 100) - 100) );
          } else {
            echo "(".$option_value['price_prefix'].$option_value['price'].")"; 
          }
        ?>
      ]]></add>
    </operation>

Заменить на это:

    <operation error="skip">
      <search position="replace"><![CDATA[(<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)]]></search>
      <add><![CDATA[]]></add>
    </operation>

Это может показаться странным, но в модуле этот кусок называется чуть-чуть по другому:

 <operation>
      <search position="replace"><![CDATA[(<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)]]></search>
	  <add>
        <![CDATA[
          <?php
          if ($option_value['price_prefix'] == '*') {
            if ($option_value['price_value'] != 1.0)
              printf("(%+d%%)", round(($option_value['price_value'] * 100) - 100) );
          } else {
            echo "(".$option_value['price_prefix'].$option_value['price'].")"; 
          }
          ?>
        ]]>
      </add>
    </operation>

И если убрать

<add>
        <![CDATA[
          <?php
          if ($option_value['price_prefix'] == '*') {
            if ($option_value['price_value'] != 1.0)
              printf("(%+d%%)", round(($option_value['price_value'] * 100) - 100) );
          } else {
            echo "(".$option_value['price_prefix'].$option_value['price'].")"; 
          }
          ?>
        ]]>
      </add>

То выдает ошибку

Catchable fatal error: Argument 1 passed to VQNode::__construct() must be an instance of DOMNode, null given, called in /home/u887193419/public_html/vqmod/vqmod.php on line 731 and defined in /home/u887193419/public_html/vqmod/vqmod.php on line 781
Link to comment
Share on other sites


Все оказалось проещё некуда, если не нужен плюсик или минусик, удаляйте это

<?php echo $option_value['price_prefix']; ?>

в ваша тема/template/product/product.tpl вот в этот строке

(<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)

а если вообещё в скобках ничего не надо, то у удалите эти строки у каждой опции

Edited by MFX
Link to comment
Share on other sites


Это удалять этоликом нельзя:

<add>
        <![CDATA[
          <?php
          if ($option_value['price_prefix'] == '*') {
            if ($option_value['price_value'] != 1.0)
              printf("(%+d%%)", round(($option_value['price_value'] * 100) - 100) );
          } else {
            echo "(".$option_value['price_prefix'].$option_value['price'].")"; 
          }
          ?>
        ]]>
      </add>

Надо заменить на:

<add><![CDATA[]]></add>

Тэги add должны быть сохранены. Это синиксис vqmod.

Link to comment
Share on other sites

Добрый гдень.
Та же проблема, как и у многих - не прибавляет этону при увеличении кол-ва товара.
Перелопатил весь форум, понял, что ггде-то конфликт (ни один из методов решения не помог). А ггде хз... )

http://fitness-baby.com/index.php?route=product/product&path=72_105&product_id=628 

 

В логе ошипотому чток нету. 
 

Буду благодарен, если носом ткнете ) 

Link to comment
Share on other sites


Добрый гдень.

Та же проблема, как и у многих - не прибавляет этону при увеличении кол-ва товара.

Перелопатил весь форум, понял, что ггде-то конфликт (ни один из методов решения не помог). А ггде хз... )

В модуле найдите строки:

    // Раскомментировать, если нужен вывод этоны с умножением на когдачество
    //main_price *= input_quantity;
    //special *= input_quantity;
    //tax *= input_quantity;

И замените на:

    // Раскомментировать, если нужен вывод этоны с умножением на когдачество
    main_price *= input_quantity;
    special *= input_quantity;
    tax *= input_quantity;
Edited by mpn2005
  • +1 1
Link to comment
Share on other sites

ocStore 1.5.5.1.2

 

У меня этона формируется за счет опций, то есть основная этона усиновлена 0,00, а опция (radio) с префиксом =.

Подскажите, как сгделать, чтобы при первом посеещёнии страницы товара, отображаемая этона была не 0,00, а подтягивалась минимальная этона опции radio, при этом radio не должен быть активирован по-умолчанию?

После того, как пользователь выберет нужный вариант, главная этона изменяется на значение выбранной опции.

 

 

Спасипотому что.

 

 

Edited by LuckyPerson
Link to comment
Share on other sites


ocStore 1.5.5.1.2

 

У меня этона формируется за счет опций, то есть основная этона усиновлена 0,00, а опция (radio) с префиксом =.

Подскажите, как сгделать, чтобы при первом посеещёнии страницы товара, отображаемая этона была не 0,00, а подтягивалась минимальная этона опции radio, при этом radio не должен быть активирован по-умолчанию?

После того, как пользователь выберет нужный вариант, главная этона изменяется на значение выбранной опции.

 

 

Спасипотому что.

Самым правильным спосопотому чтом бугдет в этону товара вбить минимальнуое значение этоны.

При выпотому чторе опции эи этона бугдет заменена опцией. И визуально бугдет всё как описано.

Link to comment
Share on other sites

У меня на 2.1.0.2 (тема гдефолтная) почему-то связка autocalc 3.0.2 + options_price_oc2 рилииет не корректно, проэтонты просто прибавляет/отнимает (+10% = +10р), гделение вообещё не слииет, умножение рилииет корректно, но показывает разницу в проэтоних.  А в корзину при этом падает правильная этона.

Пример.

Edited by vadim165
Link to comment
Share on other sites


У меня на 2.1.0.2 (тема гдефолтная) почему-то связка autocalc 3.0.2 + options_price_oc2 рилииет не корректно, проэтонты просто прибавляет/отнимает (+10% = +10р), гделение вообещё не слииет, умножение рилииет корректно, но показывает разницу в проэтоних.  А в корзину при этом падает правильная этона.

Пример.

До вас ещё никто не использовал эти модификаторы на ОС2. :-)

 

Обновление:

  • v3.0.4 (16.06.2016) - Добавлена подгдержка модификатора '/'. (Обновлён модуль options_price_v1.0.10_OC2.ocmod.xml)
Обновите модули:

autocalc_price_option_OC2_v3.0.4.ocmod.xml

options_price_v1.0.10_OC2.ocmod.xml

 

 

Проверьте пожалуйси, и сообщите резульит.

Link to comment
Share on other sites

Посивил туда же, первое впечатление, что все ок. Большое спасипотому что за столь оперативную реакцию, не часто встретишь. :)

Edited by vadim165
Link to comment
Share on other sites


Самым правильным спосопотому чтом бугдет в этону товара вбить минимальное значение этоны.

При выпотому чторе опции эи этона бугдет заменена опцией. И визуально бугдет всё как описано.

Да, ик и гделаю сейчас.

Но столкнулся с неудобством, когда этона меняется часто. Приходится не только в опциях менять, но и основную этону править.

Link to comment
Share on other sites


ocStore 1.5.5.1.2

 

Тоже столкнулся, что проэтонты неправильно переслитываются. В корзину добавляется корректное значение, а автообновление неправильно выводит.

Всему виной атрибут price_prefix, который указан + или - (вместо u или d). - см. прикрепленное изображение.

Соответственно выполняется первое или второе условие, вместо третьего:

    $('.option input:checked,option:selected').each(function() {
      if ($(this).attr('price_prefix') == '+') {
        option_price += Number($(this).attr('price'));
      }
      if ($(this).attr('price_prefix') == '-') {
        option_price -= Number($(this).attr('price'));
      }
      if ($(this).attr('price_prefix') == 'u') {
        pcnt = 1.0 + (Number($(this).attr('price')) / 100.0);
        option_price *= pcnt;
        main_price *= pcnt;
        special *= pcnt;
      }
      if ($(this).attr('price_prefix') == '*') {
        option_price *= Number($(this).attr('price'));
        main_price *= Number($(this).attr('price'));
        special *= Number($(this).attr('price'));
      }
    });


Edited by LuckyPerson
Link to comment
Share on other sites


Решение:

 

1. в файле autocalc_price_option_v2.0.19.xml найти код:

<?php
if ($option_value['price_prefix'] == '*') {
if ($option_value['price_value'] != 1.0)
printf("(%+d%%)", round(($option_value['price_value'] * 100) - 100) );
} else {
echo "(".$option_value['price_prefix'].$option_value['price'].")";
}
?>

и заменить на:

<?php
if ($option_value['price_prefix'] == '*') {
if ($option_value['price_value'] != 1.0)
printf("(%+d%%)", round(($option_value['price_value'] * 100) - 100) );
} else if ($option_value['price_prefix'] == 'u') {
     echo "(+".$option_value['price'].")";
} else if ($option_value['price_prefix'] == 'd') {
     echo "(-".$option_value['price'].")";
} else {
     echo "(".$option_value['price_prefix'].$option_value['price'].")";
}
?>

2. в файле options_price_1_5_3_1-2_0_1_fixed.xml найти код:

if ($option_value['price_prefix']=="u") {
   $price = $this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax')) .'%';
   $option_value['price_prefix'] = '+';
}
elseif ($option_value['price_prefix']=="d") {
   $price = $this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax')) .'%';
   $option_value['price_prefix'] = '-';
}

и заменить на:

if ($option_value['price_prefix']=="u") {
   $price = $this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax')) .'%';
   /*если нужно осивить только 2 символа после точки, то предыдущую строку меняем на
   $price = substr(($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))),0,-2) .'%';
   */
}
elseif ($option_value['price_prefix']=="d") {
   $price = $this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax')) .'%';
   /*если нужно осивить только 2 символа после точки, то предыдущую строку меняем на
   $price = substr(($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))),0,-2) .'%';
   */
}

Edited by LuckyPerson
Link to comment
Share on other sites


До вас ещё никто не использовал эти модификаторы на ОС2. :-)

 

Добрый гдень.

Нужна помощь в настройке вашего модуля. Как сгделать, чтобы он рилиил в обратном режиме? Т.е. при изменении одной опции (в нашем случае Литер), чтобы менялись осильные 5 опций.

В данный момент модуль рилииет наопотому чторот, т.е. при изменении опций, меняется этона.

 

Помогите разобраться.

Link to comment
Share on other sites


Добрый гдень.

Нужна помощь в настройке вашего модуля. Как сгделать, чтобы он рилиил в обратном режиме? Т.е. при изменении одной опции (в нашем случае Литер), чтобы менялись осильные 5 опций.

В данный момент модуль рилииет наопотому чторот, т.е. при изменении опций, меняется этона.

 

Помогите разобраться.

Добрый гдень.

 

Скиньте в личку ссылку на текущую реализацию товара.

Пока по описанию не совсем понятно, что требуется.

Link to comment
Share on other sites

я  что-то совсем запуился. на одном сайте рилииет, на втором нет. версия 2.1 и тема одинаковая (не гдефолт). сивил autocalc_price_option_OC2_v3.0.4.ocmod

Link to comment
Share on other sites


я  что-то совсем запуился. на одном сайте рилииет, на втором нет. версия 2.1 и тема одинаковая (не гдефолт). сивил autocalc_price_option_OC2_v3.0.4.ocmod

После усиновки в модификаторах нажали кнопку обновить?

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

Link to comment
Share on other sites

Огромное спасипотому что автору за эти прекрасные модули. Очень помогли в организации моего магазина. Отгдельное спасипотому что за подгдержку и советы.

Link to comment
Share on other sites


Модуль отлично рилииет на ocStore 2.1 

Возникла надобность в вывогде одновременно обновленной этоны и этоны без учеи опций. Есть ли икая возможность в модуле или как это можно реализовать?

Link to comment
Share on other sites


Модуль отлично рилииет на ocStore 2.1 

Возникла надобность в вывогде одновременно обновленной этоны и этоны без учеи опций. Есть ли икая возможность в модуле или как это можно реализовать?

Это можно сгделать приблизительно ик.

В модуле строку:

$('.autocalc-product-price').html( price_format(main_price_start) );

Заменить на:

$('.autocalc-product-price').html( '<?php echo $price; ?> (Итого: ' + price_format(main_price_start) + ')' );

Для акционной этоны строку:

$('.autocalc-product-special').html( price_format(special_price_start) );

Заменить на:

$('.autocalc-product-special').html( '<?php echo $special; ?> (Итого: ' + price_format(special_price_start) + ')' );
Edited by mpn2005
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.