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

djking

  • Новичок
  • 9
  • 0 / 0
и что мы видим в этом архиве??? три оригинальных файла: ps_cart.php, shop.browse.php, shop.cart.php, взятые с virtuemart'a версии 1.0.0
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Цитировать
и что мы видим в этом архиве??? три оригинальных файла: ps_cart.php, shop.browse.php, shop.cart.php, взятые с virtuemart'a версии 1.0.0
Если б вы посмотрели внимательнее в эти файлы, или если бы скопировали их по папкам, то увидели бы результат, немного иной, чем в стандартном виртуемарте.
Firefox the best, Google the best, jQuery the best.
yAnTar блог
*

SNEg

  • Осваиваюсь на форуме
  • 26
  • 4 / 0
yAnTar правду глаголит. Файлы отлично работают, за что ему спасибо.  :D Проверено лично.
*

SNEg

  • Осваиваюсь на форуме
  • 26
  • 4 / 0
Вот долго готовился и вычленив данный патч обновил его с версии VM 1.0.3 (от yAnTar) до версии VM 1.0.10.
Выкладываю построчную правку файлов и сами уже исправленные файлы. Правке подлежат 2 файла.
Только есть небольшая проблема с этой версией магазина, нужна помощь автора хака :) . О ней позже.

Итак:

Файл /administrator/components/com_virtuemart/html/shop.browse.php

