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

Негодяй

  • Захожу иногда
  • 117
  • 9 / 1
Сейчас, когда пользователи оставляют в тексте объявления ссылки они выводятся обычным текстом. Чтобы сделать их гиперссылками сделайте следующее:

Открываем файл: components/com_adsmanager/helpers/field.php
Перед последней скобкой } вставляем

Код: php
function array_field($ar, $field) {
  $a = array();
  foreach($ar as $r) array_push($a, $r[$field]);
  return $a;
}
function absolute_url($uri, $external=false, $param=false) {
  if(!preg_match("#^https?://#i", $uri)) {
    $uri = "http://$uri";
  }
  return  $uri;
}
 
function htmlize_links($s) {
  preg_match_all("#(?!<=\S)(https?://)?(www\.)?[a-z0-9\.\-]+\.(com|org|edu|net|us|gov|uk|name|info|gl)(/\S*)?#i", $s, $matches, PREG_SET_ORDER);
  if($matches) {
    $links = $this->array_field($matches, 0);
    foreach($links as $i => $link) $links[$i] = preg_replace('/[\)\]]+$/', '', $link);
    $links = array_unique($links);
    foreach($links as $l) {
      $url      = $this->absolute_url($l);
      $link     = "<a href='$url' target='_blank'>$l</a>";
      $regexp   = "|(?!<=\S)".preg_quote($l, '|')."(?=[\s\)])|";
      $s        = preg_replace($regexp, $link, $s);
    }
  }
  return $s;
}

Затем находим

Код: php
case 'textarea':
                    $return .= str_replace(array("\r\n", "\n", "\r"), "<br />", $value);
                    break;

и меняем на

Код: php
case 'textarea':
                    $return .= str_replace(array("\r\n", "\n", "\r"), "<br />", $this->htmlize_links($value));
                    break;

Готово.
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
Зачем такое делать?
*

zvi

  • Захожу иногда
  • 392
  • 4 / 0
Зачем такое делать?
я тоже такого мнения, у меня на доске там где не зарегистированые дают объявления наоборот автоматически ссылки убираются
*

Beer

  • Завсегдатай
  • 1105
  • 43 / 1
  • БИРУ - БИР!
 Это для лучшей индексации спама.
 Ты бы лучше силы приложил на то, чтобы юзер при наличии стоп-слов или ссылки в тексте объявления не мог его отправлять - это было бы полезная работа.
 А то админу шлют кучами спам, а он перед удалением еще его смотреть должен.
*

Негодяй

  • Захожу иногда
  • 117
  • 9 / 1
чтобы не индексировалось можно rel="nofollow" прописать
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Редактировать все объявления

Автор den_ko

Ответов: 32
Просмотров: 14325
Последний ответ 25.11.2021, 10:43:38
от FlexNL
Слетают категории объявления

Автор guardnext

Ответов: 1
Просмотров: 4495
Последний ответ 09.07.2019, 10:10:59
от guardnext
AdsManger не удаляет объявления

Автор kozhenevsky

Ответов: 0
Просмотров: 2217
Последний ответ 15.02.2018, 12:08:29
от kozhenevsky
Лечим кнопку "Delete from favorites" на странице объявления. AdsManager 3.1.11

Автор Mick_20

Ответов: 1
Просмотров: 2382
Последний ответ 24.12.2017, 22:28:14
от vadim73
Как добавить поле id объявления

Автор Den85

Ответов: 9
Просмотров: 3467
Последний ответ 11.11.2017, 15:18:48
от Den85