Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

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

  • Давно я тут
  • 924
  • 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

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

Автор ZeRa

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

Автор Mishok333

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

Автор Iraina

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

Автор Wolverine

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