строка 285:
это:
Код
/*** Start printing out all products (in that category) ***/
while ($db_browse->next_record()) {

// If it is item get parent:

меняем на это:
Код
/*** Start printing out all products (in that category) ***/
echo "<form action=\"". $mm_action_url ."index.php\" method=\"post\" name=\"addtocart\" id=\"addtocart\">".
"<input type=\"hidden\" name=\"page\" value=\"shop.cart\" />\n
<input type=\"hidden\" name=\"func\" value=\"cartadd\" />\n
<input type=\"hidden\" name=\"Itemid\" value=\"$Itemid\" />\n
<input type=\"hidden\" name=\"option\" value=\"com_virtuemart\" />\n";
while ($db_browse->next_record()) {

// If it is item get parent:

строка 393:
это:
Код
/*** Add-to-Cart Button ***/
if (USE_AS_CATALOGUE != '1' && $product_price != "" && !stristr( $product_price, $VM_LANG->_PHPSHOP_PRODUCT_CALL )) {
$form_addtocart = "<form action=\"". $mm_action_url ."index.php\" method=\"post\" name=\"addtocart\" id=\"addtocart".$i."\">\n
<label for=\"quantity_".$i."\">".$VM_LANG->_PHPSHOP_CART_QUANTITY.":</label>\n
<input id=\"quantity_".$i."\" class=\"inputbox\" type=\"text\" size=\"3\" name=\"quantity\" value=\"1\" />
<input type=\"submit\" style=\"text-align:center;background-position:bottom left;width:160px;height:35px;cursor:pointer;border:none;font-weight:bold;font-family:inherit;background: url('". IMAGEURL ."ps_image/".PSHOP_ADD_TO_CART_STYLE ."') no-repeat left center transparent;vertical-align: middle;overflow:hidden;\" value=\"".$VM_LANG->_PHPSHOP_CART_ADD_TO ."\" title=\"".$VM_LANG->_PHPSHOP_CART_ADD_TO."\" />
<input type=\"hidden\" name=\"category_id\" value=\"".@intval($_REQUEST['category_id']) ."\" />\n
<input type=\"hidden\" name=\"product_id\" value=\"". $db_browse->f("product_id") ."\" />\n
<input type=\"hidden\" name=\"page\" value=\"shop.cart\" />\n
<input type=\"hidden\" name=\"func\" value=\"cartadd\" />\n
<input type=\"hidden\" name=\"Itemid\" value=\"$Itemid\" />\n
<input type=\"hidden\" name=\"option\" value=\"com_virtuemart\" />\n
</form>\n";
}
else
$form_addtocart = "";

/*** Now fill the template

меняем на это:
Код
/*** Add-to-Cart Button ***/
if (USE_AS_CATALOGUE != '1' && $product_price != "" && !stristr( $product_price, $VM_LANG->_PHPSHOP_PRODUCT_CALL )) {
$form_addtocart = "\n
<label for=\"quantity_".$i."\">".$VM_LANG->_PHPSHOP_CART_QUANTITY.":</label>\n
<input id=\"quantity_".$i."\" class=\"inputbox\" type=\"text\" size=\"3\" name=\"quantity[]\" value=\"0\" />
<input type=\"hidden\" name=\"category_id[]\" value=\"". @intval($_REQUEST['category_id']) ."\" />\n
<input type=\"hidden\" name=\"product_id[]\" value=\"". $db_browse->f("product_id") ."\" />\n";
}
else
$form_addtocart = "";

/*** Now fill the template

строка 513:
это:
Код
} /*** END OF while loop ***/

echo '<br style="clear:both;" />';

меняем на это:
Код
} /*** END OF while loop ***/
echo "<input type=\"submit\" style=\"text-align:center;background-position:bottom left;width:160px;height:35px;cursor:pointer;border:none;font-weight:bold;font-family:inherit;background: url('". IMAGEURL ."ps_image/".PSHOP_ADD_TO_CART_STYLE ."') no-repeat left center transparent;vertical-align: middle;overflow:hidden;\" value=\"".$VM_LANG->_PHPSHOP_CART_ADD_TO ."\" title=\"".$VM_LANG->_PHPSHOP_CART_ADD_TO."\" />".
"</form>";
echo '<br style="clear:both;" />';

Файл /administrator/components/com_virtuemart/classes/ps_cart.php

строка: 71
это:
Код
/**
* adds an item to the shopping cart
* @author pablo
* @param array $d
*/
function add(&$d) {
global $sess, $VM_LANG, $cart, $option, $vmLogger;
$d = $GLOBALS['vmInputFilter']->process( $d ); 
include_class("product");
$Itemid = $sess->getShopItemid();

меняем на это:
Код
/**
* adds an item to the shopping cart
* @author pablo
* @param array $d
*/
function add(&$d) {
global $sess, $VM_LANG, $cart, $option, $vmLogger;
$d = $GLOBALS['vmInputFilter']->process( $d ); 
/*           $array = ($_POST['quantity']);
  print (count($array));
  die(); */
$arr_product = $_POST['product_id'];
$arr_quantity = $_POST['quantity'];
for ($my_i = 0; $my_i<count($arr_product); $my_i++){
include_class("product");
$Itemid = $sess->getShopItemid(); 

строка 81:
это:
Код
$product_id = $d["product_id"];
$quantity = isset($d["quantity"]) ? $d["quantity"] : 1;
$_SESSION['last_page'] = "shop.product_details";

// Check for negative quantity

меняем на это:
Код
//$product_id = $d["product_id"];
//$quantity = isset($d["quantity"]) ? $d["quantity"] : 1;
$product_id = $arr_product [$my_i];
$quantity = $arr_quantity [$my_i];
if ($quantity == 0) continue;
$_SESSION['last_page'] = "shop.product_details";

// Check for negative quantity

строка 124:
это:
Код
if ( $db->num_rows()) {
$vmLogger->tip( $VM_LANG->_PHPSHOP_CART_SELECT_ITEM );
return false;
}

// If no quantity sent them assume 1

меняем на это:
Код
if ( $db->num_rows()) {
//$vmLogger->tip( $VM_LANG->_PHPSHOP_CART_SELECT_ITEM );
// return false;
}
           
// If no quantity sent them assume 1

строка 142:
это:
Код
$GLOBALS['page'] = 'shop.product_details';
$vmLogger->tip( $VM_LANG->_PHPSHOP_CART_SELECT_ITEM );
return true;

меняем на это:
Код
$GLOBALS['page'] = 'shop.product_details';
//$vmLogger->tip( $VM_LANG->_PHPSHOP_CART_SELECT_ITEM );
return true;

строка 179:
это:
Код
$cart = $_SESSION['cart'];
return True;
}

меняем на это:
Код
$cart = $_SESSION['cart'];
}
return True;
}

строка 190:
это:
Код
function update(&$d) {
global $sess,$VM_LANG, $func, $vmLogger;
$d = $GLOBALS['vmInputFilter']->process( $d );
include_class("product");
$db = new ps_DB;
$product_id = $d["product_id"];
$quantity = !empty($d["quantity"]) ? $d["quantity"] : 1;
$_SESSION['last_page'] = "shop.cart";

// Check for negative quantity

меняем на это:
Код
function update(&$d) {
global $sess,$VM_LANG, $func, $vmLogger;
$d = $GLOBALS['vmInputFilter']->process( $d );
$arr_product = $_POST['product_id'];
$arr_quantity = $_POST['quantity'];
for ($my_i = 0; $my_i<count ($arr_product); $my_i++){
include_class("product");
$product_id = $arr_product [$my_i];
$quantity = $arr_quantity [$my_i];
$db = new ps_DB;
/* $product_id = $d["product_id"];
$quantity = !empty($d["quantity"]) ? $d["quantity"] : 1;  */
$_SESSION['last_page'] = "shop.cart";

// Check for negative quantity

строка 256:
вставить
Код
}

Если в чем ошибся, то поправьте меня.

После этого всё работает за исключением одного:
При пересчете позиций в корзине они както не правильно обновляются. Например было 100штук, а я исправил на 85 и нажал пересчитать. Так вот в позиции остается только 8, т.е. первая цифра от числа всегда.
Сам наверно не разберусь в чем проблема, если автор хака или кто-нибудь еще посмотрит и поможет, то буду оооочень благодарен.  ::)
Кстати оригинальные файлы от yAnTar на VM 1.0.10 тоже работают с такой ошибкой. Джумла у меня стоит 1.0.10.
Кто может, попробуйте эти файлы у себя.

[вложение удалено Администратором]
« Последнее редактирование: 20.03.2007, 13:52:20 от SNEg »
*

SNEg

  • Осваиваюсь на форуме
  • 26
  • 4 / 0
то yAnTar

Разбираясь с этой проблемкой с неправильным пересчетом товара в корзине, обнаружил что и на вашем сайте obed.su такая же проблема оказывается.  ????
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Не видел раньше этого бага, как будет время, исправлю.
Firefox the best, Google the best, jQuery the best.
yAnTar блог
*

feto4ka

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
у меня возникла проблемка! Локально работает, а при переносе на сервер перестает показывать цену и окошко для установки количества.
Мож кто-то знает от чего такое бывает, подскажите пожалуйста, очень надо!

И еще если сразу ставлю на сервер, тогда тоже не отображает цену и окошко для количества
« Последнее редактирование: 22.03.2007, 15:33:36 от feto4ka »
*

vlad_2222

  • Осваиваюсь на форуме
  • 37
  • 0 / 1
подскажите плз , как добавить кнопки + и -
*

vlad_2222

  • Осваиваюсь на форуме
  • 37
  • 0 / 1
Н да лажает примочечка...... а если в корзине нажать F5 пару раз то количество увеличивается


а штучка такая нужна  позарез...
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
*

vlad_2222

  • Осваиваюсь на форуме
  • 37
  • 0 / 1
тока поправочка есть.
вместо images\plus.gif     -  images/plus.gif
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Я есть.
Времени нет, да и забываю об этом.
Баг исправлен для пересчета товаров.
Файл administrator/components/com_virtuemart/html/basket.php

Ищете строки
Код
$order_total = 0;
$discount_before=$discount_after=$show_tax=$shipping=false;
$product_rows = Array();
И вставляете после них такие строки
Код
	
$product_id_update = mosGetParam($_REQUEST,'product_id', '');       
$func = mosGetParam($_REQUEST,'func', '');
$quantity = mosGetParam($_REQUEST,'quantity');

и после строки
Код
for ($i=0;$i<$cart["idx"];$i++) {
вставляете такие строки
Код
if ($cart[$i]['product_id'] == $product_id_update && $func == 'cartUpdate'){
   $cart[$i]['quantity'] = $quantity;
   $_SESSION['cart'][$i]['quantity'] = $quantity;
}

Цитировать
Н да лажает примочечка...... а если в корзине нажать F5 пару раз то количество увеличивается
Этого не вижу, жму Ф5 в корзине много раз количество не увеличивается.
Firefox the best, Google the best, jQuery the best.
yAnTar блог
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Насчет Ф5 скажите на какой странице, перед тем как нажали кнопку чекаут или до того.
Firefox the best, Google the best, jQuery the best.
yAnTar блог
*

morph

  • Давно я тут
  • 923
  • 105 / 0
Теперь все нормально  ^-^-сделал последние исправления в basket.php проблема с Ф5 пропала.Спасибо за хак!
*

eamat

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
У меня у одного такая проблема?После замены файла ps_cart.php из архива vm_1010_patch.zip при добавлении товара в корзину со странице полного описания продукции(flypage) добавляется совсем другой товар :( (joomla 1.0.12,vm 1.0.10)
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Да есть такой баг. Решение такое: открываете файл administrator/components/com_virtuemart/classes/ps_cart.php и заменяете строки
Цитировать
$product_id = $arr_product [$my_i];
$quantity = $arr_quantity [$my_i];
на такие
Цитировать
if (!is_array($arr_product)){
  $product_id = $arr_product;
  $quantity = $arr_quantity;
} else {
  $product_id = $arr_product [$my_i];
  $quantity = $arr_quantity [$my_i];
}
Firefox the best, Google the best, jQuery the best.
yAnTar блог
*

Artes

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
вот сделал все и получите:
если клацнуть на кнопку купить со страницы каталога выдает такую батву:
Warning: Illegal offset type in /home/*****/administrator/components/com_virtuemart/classes/ps_product_category.php on line 610
притом если добавлять в корзину со страницы описания товара никаких проблем
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Цитировать
Warning: Illegal offset type in /home/*****/administrator/components/com_virtuemart/classes/ps_product_category.php on line 610
Это предупреждение, возможно забыл проверку поставить, пока что такое временное решение - поставьте в этом файле error_reporting(0);
Позже посмотрю, почему это выскакивает
З.Ы. А вы во всех файлах исправления сделали ?
Firefox the best, Google the best, jQuery the best.
yAnTar блог
*

Artes

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
З.Ы. А вы во всех файлах исправления сделали ?
Да вродь как. Откатил файлы назад все ок стало. И что характерно убрав {form_addtocart} пропало, только окошко с кол-вом товара, но кнопа в корзину осталась?
*

eamat

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Цитировать
А про Ф5-у меня так-же(количество меняется)...
тот же баг-хаки все делал и правильно,когда заходиш на страницу карзины index.php?page=shop.cart&option=com_virtuemart - и нажимаеш ф5-меняется,но странно,что в модуле корзины такого нет!
Что делать?
*

VIPersone

  • Захожу иногда
  • 55
  • 2 / 0
У меня после всех вышеуказанных исправлений пропала возможность обновлять товар в корзине. Кто-нибудь подскажет? Кнопка "обновление" - мертвая, "удалить" - работает....
« Последнее редактирование: 10.08.2007, 02:55:23 от VIPersone »
*

slake

  • Новичок
  • 5
  • 0 / 0
Это предупреждение, возможно забыл проверку поставить, пока что такое временное решение - поставьте в этом файле error_reporting(0);
Позже посмотрю, почему это выскакивает
З.Ы. А вы во всех файлах исправления сделали ?

если не трудно, подскажите решение этой проблемы
*

viy

  • Захожу иногда
  • 54
  • 0 / 1
Спасибо!  :D

А как сделать чтобы после того как нажмешь кнопку купить, остаться на этой же странице?
« Последнее редактирование: 24.03.2008, 09:41:04 от viy »

Спасибо огромное за такой полное и полезное решение!
Одна проблема - теперь кнопка "Купить" вылезает и в списке категорий тоже, не могу отследить, как этого можно избежать?
Помогите, плиз! :)
*

FleX

  • Осваиваюсь на форуме
  • 17
  • 1 / 0
Вот долго готовился и вычленив данный патч обновил его с версии VM 1.0.3 (от yAnTar) до версии VM 1.0.10.
Выкладываю построчную правку файлов и сами уже исправленные файлы. Правке подлежат 2 файла......

Всё классно с этим, только куда после этих изменений  из корзины подевалась кнопка "Продолжить закупки"???
*

Sanyo

  • Захожу иногда
  • 127
  • 11 / 0
"А как сделать чтобы после того как нажмешь кнопку купить, остаться на этой же странице?"
присоеденяюсь!
*

Sanyo

  • Захожу иногда
  • 127
  • 11 / 0
А если зайти в подробный вид товара и от туда сделать покупку, коризна показывает ценник 0 и не знает что за товар (((( как быть?!  !!!???!!!
А за хак, +1 молодцом!
*

kibi

  • Осваиваюсь на форуме
  • 34
  • 1 / 0
Подскажите пожалуйста, как сделать этот хак на VirtueMart 1.1.4,
Сравнил код - очень отличается, а в PHP не силен -  спецы
очень нужно
Заранее спасибо
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Эффект добавления в корзину

Автор Sanyo

Ответов: 115
Просмотров: 37142
Последний ответ 08.11.2014, 22:09:13
от site-logic
Kоличество (отобразить и сменить) в списке товаров в АДМИНКЕ

Автор ZeRa

Ответов: 6
Просмотров: 10385
Последний ответ 25.06.2014, 16:36:23
от newjey
Дополнительная кнопка купить

Автор Mishok333

Ответов: 7
Просмотров: 1384
Последний ответ 21.05.2014, 14:13:31
от Mishok333
Кнопка "Очистить корзину" VirtueMart Shopping Cart

Автор Iraina

Ответов: 3
Просмотров: 7252
Последний ответ 30.04.2014, 10:47:03
от q3scream
Отображение наименований товара в списке заказов (order.order_list)

Автор Wolverine

Ответов: 3
Просмотров: 1163
Последний ответ 16.12.2013, 16:26:27
от fsv