Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

xCoReLx

  • Захожу иногда
  • 243
  • 7 / 0
Цитировать
$where_clause[] = "`product_parent_id`=0 ";
}
if( !$perm->check("admin,storeadmin") ) {
   $where_clause[] = "`product_publish`='Y' ";
   $where_clause[] = "`category_publish`='Y' ";
   if( CHECK_STOCK && PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != "1") {
      $where_clause[] = 'product_in_stock > 0';
   }
}

и куда вставить? $filter_in_stock = $_SESSION['filter_in_stock']; тыкал сам и выдает 2 разных ошибки в зависимосту куда запихать :

Parse error: syntax error, unexpected $end in /home/,,,,,administrator/components/com_virtuemart/html/shop_browse_queries.php  on line 358
Parse error: syntax error, unexpected T_LOGICAL_OR in /home/,,,,,/administrator/components/com_virtuemart/html/shop_browse_queries.php  on line 327

1.1.5 VM
« Последнее редактирование: 24.09.2010, 23:08:39 от xCoReLx »
*

xCoReLx

  • Захожу иногда
  • 243
  • 7 / 0
Цитировать
$where_clause[] = "((`product_parent_id`='0') OR (`product_parent_id`='')) ";
$filter_in_stock = $_SESSION['filter_in_stock'];
}
if( !$perm->check("admin,storeadmin") ) {
    $where_clause[] = "`product_publish`='Y' ";
    $where_clause[] = "`category_publish`='Y' ";
    if( (CHECK_STOCK && PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != "1") or $filter_in_stock == "1") {
        $where_clause[] = 'product_in_stock > 0';
    }
}
if( $perm->check("admin,storeadmin") &&  $filter_in_stock == "1") $where_clause[] = 'product_in_stock > 0';

Есть предложение, по поводу:
"Единственный минус в том, что если в категории нет товара на складе - она выводится пустая и пункт выбора галочки отсутствует. Нужно заходить в категорию, где есть товар на складе и только там можно снять галочку." 
Может как нить сказать в скрипте стоб не сохранял галочку при переходе в другую категорию?

вот рабочая версия для тех у кого код как у меня.
« Последнее редактирование: 25.09.2010, 00:04:51 от xCoReLx »
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
Цитировать
$where_clause[] = "`product_parent_id`=0 ";
}
$filter_in_stock = $_SESSION['filter_in_stock'];
if( !$perm->check("admin,storeadmin") ) {
    $where_clause[] = "`product_publish`='Y' ";
    $where_clause[] = "`category_publish`='Y' ";
    if( (CHECK_STOCK && PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != "1") or $filter_in_stock == "1") {
        $where_clause[] = 'product_in_stock > 0';
    }
}
if( $perm->check("admin,storeadmin") &&  $filter_in_stock == "1") $where_clause[] = 'product_in_stock > 0';

У меня такой код. Там видимо автор опечатался. У тебя заработало?
*

xCoReLx

  • Захожу иногда
  • 243
  • 7 / 0
да у меня заработало. просто там что в примере код чуть другой у меня 1.1.5. щас попробую твой вариант кода он. Так что на счет, как идейка переложенная? при переходе в другую категорию не сохранялась галочка тогда и проблема решиться

я подправил чуток:

Цитировать
<?
if ($_SESSION['filter_in_stock'] == "1")
  $filter_in_stock_status = "checked";
?>
<input type="hidden" name="filter_in_stock" value="0"> <!-- send value equal 0 if not checked -->
&nbsp;&nbsp;<input type="checkbox"  name="filter_in_stock"  value="1" onclick="order.submit()" <?echo $filter_in_stock_status?>>&nbsp;<?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_IN_STOCK')?>
подвязал языковай файл. так проблем меньше мне кажется
« Последнее редактирование: 25.09.2010, 11:12:23 от xCoReLx »
*

mrhuge

  • Захожу иногда
  • 222
  • 7 / 0
  • http://muzalliance.ru/
