Новости Joomla

Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0

Метод registerListeners() в CMSPlugin в плагинах  планируется удалить в Joomla 7.0

👩‍💻 Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0.Этот метод регистрирует устаревшие слушатели событий в диспетчере, имитируя работу плагинов Joomla! 3.x и ниже для Joomla 4+. По умолчанию этот метод ищет все общедоступные методы, название которых начинается с on. Он регистрирует лямбда-функции (замыкания), которые пытаются преобразовать аргументы отправленного события в аргументы вызова метода и вызвать ваш метод on<Что-то>. Результат передаётся обратно событию в его аргумент result.Теперь этот слой совместимости с устаревшей Joomla 3 помечен к удалению в Joomla 7.0, которая должна выйти осенью 2027 года. Это означает, что те уникальные расширения от Joomla 2.5 / Joomla 3, которые ещё работали на Joomla 4-6 скорее всего окончательно перестанут работать на Joomla 7. Предполагается, что активные разработчики планомерно и постепенно избавляются от технического долга и обновляют свои расширения. @joomlafeed#joomla #разработка #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 930 Просмотров
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Здравствуйте!
Вот у меня есть 3 переменных - $a, $b, c$ в шаблоне
И есть текст, внутрь которого мне нужно их вставить "Some long text for front end"
Я делаю это по дебильному:
Код
echo JText::_(SOME).$a.JText::_(LONG).$b.JText::_(TEXT).$c;

А как предать их прямо в языковую строку, типа
SOME_LONG_TEXT = "Some %a long %b text c% for front end", чтобы не резать ее на части?
Спасибо.

*

sivers

  • Живу я здесь
  • 2597
  • 360 / 0
А как предать их прямо в языковую строку, типа
SOME_LONG_TEXT = "Some %a long %b text c% for front end", чтобы не резать ее на части?
Что-то вроде такого должно быть:
Код
echo sprintf(JText::_(SOME_LONG_TEXT), $a, $b, $c);
Можно использовать printf - тогда echo не требуется (команда сразу выводит текст, а не возвращает его).
Обратите внимание, что в языковой константе надо использовать другие спецсимволы:
Код
SOME_LONG_TEXT = "Some %s long %s text %s for front end"
Значение их, подробности и примеры можно посмотреть здесь:
https://www.php.net/sprintf
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Да, работает.
Спасибо!
Без этой функции мультиязычность сделать нереально.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
JText::sprintf('SOME_LONG_TEXT', $a, $b, $c)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться