Новости Joomla

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

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

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

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

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

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за 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 Гость просматривают эту тему.
  • 33 Ответов
  • 9325 Просмотров
*

elnine

  • Новичок
  • 6
  • 1 / 0
Уважаемый SorokinS, огромное спасибо за помощь.
Но всё оказалось, прозаичнее и проще.
Виртуемарт, настолько загадочный зверек, что какой раз уже диву даюсь.

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

А наш зверек, пытаясь отправить почту, зацикливался, в итоге ронял сессию, и кидал
с "товар не найден" на каталог. Почему он так делал, а не писал другую ошибку, не особо ясно.

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

Еще раз спасибо
*

faraon_x

  • Захожу иногда
  • 362
  • 27 / 1
  • Чем смогу, тем помогу )))
Joomla 1.5.22 VirtueMart 1.1.7

Заметил следующие баги:

1. в подробном описании товара ссылки Предыдущий / Следующий имеют не верный вид, у меня например с категорией 0:(
Код
?page=shop.product_details&flypage=flypage.tpl&product_id=92&category_id=0
2. в "Недавно просмотренные файлы" Порядок построения ссылки на товар ваще не понятный, хоть и работает:):
Код
?page=shop.product_details&product_id=92&category_id=21&flypage=flypage.tpl

Получается дублирование одинаковых страниц, Яндекс этого не любит.

Чиним так:

1.  в файле /administrator/components/com_virtuemart/html/shop.product_details.php
Для следующей:
179
Было:
Код
$url_parameters = 'page=shop.product_details&product_id='.$next_product['product_id'].'&flypage='.$ps_product->get_flypage($next_product['product_id']).'&pop='.$pop;
Стало:
Код
$url_parameters = 'page=shop.product_details&flypage='.$ps_product->get_flypage($next_product['product_id']).'&category_id='.$category_id;
   
для предыдущейкнопки (193 строка)
Было:
Код
$url_parameters = 'page=shop.product_details&product_id='.$previous_product['product_id'].'&flypage='.$ps_product->get_flypage($previous_product['product_id']).'&pop='.$pop;
Стало:
Код
$url_parameters = 'page=shop.product_details&flypage='.$ps_product->get_flypage($next_product['product_id']).'&product_id='.$next_product['product_id'].'&category_id='.$category_id;
   
2. в файле /administrator/components/com_virtuemart/classes/ps_product.php (у меня VM 1.1.7 строка 2865)
Было :
Код
$recent[$k]['product_url'] = $sess->url("page=shop.product_details&product_id=$prod_id&category_id=$category_id&flypage=$flypage");

Стало:
Код
$recent[$k]['product_url'] = $sess->url("page=shop.product_details&flypage=$flypage&product_id=$prod_id&category_id=$category_id");
            

Может кто знает, если переходить в товар из поисковой системы или из модуля: "Вас, возможно, заинтересуют следующие товары", то ссылки предыдущий и следующий не отображаются?
Вопросы по JFORMS, можно ещё попробовать задать здесь
Российский 3d сканер от разработчиков и производителей
*

kordima

  • Захожу иногда
  • 54
  • 24 / 0
Давно хотел исправить эту ошибку. Попался этот материал, но к сожалению это работает только если товар входит в одну категорию. Пришлось разбираться. Реально оказалось, что это очередная ошибка в коде VirtueMart. Предлагаю сообществу свою версию решения проблемы.

1. Исправляем ошибку: передаваемая категория забивается при определении переменной $flypage.

После кода:
Код
// Get the CATEGORY NAVIGATION 
$navigation_pathway = "";
$navigation_childlist = "";
$pathway_appended = false;

$flypage = vmGet($_REQUEST, "flypage" );

вставляем:
Код
// Try get flypage for category_id
if (empty($flypage) && !empty($category_id))  {
$q = "SELECT category_flypage FROM #__{vm}_category WHERE category_id = '$category_id' LIMIT 0,1";
$db->query( $q );
$db->next_record();
$flypage = $db->f('category_flypage');
}

2. Я не вижу смысла менять последовательность параметров при формирование URL. Любой хороший роутер решает эту проблему. Я использую роутер от danik.html. Надо просто добавить в URL категорию.

После кода
Код
if( !empty($next_product) ) {
$url_parameters = 'page=shop.product_details&product_id='.$next_product['product_id'].'&flypage='.$ps_product->get_flypage($next_product['product_id']).'&pop='.$pop;
вставляем
Код
	if ($category_id) {
$url_parameters .= "&category_id=".$category_id;
}

Аналогично после
Код
if( !empty($previous_product) ) {
$url_parameters = 'page=shop.product_details&product_id='.$previous_product['product_id'].'&flypage='.$ps_product->get_flypage($previous_product['product_id']).'&pop='.$pop;
вставляем тоже
Код
	if ($category_id) {
$url_parameters .= "&category_id=".$category_id;
}

Собственно все начинает правильно работать.
« Последнее редактирование: 29.12.2011, 07:25:06 от kordima »
*

Ravilka

  • Осваиваюсь на форуме
  • 33
  • 5 / 1
Вот правильный код

Код
if( !empty($next_product) ) {
$url_parameters = 'page=shop.product_details&flypage='.$ps_product->get_flypage($next_product['product_id']).'&product_id='.$next_product['product_id'].'&category_id='.$category_id;
    if( $manufacturer_id ) {
     $url_parameters .= "&manufacturer_id=" . $manufacturer_id;
    }
    if( $keyword != '') {
     $url_parameters .= "&keyword=".urlencode($keyword);
    }
if( $pop == 1 ) {
$next_product_url = $sess->url( $_SERVER['PHP_SELF'].'?'.$url_parameters );
} else {
$next_product_url = str_replace("index2","index",$sess->url( $url_parameters ));
}
}
if( !empty($previous_product) ) {
$url_parameters = 'page=shop.product_details&flypage='.$ps_product->get_flypage($previous_product['product_id']).'&product_id='.$previous_product['product_id'].'&category_id='.$category_id;

Теперь все правильно работает
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Описание категории опустить под товары

Автор angelo4ek-001

Ответов: 5
Просмотров: 3193
Последний ответ 12.11.2015, 01:53:39
от fsv
Как сделать отображение атрибутов товара в категории ?

Автор Timer

Ответов: 0
Просмотров: 2491
Последний ответ 21.01.2015, 23:43:33
от Timer
VirtueMart -как убрать слово "КАТЕГОРИИ" на первой странице магазина

Автор stalker828

Ответов: 12
Просмотров: 10376
Последний ответ 30.07.2014, 11:51:16
от ZAIRA
Как перенести кнопку редактирования товара с fly-страницы на страницу категории?

Автор longestall

Ответов: 5
Просмотров: 2973
Последний ответ 09.07.2014, 17:40:59
от talentas
Не заполняется "Описание категории"

Автор atlantavto2011

Ответов: 0
Просмотров: 1634
Последний ответ 07.07.2014, 18:21:48
от atlantavto2011