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

Добрый день!
Появилась такая задача: создать модуль, который бы отображал Горячие туры.
Сделал такой файл xml:
Код
<params addpath="/modules/mod_hot_tours/elements">
        <param name="tour_dates" type="text" default="" label="Дата вылета" description="Дата вылета в тур" />
        <param name="tour_nights" type="text" default="" label="Ночей в туре" description="Количество ночей в туре" />
        <param name="tour_country" type="country" default="" label="Страна" description="Страна, в которую прибывают в тур" />
        <param name="@spacer" type="spacer" default="" label="" description="" />
        <param name="tour_name_hotel1" type="text" size="40" default="" label="Название 1-го отеля" description="Название 1-го отеля" />
        <param name="tour_price_hotel1" type="text" default="" label="Цена 1-го отеля" description="Цена 1-го отеля" />
        <param name="tour_name_hotel2" type="text" size="40" default="" label="Название 2-го отеля" description="Название 2-го отеля" />
        <param name="tour_price_hotel2" type="text" default="" label="Цена 2-го отеля" description="Цена 2-го отеля" />
        <param name="tour_name_hotel3" type="text" size="40" default="" label="Название 3-го отеля" description="Название 3-го отеля" />
        <param name="tour_price_hotel3" type="text" default="" label="Цена 3-го отеля" description="Цена 3-го отеля" />
        <param name="tour_name_hotel4" type="text" size="40" default="" label="Название 4-го отеля" description="Название 4-го отеля" />
        <param name="tour_price_hotel4" type="text" default="" label="Цена 4-го отеля" description="Цена 4-го отеля" />
        <param name="tour_name_hotel5" type="text" size="40" default="" label="Название 5-го отеля" description="Название 5-го отеля" />
        <param name="tour_price_hotel5" type="text" default="" label="Цена 5-го отеля" description="Цена 5-го отеля" />
        <param name="tour_name_hotel6" type="text" size="40" default="" label="Название 6-го отеля" description="Название 6-го отеля" />
        <param name="tour_price_hotel6" type="text" default="" label="Цена 6-го отеля" description="Цена 6-го отеля" />
        <param name="tour_name_hotel7" type="text" size="40" default="" label="Название 7-го отеля" description="Название 7-го отеля" />
        <param name="tour_price_hotel7" type="text" default="" label="Цена 7-го отеля" description="Цена 7-го отеля" />
        <param name="tour_descr" type="textarea" rows="10" cols="50" default="" label="Краткое описание" description="Краткое описание" />
    </params>

Но в этом случае отображается много блоков (Название отеля, Цена отеля), а нужно, чтобы отображались один такой блок.
А при нажатии на кнопку "Добавить отель" в параметры модуля добавлялся еще один блок с полями Название отеля, Цена отеля.

Подскажите как это реализовать? Может воспользоваться elements?
*

migus

  • Давно я тут
  • 992
  • 144 / 0
  • OPEN THE BOX
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Да,если постараться то можно такое сделать. Нужно создать свой тип элемента. Но тут загвоздка есть. Параметр может хранить либо единичное значение либо массив, но не массив массивов что тут требуется. Вот пример элемента который отображает поля и кнопку Давить поле. Сделать пары полей уже не получится.

Код: php
class JElementMultiText extends JElement
{
/**
* Element name
*
* @access protected
* @var string
*/
var $_name = 'MultiText';

function fetchElement($name, $value, &$node, $control_name)
{
$size = ( $node->attributes('size')? 'size="'.$node->attributes('size').'"' : '' );
$class = ( $node->attributes('class')? 'class="'.$node->attributes('class').'"' : 'class="text_area"' );
$document =& JFactory::getDocument();
        /*
         * Required to avoid a cycle of encoding &
         * html_entity_decode was used in place of htmlspecialchars_decode because
         * htmlspecialchars_decode is not compatible with PHP 4
         */
       

$script = '
function addInput(button) {
var input = button.parentNode.insertBefore(document.createElement(\'input\'), button);
input.parentNode.insertBefore(document.createElement(\'br\'), button);
input.name = \''.$control_name.'['.$name.'][]\''.';
return false;
}
';
$document->addScriptDeclaration($script);
$inputs = array();
foreach ((array) $value as $val)
{
$val = htmlspecialchars(html_entity_decode($val, ENT_QUOTES), ENT_QUOTES);
$inputs[] = '<input type="text" name="'.$control_name.'['.$name.'][]" value="'.$val.'" '.$class.' '.$size.' />';
}
return implode('<br />', $inputs).'<button type="button" onclick="addInput(this)">Add Input</button>';
}
}
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужна помощь в исправлении ошибок модуля

Автор megaboy161

Ответов: 16
Просмотров: 1235
Последний ответ 20.01.2020, 18:00:44
от sivers
AJAX для модуля на 1.5

Автор voland

Ответов: 2
Просмотров: 1478
Последний ответ 04.03.2016, 12:08:41
от b2z
[how to] Красота JHTML, или создание элементов формы с

Автор Professor

Ответов: 11
Просмотров: 24315
Последний ответ 27.12.2012, 18:14:38
от BaR
Как вы "въехали" в создание расширений?

Автор aanvale

Ответов: 4
Просмотров: 2703
Последний ответ 13.10.2012, 21:44:25
от passer
Как получить ID для каждого выводимого модуля на странице

Автор enshtein

Ответов: 6
Просмотров: 6319
Последний ответ 12.01.2012, 08:54:19
от enshtein