- Форум
- Расширения Joomla
- Электронная коммерция.
- VirtueMart 2
- Дробные числа товара VirtueMart 2.6.16 (Решено)
Дробные числа товара VirtueMart 2.6.16 (Решено)
8 года 8 мес. назад - 8 года 8 мес. назад #7209 от Роман
Итак, в Virtuemart 2.6 как я сразу понял нельзя покупать товар в таких величинах как 0.1 или 2.5
Но у меня интернет магазин продуктов питания... и там очень нужна такая вещь.
Я нашел как это исправить но вот только в корзине при заказе нельзя заказать если товара меньше 1 выскакивает ошибка
"info
Пожалуйста, введите количество этого товара."
стоит компонент OnePage Checkout, но думаю дело в cart.php
Я его весь уже изнасиловал.... а решения не найти
Прошу помощи добрые форумчане
И еще если кто знает как задать шаг для таких весовых товаров в 0.1 например!?
З.Ы. Может кому пригодится.
В базе данных меняем типы полей с int на float
_virtuemart_products поле product_in_stock
_virtuemart_order_items поле product_quantity
Для того, чтобы при обновлении количества в самой корзине не отбрасывалась дробная часть, в файле \components\com_virtuemart\helpers\cart.php
строку
меняем на
Для того чтобы товар меньше 1 добавлялся в корзину меняем LIMIT с 1 на 0.1 в cart.php
Но у меня интернет магазин продуктов питания... и там очень нужна такая вещь.
Я нашел как это исправить но вот только в корзине при заказе нельзя заказать если товара меньше 1 выскакивает ошибка
"info
Пожалуйста, введите количество этого товара."
стоит компонент OnePage Checkout, но думаю дело в cart.php
Я его весь уже изнасиловал.... а решения не найти

Прошу помощи добрые форумчане
И еще если кто знает как задать шаг для таких весовых товаров в 0.1 например!?
З.Ы. Может кому пригодится.
В базе данных меняем типы полей с int на float
_virtuemart_products поле product_in_stock
_virtuemart_order_items поле product_quantity
Для того, чтобы при обновлении количества в самой корзине не отбрасывалась дробная часть, в файле \components\com_virtuemart\helpers\cart.php
строку
$quantity = JRequest::getInt('quantity');
меняем на
$quantity = JRequest::getFloat('quantity');
Для того чтобы товар меньше 1 добавлялся в корзину меняем LIMIT с 1 на 0.1 в cart.php
public function getCardCategoryId($virtuemart_product_id) {
$db = JFactory::getDBO();
$q = 'SELECT `virtuemart_category_id` FROM `#__virtuemart_product_categories` WHERE `virtuemart_product_id` = ' . (int) $virtuemart_product_id . ' LIMIT 0,1';
$db->setQuery($q);
return $db->loadResult();
}
Последнее редактирование: 8 года 8 мес. назад от Роман.
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Wedal

Администратор