Идейка хорошая - надо кому-то сделать :)
*

xCoReLx

  • Захожу иногда
  • 243
  • 7 / 0
ага, тому кто соображает. вот еще идея  пример http://www.chainreactioncycles.com/Categories.aspx?CategoryID=625 там идет типо кнопка "In stock" сверху списка слева.
*

intcorp

  • Захожу иногда
  • 456
  • 12 / 0
Думаю лучше было бы выводить в начале списка товар, который в наличии, а затем товары, которые отсутствую в данный момент.
*

Luchik

  • Захожу иногда
  • 57
  • 6 / 0
Вставил код.
У меня при нажатии галочки перезагружается товар, исчезают позиции, которых нету, но состояние галочки не меняется - она снята.
У меня не получается получить галочку нажатой. В чем может быть проблема?
*

Luchik

  • Захожу иногда
  • 57
  • 6 / 0
Даже код подправил:
Код
<input type="hidden" name="filter_in_stock" value="0"> <!-- send value equal 0 if not checked -->
&nbsp;&nbsp;<input type="checkbox"  name="filter_in_stock"  value="1" onclick="order.submit()" <?php echo $filter_in_stock_status ?>>&nbsp;<?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_IN_STOCK')?>

Но все равно не работает.

Данные:
локальный сервер xxamp
Joomla 1.5.22
Virtuemart 1.1.7

Уже заново все переделал и все равно не работает. Галочка не устанавливается.
*

Luchik

  • Захожу иногда
  • 57
  • 6 / 0
Извиняюсь. Все работает. Код немного не коректно написан. Вот итого правильно для VirtueMart 1.1.7:

Quote from: /www/administrator/components/com_virtuemart/html/shop_browse_queries.php
Код
	$where_clause[] = "`product_parent_id`=0 ";
}

$filter_in_stock = $_SESSION['filter_in_stock'];
if( !$perm->check("admin,storeadmin") ) {
$where_clause[] = "`product_publish`='Y' ";
$where_clause[] = "`category_publish`='Y' ";
if( (CHECK_STOCK && PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != "1") or $filter_in_stock == "1") {
$where_clause[] = 'product_in_stock > 0';
}
}
if( $perm->check("admin,storeadmin") &&  $filter_in_stock == "1") $where_clause[] = 'product_in_stock > 0';

Quote from: /www/components/com_virtuemart/virtuemart_parser.php
Код
define( '_VM_PARSER_LOADED', 1 );   
    if ($_REQUEST['filter_in_stock'] == "1") $_SESSION['filter_in_stock'] = "1";
    if ($_REQUEST['filter_in_stock'] == "0")  $_SESSION['filter_in_stock'] = "0";
}

Quote from: /www/components/com_virtuemart/themes/default/templates/browse/includes/browse_orderbyform.tpl.php
Код
<?php
if ($_SESSION['filter_in_stock'] == "1")
  $filter_in_stock_status = "checked";
?>
<input type="hidden" name="filter_in_stock" value="0"> <!-- send value equal 0 if not checked -->
&nbsp;&nbsp;<input type="checkbox"  name="filter_in_stock"  value="1" onclick="order.submit()" <?php echo $filter_in_stock_status ?>>&nbsp;<?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_IN_STOCK')?>
</form>

Этот хак добавляет галочку для фильтрации товара на складе. Единственный минус в том, что если в категории нет товара на складе - она выводится пустая и пункт выбора галочки отсутствует. Нужно заходить в категорию, где есть товар на складе и только там можно снять галочку.
[/quote]
*

cola78

  • Новичок
  • 4
  • 0 / 0
берешь обычную ссылку на категорию и добавляешь &stock=Y



Если нетрудно, то пожалуйста подробней, как это сделать?

Как получить (прописать) ссылку на текущую страницу? Ведь потом к ней нужно добавить &stock=Y
« Последнее редактирование: 10.03.2011, 23:00:40 от cola78 »
*

