Новости 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 Гость просматривают эту тему.
  • 9 Ответов
  • 3446 Просмотров
*

saidrustam

  • Захожу иногда
  • 100
  • 7 / 0
в коде есть SQL выборка, и отправка уделомлении на email указанный в обявлении(в этом таблице). А хотелось бы чтобы он брал email из таблицы users при условии(#__adsmanager_ads.id == users.id)
как это оформить? можеть спомощью UNION, но я не силен в sql, помогите ребята

function manage_expiration($option,$plugins){
...
$database->setQuery( "SELECT id,email,ad_headline,userid FROM #__adsmanager_ads WHERE DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) < CURDATE() AND recall_mail_sent = 0");
...
sendEmail($ad,$conf,$option);
*

saidrustam

  • Захожу иногда
  • 100
  • 7 / 0
Вопрос решен, выкладываю решение проблем:

$database->setQuery( "SELECT a.id,j.email,a.ad_headline FROM #__adsmanager_ads AS a, jos_users AS j WHERE DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) < CURDATE() AND recall_mail_sent = 0 AND a.userid = j.id");
*

Doc

  • Захожу иногда
  • 456
  • 17 / 0
А в 2.6 никто не знает как такое можно сделать ?
А то если поле Емаил не заполнено, то он не отправляет уведомление в версии 2.6.2
Нашел похожий код в administrator/components/com_adsmanager/models/content.php
Там есть аж несколько штук похожих строк, а вот какая точно и там ли это нужно делать

Может кто знает ?
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
не проще сделать поле Email обязательным для заполнения?
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

Doc

  • Захожу иногда
  • 456
  • 17 / 0
Я лично не люблю вести переписку, так как это бестолковое занятие, все кто что то писал, то не один еще ничего не купил
Так сидят в офисах заняться нечем, вот и ведут переписку, а те кто хочет что то купить, то всегда звонят
Поэтому не хочу делать обязательное поле для емаил, да еще если делаешь формой, то шаблон перекашивает при отправке
По этой причине у себя в объявлениях емаил не указываю и не делаю его обязательным, раньше вообще выключал это поле, но потом решил, что может кто захочет по переписываться и оставит свой емаил


Сейчас код из второго сообщения вставил в файл туда, где указал путь в своем сообщение и все теперь работает и берет емаил из регистрации пользователя
Для тех кто не включает уведомление на емаил, то их наверное и так все устроит, так как это нужно только для уведомлений
*

beicik

  • Захожу иногда
  • 60
  • 8 / 0
Вопрос решен, выкладываю решение проблем:

$database->setQuery( "SELECT a.id,j.email,a.ad_headline FROM #__adsmanager_ads AS a, jos_users AS j WHERE DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) < CURDATE() AND recall_mail_sent = 0 AND a.userid = j.id");

а можно поподробнее как это сделать?
*

Doc

  • Захожу иногда
  • 456
  • 17 / 0
beicik, какая у вас версия ?
Если 2.5, то в файле components/com_adsmanager/adsmanager.php
Находим этот код
Код
$database->setQuery( "SELECT id,email,ad_headline,userid FROM #__adsmanager_ads WHERE DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) < CURDATE() AND recall_mail_sent = 0");
И меняем на этот
Код
$database->setQuery( "SELECT a.id,j.email,a.ad_headline FROM #__adsmanager_ads AS a, jos_users AS j WHERE DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) < CURDATE() AND recall_mail_sent = 0 AND a.userid = j.id");
И все

Если версия 2.6
То ищите код в administrator/components/com_adsmanager/models/content.php
Там он почти такой же
*

beicik

  • Захожу иногда
  • 60
  • 8 / 0
beicik, какая у вас версия ?
Если 2.5, то в файле components/com_adsmanager/adsmanager.php
Находим этот код
Код
$database->setQuery( "SELECT id,email,ad_headline,userid FROM #__adsmanager_ads WHERE DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) < CURDATE() AND recall_mail_sent = 0");
И меняем на этот
Код
$database->setQuery( "SELECT a.id,j.email,a.ad_headline FROM #__adsmanager_ads AS a, jos_users AS j WHERE DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) < CURDATE() AND recall_mail_sent = 0 AND a.userid = j.id");
И все

Если версия 2.6
То ищите код в administrator/components/com_adsmanager/models/content.php
Там он почти такой же
Спасибо
*

Doc

  • Захожу иногда
  • 456
  • 17 / 0
А кто подскажет как решить это в AdsManager 2.8.2
Там код отличается
Вот код из 2.8.2
Код
$this->_db->setQuery( "SELECT * FROM #__adsmanager_ads WHERE expiration_date IS NOT NULL AND DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) <= CURDATE() AND recall_mail_sent = 0 AND published = 1");
Нужно заменить на этот
Код
$this->_db->setQuery( "SELECT a.id,j.email,a.ad_headline FROM #__adsmanager_ads AS a, jos_users AS j WHERE DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) < CURDATE() AND recall_mail_sent = 0 AND a.userid = j.id");

Может кто подскажет ?
Думал сделать так
Код
$this->_db->setQuery( "SELECT * FROM #__adsmanager_ads WHERE expiration_date IS NOT NULL AND DATE_SUB(expiration_date, INTERVAL ".$conf->recall_time." DAY) <= CURDATE() AND recall_mail_sent = 0 AND a.userid = j.id AND published = 1");
Только не знаю на сколько это правильно будет и будет ли вообще работать
Или можно смело менять код и все будет нормуль ?
*

Doc

  • Захожу иногда
  • 456
  • 17 / 0
Попробовал поставил старый код, не работает...
Как же такое можно сделать в 2.8, все перепробовал и нечего не вышло ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать сортировку объявдений в AdsManager

Автор Olegarh

Ответов: 9
Просмотров: 16009
Последний ответ 03.06.2018, 22:59:57
от Sabotage
AdsManager - как сделать несколько адресов?

Автор Ksenia2009

Ответов: 0
Просмотров: 11784
Последний ответ 21.04.2018, 15:13:44
от Ksenia2009
Как сделать drop down меню на странице объявлений Contents List в AdsManager?

Автор fadsergc

Ответов: 0
Просмотров: 1584
Последний ответ 13.03.2017, 01:25:00
от fadsergc
новая функция AdsManager 2.6.5 - продление срока объявления

Автор aaalexusss

Ответов: 102
Просмотров: 24276
Последний ответ 28.09.2016, 11:15:21
от moonaway
Как сделать меню категорий сквозным?

Автор kozhenevsky

Ответов: 1
Просмотров: 1571
Последний ответ 30.08.2016, 07:23:44
от biper