2883
228
663
8 года 8 мес. назад #7211 от Wedal
Роман, действуйте так:
1) Найдите через переопределение констант Joomla или поиском по файлам, в какой языковой переменной хранится текст ошибки "Пожалуйста, введите количество этого товара".
2) Поиском по файлам найдите все файлы, в которых встречается эта языковая переменная.
3) Определите, какой из найденных файлов напрямую относится к корзине.
4) Найдите в этом файле условия, которые приводят к появлению ошибки, сопоставьте их с вашей задачей и исправьте.
1) Найдите через переопределение констант Joomla или поиском по файлам, в какой языковой переменной хранится текст ошибки "Пожалуйста, введите количество этого товара".
2) Поиском по файлам найдите все файлы, в которых встречается эта языковая переменная.
3) Определите, какой из найденных файлов напрямую относится к корзине.
4) Найдите в этом файле условия, которые приводят к появлению ошибки, сопоставьте их с вашей задачей и исправьте.
8 года 8 мес. назад #7212 от Роман
Вот получается так...
Переменная в яз файле ./ru-RU/ru-RU.com_virtuemart.ini
./components/com_virtuemart/helpers/cart.php
и тут я застрял.. )
Блин размусолить бы эту тему... в поиске не найти ничего толкового на дробные числа в virtuemart
З.Ы. вчера уже фрилансеров начал искать... пока без результатно (
Переменная в яз файле ./ru-RU/ru-RU.com_virtuemart.ini
COM_VIRTUEMART_CART_ERROR_NO_VALID_QUANTITY="Пожалуйста, введите количество этого товара."
./components/com_virtuemart/helpers/cart.php
private function checkForQuantities($product, &$quantity=0,&$errorMsg ='') {
$stockhandle = VmConfig::get('stockhandle','none');
// Check for a valid quantity
if (!is_numeric( $quantity)) {
$errorMsg = JText::_('COM_VIRTUEMART_CART_ERROR_NO_VALID_QUANTITY', false);
// $this->_error[] = 'Quantity was not a number';
$this->setError($errorMsg);
vmInfo($errorMsg,$product->product_name);
return false;
}
// Check for negative quantity
if ($quantity < 0.1) {
// $this->_error[] = 'Quantity under zero';
$errorMsg = JText::_('COM_VIRTUEMART_CART_ERROR_NO_VALID_QUANTITY', false);
$this->setError($errorMsg);
vmInfo($errorMsg,$product->product_name);
return false;
}
и тут я застрял.. )
Блин размусолить бы эту тему... в поиске не найти ничего толкового на дробные числа в virtuemart
З.Ы. вчера уже фрилансеров начал искать... пока без результатно (
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
8 года 8 мес. назад - 8 года 8 мес. назад #7213 от Роман
так.... корзину с заказом победил.. )) (утро, вечера мудренее)
итак у меня ж стоит OnePage Checkout (ну прост он в 1 клик и красив)
так там я нашел такой же кусок кода... ./components/com_onepage/overrides/cart_override.php
и поставил значение
Теперь осталось допилить шаг при заказе +0.1 и -0.1
Но не на весь товар а на отдельные весовые...
Я и так там настолько все донаправлял что только что заметил что если товар стоит от 1000р то в корзине показывается 1р )) а если например 2690 то 2р ))), а вот с цены ниже 1000р отображаются норм...
итак у меня ж стоит OnePage Checkout (ну прост он в 1 клик и красив)
так там я нашел такой же кусок кода... ./components/com_onepage/overrides/cart_override.php
и поставил значение
if ($quantity < 0.1) {
Теперь осталось допилить шаг при заказе +0.1 и -0.1
Но не на весь товар а на отдельные весовые...
Я и так там настолько все донаправлял что только что заметил что если товар стоит от 1000р то в корзине показывается 1р )) а если например 2690 то 2р ))), а вот с цены ниже 1000р отображаются норм...
Последнее редактирование: 8 года 8 мес. назад от Роман.
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
8 года 8 мес. назад - 8 года 8 мес. назад #7216 от Роман
меня осинило... опять же утром...
Кнопка +- ведь использует JavaScript итак.... для того чтоб можно было + 0.1 или -0.1 надо всего то изменить в файле /components/com_virtuemart/assets/js/vmprices.js меняем как в коде на parseFloat вместо parseInt и теперь в админке можно ставить шаг товара в 0.1
надеюсь кому нибудь поможет... а то я тут сам с собой разговариваю
мой сайт
Gastronomik.ru

Кнопка +- ведь использует JavaScript итак.... для того чтоб можно было + 0.1 или -0.1 надо всего то изменить в файле /components/com_virtuemart/assets/js/vmprices.js меняем как в коде на parseFloat вместо parseInt и теперь в админке можно ставить шаг товара в 0.1
plus.click(function() {
var Qtt = parseFloat(quantity.val());
if (!isNaN(Qtt)) {
quantity.val(Qtt + Ste);
Virtuemart.setproducttype(cart,virtuemart_product_id);
}
});
minus.click(function() {
var Qtt = parseFloat(quantity.val());
if (!isNaN(Qtt) && Qtt>Ste) {
quantity.val(Qtt - Ste);
} else quantity.val(Ste);
Virtuemart.setproducttype(cart,virtuemart_product_id);
});
надеюсь кому нибудь поможет... а то я тут сам с собой разговариваю

Последнее редактирование: 8 года 8 мес. назад от Роман.
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Анастасия
Прохожий

1
0
8 года 2 мес. назад #7437 от Анастасия
помогите мне пожалуйста (((
вроде бы сделала все что описано, но не выходит (((
вроде бы сделала все что описано, но не выходит (((
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Форум
- Расширения Joomla
- Электронная коммерция.
- VirtueMart 2
- Дробные числа товара VirtueMart 2.6.16 (Решено)