Новости Joomla

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи. Плагин создан как замена Simple Image Gallery и поддерживает синтаксис {gallery}{/gallery}.👩‍💻 v.1.2.3. Что нового?- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#joomla #расширения

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

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

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
Просмотров: 39691
Последний ответ 08.11.2014, 22:09:13
от site-logic
Kоличество (отобразить и сменить) в списке товаров в АДМИНКЕ

Автор ZeRa

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

Автор Mishok333

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

Автор Iraina

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

Автор Wolverine

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