cola78

  • Новичок
  • 4
  • 0 / 0
берешь обычную ссылку на категорию и добавляешь &stock=Y
а кто мешает вставить где-нибудь рядом с "показывать по"?

Как получить (прописать) ссылку на текущую страницу? Ведь потом к ней нужно добавить &stock=Y
*

GSA3D

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
А у меня что-то показывает все товары, даже те, которых на складе 0. Стандартная настройка не работает. В чем может быть дело?
Virtuemart 1.1.9
*

Amid1210

  • Осваиваюсь на форуме
  • 35
  • 0 / 0
Извиняюсь. Все работает. Код немного не коректно написан. Вот итого правильно для VirtueMart 1.1.7:

Quote from: /www/administrator/components/com_virtuemart/html/shop_browse_queries.php
Код
	$where_clause[] = "`product_parent_id`=0 ";
}

$filter_in_stock = $_SESSION['filter_in_stock'];
if( !$perm->check("admin,storeadmin") ) {
$where_clause[] = "`product_publish`='Y' ";
$where_clause[] = "`category_publish`='Y' ";
if( (CHECK_STOCK && PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != "1") or $filter_in_stock == "1") {
$where_clause[] = 'product_in_stock > 0';
}
}
if( $perm->check("admin,storeadmin") &&  $filter_in_stock == "1") $where_clause[] = 'product_in_stock > 0';

Quote from: /www/components/com_virtuemart/virtuemart_parser.php
Код
define( '_VM_PARSER_LOADED', 1 );   
    if ($_REQUEST['filter_in_stock'] == "1") $_SESSION['filter_in_stock'] = "1";
    if ($_REQUEST['filter_in_stock'] == "0")  $_SESSION['filter_in_stock'] = "0";
}

Quote from: /www/components/com_virtuemart/themes/default/templates/browse/includes/browse_orderbyform.tpl.php
Код
<?php
if ($_SESSION['filter_in_stock'] == "1")
  $filter_in_stock_status = "checked";
?>
<input type="hidden" name="filter_in_stock" value="0"> <!-- send value equal 0 if not checked -->
&nbsp;&nbsp;<input type="checkbox"  name="filter_in_stock"  value="1" onclick="order.submit()" <?php echo $filter_in_stock_status ?>>&nbsp;<?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_IN_STOCK')?>
</form>

Этот хак добавляет галочку для фильтрации товара на складе. Единственный минус в том, что если в категории нет товара на складе - она выводится пустая и пункт выбора галочки отсутствует. Нужно заходить в категорию, где есть товар на складе и только там можно снять галочку.

Все сделал, появилась галочка "на складе" когда нажимаю обновляется страница, но товар не скрывается.
А можно сделать что бы сначало выводился товар кот. есть в наличии, а потом которого нету?

Joomla 1.5.25  VM  1.1.9
*

codeshon

  • Захожу иногда
  • 58
  • 2 / 0
  • Аватар в отпуске

Думаю лучше было бы выводить в начале списка товар, который в наличии, а затем товары, которые отсутствую в данный момент.

Присоединяюсь. Ребят, может кто уже реализовал?

 
« Последнее редактирование: 20.09.2012, 20:53:08 от codeshon »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как реализовать: товары, которых нет в наличии в конец списка категории?

Автор Girevik

Ответов: 1
Просмотров: 2513
Последний ответ 02.11.2017, 10:52:04
от P_B
[Решено] Чебокс "Показывать только товары, которые есть в наличии"

Автор artMelnikov

Ответов: 20
Просмотров: 8877
Последний ответ 28.06.2017, 11:19:51
от OutLaw1
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 30891
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
404 для товаров которые удалены

Автор holovla

Ответов: 1
Просмотров: 2970
Последний ответ 06.05.2015, 19:42:13
от holovla
[Решено] Скидки на зависимые товары

Автор Serpent19

Ответов: 4
Просмотров: 2411
Последний ответ 04.06.2014, 15:47:15
от One