Новости Joomla

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями 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 Гость просматривают эту тему.
  • 8 Ответов
  • 1686 Просмотров
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Допустим, есть класс, там метод.
Там определяется переменная $orderbyq.
Затем вызывается плагин, но нужная переменная туда не передается. Возможно ли ее переопределить в плагине, чтобы она переопределилась и в родителе?

Проще будет в коде понять :)

controllers/category.php
Код
class JshoppingControllerCategory extends JControllerLegacy{
  function view(){
    $orderbyq = getQuerySortDirection($order, $orderby);
    $dispatcher->trigger( 'onBeforeDisplayCategory', array(&$category, &$sub_categories) );
    ...
  }
}

плагин
Код
function onBeforeDisplayCategory(&$category, &$sub_categories){
    $orderbyq = "DESC";
}

такой смысл в общем... и контроллер дальше работает с переопределенной переменной.

Так возможно или если в плагин не передается нужных переменных - придется вызывать его позже и дублировать там код контроллера с новой переменной?
« Последнее редактирование: 21.06.2014, 17:34:21 от devirus »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Сменить значение переменной
« Ответ #1 : 20.06.2014, 23:13:00 »
к сожалению (или к счастью, смотря с какой стороны смотреть), переопределить в плагине можно только то, что ему дают переопределить
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Сменить значение переменной
« Ответ #2 : 20.06.2014, 23:44:31 »
Прикольно. Ну попробуйте
Код: php
$orderbyq = $dispatcher->trigger( 'onBeforeDisplayCategory', array(&$category, &$sub_categories) );
var_dump($orderbyq);
Код: php
function onBeforeDisplayCategory(&$category, &$sub_categories){
   return "DESC";
}
Может и сработает.
Только чем это будет отличаться от прямого присвоения?
Код: php
$orderbyq = "DESC";
Только тем, что сгоняли в соседний город, чтобы переобуться?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Сменить значение переменной
« Ответ #3 : 21.06.2014, 00:50:29 »
так суть же в том, что менять контроллер нельзя
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Re: Сменить значение переменной
« Ответ #4 : 21.06.2014, 12:00:20 »
Да, верно, суть в том чтоб не менять исходный код, а то в прошлый раз кучу всего переправил, теперь обновляться боюсь.

Проблему решил без плагина, в шаблоне, не знаю насколько рационально, но работает :)
Нужна была сортировка "по убыванию цены", "по возрастанию цены", "по новинкам" и "по популярности" в выпадающем селекте.

Код
$mainframe = JFactory::getApplication();
$order = $mainframe->getUserStateFromRequest('order', 'order', $this->config->product_sorting, 'int');
$orderby = $mainframe->getUserStateFromRequest( $context.'orderby', 'orderby', $jshopConfig->product_sorting_direction, 'int');
if ( $order==2 && $orderby==0 ){
    $order = "2_up";
} elseif ( $order==2 && $orderby==1 ){
    $order = "2_down";
};

$selected = "selected=\"selected\"";

Код
<?php if ($this->config->show_sort_product){ ?>
        <select id="order" class="" onchange="if(this.value!='<?php print $order; ?>'){ $_('orderby').value = 0; if(this.value=='2_up'){this.value = 2;$_('orderby').value = 0;}; if(this.value=='2_down'){this.value = 2;$_('orderby').value = 1;}; if(this.value=='3'){$_('orderby').value = 1;}; submitListProductFilters(); }" size="1" name="order">
            <option <?php if($order==6){echo $selected;} ?>value="6">популярности</option>
            <option <?php if($order=="2_up"){echo $selected;} ?>value="2_up">возрастанию цены</option>
            <option <?php if($order=="2_down"){echo $selected;} ?>value="2_down">убыванию цены</option>
            <option <?php if($order==3){echo $selected;} ?>value="3">новинкам</option>
        </select>
<?php } ?>

p.s. еще предстоит переделать подсчет "популярности" исходя не из "хитов", а из реальных продаж за последние X дней.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Сменить значение переменной
« Ответ #5 : 21.06.2014, 15:27:13 »
Цитировать
не знаю насколько рационально
делал точно также, в шаблоне. конечно, немного не рационально, но к сожалению, если без хака ядра, то я вижу только такой путь.

Цитировать
еще предстоит...
а оно надо? :) откуда юзеру знать реальные данные? а запросы будут лишние.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Re: Сменить значение переменной
« Ответ #6 : 21.06.2014, 17:03:50 »
Цитировать
откуда юзеру знать реальные данные?

оно не ради юзеров :) а ради повышения продаж (реально популярный товар ведь с большей вероятностью купят)...
уже другую логику придумал — по реальным продажам отдельный блок "Хиты продаж", а в популярности надо ограничить хиты за последние X дней (иначе я сам уже несколько сотен хитов накрутил у одного товара пока тестил и его никто не обгонит).
Плюс в идеале хиты считать уникальные, но это уже придирки.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Сменить значение переменной
« Ответ #7 : 21.06.2014, 17:09:37 »
Цитировать
пока тестил и его никто не обгонит
ручками в базе обнови
каждая такая хотелка лишние запросы в базу
потому должен выбирать, а стоит ли?
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Re: Сменить значение переменной
« Ответ #8 : 21.06.2014, 17:28:58 »
Цитировать
ручками в базе обнови

Даже если свои хиты почищу. Они не должны накапливаться за всё время существования магазина. Сезонность убивается.
Начали летом, у холодного лимонада хиты идут - все логично, но пришел новый год и у шоколадного деда мороза хиты зашкалили, а летом он так и остался "самым популярным", потому что лимонад уже не может перебить его. Отсюда снижение продаж и лояльности.
Утрировано конечно, но суть такая :)

А если брать хиты за неделю-месяц, то всё супер. Придется жертвовать запросом(
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин - Скрывать цены, если товара нет в наличии [Скачать]

Автор kit2m2

Ответов: 8
Просмотров: 3030
Последний ответ 24.01.2020, 11:01:34
от kit2m2
Назначение цены в карточке товара в зависимости от группы пользователей

Автор san_san_ku

Ответов: 16
Просмотров: 1475
Последний ответ 03.10.2019, 19:11:45
от san_san_ku
Вывод цены

Автор mario052

Ответов: 2
Просмотров: 988
Последний ответ 22.03.2018, 17:54:33
от mario052
Рандомная сортировка товаров одного производителя

Автор dvcool

Ответов: 2
Просмотров: 1598
Последний ответ 01.02.2018, 21:30:40
от dvcool
Сортировка товаров по артикулу

Автор lammmer

Ответов: 0
Просмотров: 1008
Последний ответ 13.02.2017, 17:54:46
от lammmer