Новости Joomla

Новый способ добавления и рендера полей в 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.

<?php // В Controller/View добавляем поля $this->form ->addControlField('task', '') ->addControlField('return', $input->getBase64('return', '')) ->addControlField('forcedLanguage', $forcedLanguage);

А в layout'е просто используем метод

renderControlFields()

<?php // В layout формы echo $this->form->renderControlFields();

Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.

Смотреть Pull Request

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

chilly_bang

  • Захожу иногда
  • 113
  • 1 / 1
Приветствую.

Для того, чтобы достичь цель, поставленную в теме:
- сгрузить, инсталлировать, не забыть опубликовать плагин JosTag; версию плагина для 2.5 тут привесил.
- добавить к коду шаблона, файл item.php, след. строки:

Код
<?php echo $this->item->event->onContentPrepare; ?>

<?php echo JHTML::_('content.prepare', '{tag}meta name="tagname" content="'.$this->item->extraFields->алиас_вашего_доп_поля->value.'"{/tag}'); ?>
готово. теперь замените соответственно tagname и алиас_вашего_доп_поля на необходимые данные.

пс: если наполнение тегов данными из полей не нужно, а необходим "один тег на всех", то вместо
Код
'.$this->item->extraFields->алиас_вашего_доп_поля->value.'
задайте просто содержание тега.

ппс: спасибо @Poznakomlus - навёл на мысль

пппс: а если совсем попроще, то:
Код
<?php

$doc =& JFactory::getDocument();
$doc->addCustomTag( '
<!--Meta-->
<meta name="tag1" content="1"/>
<meta name="tag2" content="'.$this->item->extraFields->алиас_вашего_доп_поля->value.'"/>
' );
?>
без всяких плагинов.

[вложение удалено Администратором]
« Последнее редактирование: 24.01.2013, 05:40:11 от chilly_bang »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод доп полей

Автор orchanin

Ответов: 19
Просмотров: 8587
Последний ответ 12.08.2021, 09:05:16
от John_Flores
Дополнительные поля в разных местах шаблона

Автор stanislav-1983

Ответов: 6
Просмотров: 5223
Последний ответ 12.09.2015, 14:25:01
от Eholov
Как в шаблон вывода материалов по тегу добавить инфо о пользователе?

Автор CanVas

Ответов: 2
Просмотров: 1989
Последний ответ 03.10.2014, 13:23:53
от CanVas
Добавить новый параметр в категорию

Автор lexx006

Ответов: 0
Просмотров: 1267
Последний ответ 07.10.2013, 10:49:37
от lexx006
Как скрыть незаполненные дополнительные поля

Автор Twist6

Ответов: 48
Просмотров: 14371
Последний ответ 11.02.2013, 20:39:59
от waterfly