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

rentony

  • Захожу иногда
  • 93
  • 0 / 0
в расширенном поиске игнорируются настройки поиска по пунктам Check-box, по всему остальному поиск идет, а по этим пунктам ничего, хоть ставишь галочку, хоть нет, показывает всё
подскажите с чем это может быть связанно, и если это стандартная проблема адсменеджера, можно ли это исправить?
« Последнее редактирование: 07.02.2012, 14:15:48 от rentony »
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
Re: не работает поиск Check Box (Single)
« Ответ #1 : 03.02.2012, 12:06:20 »
почитал по форуму, наткнулся на много записей что в стандартной сборке адсменеджера, не работает толком Check Box (Multiple), но про Silngle ни слова...
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
Re: не работает поиск Check Box (Single)
« Ответ #2 : 03.02.2012, 13:39:42 »
Проверил Multiple, тоже как то криво работает((
*

Alex89

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

rentony

  • Захожу иногда
  • 93
  • 0 / 0
уже второй день мозгую(( желательно починить Multiple конечно, т.к. это очень важная деталь AdsManager'a... он как то криво запрос поиска отправляет по ходу
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Убил сцуко столько времени, чтобы починить пока single checkbox, он сцуко такая ни в какую не хотел считывать состояние галочки (отмечена, не отмечена), всё время передавалась пустая строка...
и какого же сцуко было моё удивление когда залез в исходник страницы расширенного поиска - в теге name у checkbox'a вместо имени поля был его заголовок, вот бл... слов не хватает
Итак, открываем файлик \components\com_adsmanager\helpers\field.php ищем функцию showFieldSearch, в теле функции меняем строки
Код
case 'checkbox':
     if ($value == 1)
          echo "<input class='inputbox' type='checkbox' name='".$field->title."' value='1' checked='checked' />\n";
     else
          echo "<input class='inputbox' type='checkbox' name='".$field->title."' value='1' />\n";
     break;
на
Код
case 'checkbox':
     if ($value == 1)
          echo "<input class='inputbox' type='checkbox' name='".$field->name."' value='1' checked='checked' />\n";
     else
          echo "<input class='inputbox' type='checkbox' name='".$field->name."' value='1' />\n";
     break;
Открываем файлик \administrator\components\com_adsmanager\models\field.php, ищем функцию getSearchFieldsSql, в теле функции находим
Код
case 'checkbox':
меняем на
Код
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     else $search .= " AND a.$fsearch->name <> 1";
     break;
Всё, поиск по галкам работает, мультигалки завтра посмотрю
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
хех) мда) мне вот интересно, вроде умные люди делаю адсменеджер, а такие глупые косяки оставляют)
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
мне вот это тоже странно показалось)
Код
case 'checkbox':
но в PHP не мастер еще, ну и подумал может ссылается это на нижнюю строку там...
*

Alex89

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

rentony

  • Захожу иногда
  • 93
  • 0 / 0
с точным совпадением желательно
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
Alex89, поиск по Single работает так сейчас) - если не ставить ни какие галочки, то выводит объявления ТОЛЬКО без галочек, если есть галочки, то он их не выводит... по идеи должен выводить же все, покапаюсь сейчас сам, мож допру (в чем сильно сомневаюсь), но расчитываю на Вашу светлую голову)
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
всё) разобрался)
просто из файла "\administrator\components\com_adsmanager\models\field.php"
из функции getSearchFieldsSql удалил одну строчку, было так:
Код
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     else $search .= " AND a.$fsearch->name <> 1";
     break;
стало так:
Код
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     break;
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Такс, для мультигалок поменять нужно только поисковый запрос
в файле \administrator\components\com_adsmanager\models\field.php меняем в функции getSearchFieldsSql кусок кода с такого:
Код
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
$search .= "a.$fsearch->name = ".$this->_db->Quote(",".$value[$i].",");
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
на такой:
Код
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
$val .= ','.$value[$i];
if ($i == $nb-1)
$val .= ",";
}
$search .= " AND a.$fsearch->name = ".$this->_db->Quote($val);
break;
Всё!  :D
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

rentony

  • Захожу иногда
  • 93
  • 0 / 0
*

alexnpost

  • Новичок
  • 2
  • 0 / 0
Такс, для мультигалок поменять нужно только поисковый запрос
в файле \administrator\components\com_adsmanager\models\field.php меняем в функции getSearchFieldsSql кусок кода с такого:
Код
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
$search .= "a.$fsearch->name = ".$this->_db->Quote(",".$value[$i].",");
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
на такой:
Код
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
$val .= ','.$value[$i];
if ($i == $nb-1)
$val .= ",";
}
$search .= " AND a.$fsearch->name = ".$this->_db->Quote($val);
break;
Всё!  :D
Привет, благодарю тебя за код опубликованный в посте http://joomlaforum.ru/index.php/topic,199831.0.html
по поиску по мультигалкам.
У меня сейчас с ними такая проблема: ты правильно сделал, что поиск находит при отмеченных сразу нескольких галочках.
Но есть такая штука. он ищет по всем отмеченным полям, а хотелось бы чтобы выводил и те объявления, где присутствует одна из галочек
Например у меня
Район 1
Район 2
Район 3
Есть варианты где выбран каждый из районов, а есть где допустим Выбран 1 и 2 районы одновременно
Когда я ставлю поиск в 1 и 2 районе - он мне выводит только объявление где стоят одновременно обе галки, а хотелось бы, чтобы и те где район 1 и район 2 отдельно стоят по-одиночки.
Я реально тебе заплачу за помощь! У меня существует реальный сайт http://cityyar.ru/ Я Пол года допиливал этот компонент
Теперь встало загвоздкой все на последнем шаге. очень прошу тебя помощи!
*

alexnpost

  • Новичок
  • 2
  • 0 / 0
Код
                case 'multicheckbox':
                case 'multiselect':
                    $value = JRequest::getVar( $fsearch->name,    array() );
                    for($i = 0,$nb=count($value);$i < $nb;$i++)
                    {
                        if ($i == 0)
                            $search .= " AND (";   
                        $search .= "a.$fsearch->name LIKE '%,$value[$i],%'";
                        if ($i < $nb - 1)
                            $search .= " OR ";
                        else
                            $search .= " )";   
                    }                   
                    break;   
Вот как надо исправить! Нашел решение! Простите, что побеспокоил! Все вставляйте этот код, предыдущий немного не коректен. Помощь больше не требуется!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поиск по текстовым полям AdsManager

Автор Den85

Ответов: 4
Просмотров: 10725
Последний ответ 19.01.2019, 14:28:47
от Den85
AdsManager Расширенный поиск

Автор MakGrouman

Ответов: 1
Просмотров: 11017
Последний ответ 25.12.2018, 08:30:30
от MakGrouman
Выдает ошибку. 1064 You have an error in your SQL syntax; check the manu

Автор designerandrey

Ответов: 1
Просмотров: 2195
Последний ответ 10.10.2018, 20:13:20
от designerandrey
AdsManager поиск в категориях

Автор oleksyayko

Ответов: 4
Просмотров: 17086
Последний ответ 28.01.2018, 14:54:11
от alex79
Не работает ошибка 404

Автор Mick_20

Ответов: 14
Просмотров: 2467
Последний ответ 17.10.2017, 12:36:07
от Mick_20