Новости Joomla

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+). При отображении форм компонента в админке раньше разработчикам нужно было описывать скрытые поля в лейаутах. И выглядело это так:

<?php     // Это файл в /layouts/components/com_component/your_layout.php?><input type="hidden" name="task" value=""><input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"><input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"><?php echo HTMLHelper::_('form.token'); ?>
Начиная с Joomla 5.3 добавлен новый способ добавления таких полей (их называют control fields) - программно. И теперь это можно сделать просто в Controller / View.
// В Controller/View добавляем поля$this->form  ->addControlField('task', '')  ->addControlField('return', $input->getBase64('return', ''))  ->addControlField('forcedLanguage', $forcedLanguage);
А в layout'е просто используем метод
renderControlFields()
// В layout формыecho $this->form->renderControlFields();
Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.Смотреть
Pull Request@joomlafeed#joomla #разработка #php

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.

v.4.1.0. Что нового?

Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.

Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.

Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.

Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.

Множество мелких исправлений ошибок и оптимизаций.

Сайт проекта

GitHub расширения

Скачать

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

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Всем привет стандартные фильтры выглядят так:
Например выпадающий список категорий
Код

<select id="filter_category_id" name="filter_category_id" onchange="this.form.submit()" title="" >
        <option value=""><?php echo JText::_('ALL_CATEGORIES');?></option>
        <?php echo JHtml::_('select.options', "массив_вариантов", 'value', 'text', $this->state->get('filter.category_id'));?>
</select>


myModel->populateState()
Код

        // Берем значения выбранного фильтра из состояния, где имя filter_category_id. Для фильтрации в getListQuery().
        $category = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id');

        // Устанавливаем выбранное состояния фильтра для выпад.списка select.
        $this->setState('filter.category_id', $category );


Все просто, есть имя, есть фильтрация!

Ну так вот. При создании пользовательских фильтров в кастомном компоненте имя фильтра заранее не известно и его невозможно прописать в шаблоне и в модели для синхронизации. Я использовал для пользовательских фильтров ID таблицы БД. У меня получается <select name="customfilter_N" .../>, где N это ID фильтра. Теперь не могу в populateState() отловить имя фильтра $this->getUserStateFromRequest($this->context . '.customfilter', 'customfilter_'.$N ); Какие есть мысли?

Единственный для меня пока рабочий способ это делать еще один запрос в БД из таблицы customfilters тянуть все существующие ID. Перебором подставлять в 'customfilter_'.$N и проверять существование такого имени в запросе. Не слишком ли это? Получается код будет выполнятся каждый раз при обновлении/загрузке страниц.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести список списков?

Автор Заварник

Ответов: 3
Просмотров: 872
Последний ответ 07.12.2017, 13:19:38
от SeBun
Добавить свои фильтры поиска

Автор denism300

Ответов: 3
Просмотров: 1192
Последний ответ 05.11.2016, 17:14:35
от denism300