Новости 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

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

Аватары и Jomsocial
« : 04.03.2009, 21:56:31 »
Будет ли поддержка аватаров для Jomsocial ?????????????????  !!!???!!!
Или как это сделать? Спасибо.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Аватары и Jomsocial
« Ответ #1 : 04.03.2009, 22:22:06 »
Во-первых, вы уже одну тему на форуме по данному вопросу создали, во-вторых с момента публикации предыдущей темы сутки еще не прошли, так что поднимать вопрос заново оснований нет, в-третьих от большого количества вопросительных знаков, ваш вопрос более важным не станет.

Если вам это так срочно нужно и вам невтерпеж - вешайте объявление в коммерческом разделе, вполне возможно кто-нибудь и возьмется.

Потенциально - да, будет такая поддержка, но потом. Сейчас у меня на это времени нет.
*

abbyevg

  • Захожу иногда
  • 82
  • 6 / 0
  • эвилпанда
Аватары jomSocial в Jcomments
« Ответ #2 : 09.03.2009, 23:39:51 »
Посидел, наваял, т.к. самому надо.


файл \www\plugins\jcomments\jcomments.avatar.xml, в строку 27, добавить (до закрытия тега params):
Код
<option value="js">JomSocial</option>


файл \www\plugins\jcomments\jcomments.avatar.php, в строке 452, добавить
Код
case 'js':
require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');

foreach ($users as $user) {
$instance = new CUser($user);
$instance->init();
$avatars[$user]->avatar=$instance->getThumbAvatar();
$avatars[$user]->id=CRoute::_('index.php?option=com_community&view=profile&userid='.$user);
}

for ($i=0,$n=count($comments); $i < $n; $i++) {
$userid = $comments[$i]->userid;
if (isset($avatars[$userid])) {
$avatarFile = $avatars[$userid]->avatar;
$comments[$i]->avatar = '<img src="'. $avatarFile .'" alt="" border="0" />';
} else {
$comments[$i]->avatar = $noavatar;
}
if ($avatar_link && isset($avatars[$userid])) {
$comments[$i]->avatar = '<a href="'. JoomlaTuneRoute::_($profileLink . $avatars[$userid]->id) . '" target="_blank">' . $comments[$i]->avatar . '</a>';
}
$comments[$i]->profileLink = (intval($userid)) ? JoomlaTuneRoute::_($profileLink . $avatars[$userid]->id) : '';
}
unset($avatars);
break;

После чего, в настройках плагина jcomments.avatar появляется возможность выбора JomSocial
На моем сайте этот код выглядит немного иначе по некоторым причинам, но вышеприведенное должно работать. Проверяйте и исправляйте если есть ошибки. Надеюсь, Сергей включит это в след. релиз плагина.

Re: Аватары и Jomsocial
« Ответ #3 : 10.03.2009, 22:05:57 »
Тестил в лисе и експлоере.
Все работает зашибись большой респект   ;D :D
*

abbyevg

  • Захожу иногда
  • 82
  • 6 / 0
  • эвилпанда
Re: Аватары и Jomsocial
« Ответ #4 : 11.03.2009, 14:54:41 »
Небольшая поправка для jcomments.avatar.php, для корректной ссылки на профайл пользователя через аватар:

> В файл \www\plugins\jcomments\jcomments.avatar.php, в строке 452, добавить

Код
case 'js':
require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');

foreach ($users as $user) {
$instance = new CUser($user);
$instance->init();
$avatars[$user]->avatar=$instance->getThumbAvatar();
$avatars[$user]->id=CRoute::_('index.php?option=com_community&view=profile&userid='.$user);
}

for ($i=0,$n=count($comments); $i < $n; $i++) {
$userid = $comments[$i]->userid;
if (isset($avatars[$userid])) {
$avatarFile = $avatars[$userid]->avatar;
$comments[$i]->avatar = '<img src="'. $avatarFile .'" alt="" border="0" />';
} else {
$comments[$i]->avatar = $noavatar;
}
if ($avatar_link && isset($avatars[$userid])) {
$comments[$i]->avatar = '<a href="'. $avatars[$userid]->id . '" >' . $comments[$i]->avatar . '</a>';
}
$comments[$i]->profileLink = (intval($userid)) ? $avatars[$userid]->id : '';
}
unset($avatars);
break;
*

4.n

  • Захожу иногда
  • 127
  • 22 / 0
Re: Аватары и Jomsocial
« Ответ #5 : 24.04.2009, 17:48:24 »
Спасибо!
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Аватары и Jomsocial
« Ответ #6 : 24.04.2009, 17:57:20 »
Надеюсь, Сергей включит это в след. релиз плагина.
выключу но после серьезной переработки. есть проблема с производительностью, так как код:

Код: php
foreach ($users as $user) {
$instance = new CUser($user);
$instance->init();
$avatars[$user]->avatar=$instance->getThumbAvatar();
$avatars[$user]->id=CRoute::_('index.php?option=com_community&view=profile&userid='.$user);
}
добавит на страницу с комментариями столько запросов к БД, сколько пользователей участвовало в обсуждении... именно поэтому, для других компонентов, я выбираю данные прямо с БД, и в результате мы получаем 1 запрос, вместо целой пачки.

Так что для того, чтобы эта интеграция была полностью корректна - надо мне немного поковыряться в потрохах у JomSocial
*

waraxeman

  • Новичок
  • 8
  • 1 / 0
Re: Аватары и Jomsocial
« Ответ #7 : 26.04.2009, 20:45:13 »
У меня почему то не работает выше приведенные коды, JomSocial 1.1.145 и JComment 2.0. Отображается пустой аватар
« Последнее редактирование: 26.04.2009, 21:22:19 от waraxeman »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Аватары и Jomsocial
« Ответ #8 : 30.04.2009, 01:24:06 »
Я пока пользуюусь таким вариантом:

Код: php
case 'js':
require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');

for ($i=0,$n=count($comments); $i < $n; $i++)
{
$userid = $comments[$i]->userid;

$user = &CFactory::getUser($userid);

$comments[$i]->avatar = '<img src="'.$user->getThumbAvatar().'" alt="" border="0" />';

if ($avatar_link && $userid) {
$userLink = CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid);
$comments[$i]->avatar = '<a href="'. $userLink .'" target="_blank">' . $comments[$i]->avatar . '</a>';
}

$comments[$i]->profileLink = '<a href="'.$userLink.'" title="'.$user->getDisplayName().'"></a>';
}
break;
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Аватары и Jomsocial
« Ответ #9 : 30.04.2009, 02:03:55 »
А вот и производительный вариант, который Серж я надеюсь возьмёт на вооружение:

Код: php
case 'js':
if (count($users)) {
$db->setQuery('SELECT userid, thumb as avatar FROM #__community_users WHERE userid in (' . implode(',', $users)  . ')');
$avatars = $db->loadObjectList('userid');
unset($users);
} else {
$avatars = array();
}

require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');

for ($i=0,$n=count($comments); $i < $n; $i++)
{
$userid = $comments[$i]->userid;
$comments[$i]->avatar = '<img src="' . JURI::root() . $avatars[$userid]->avatar .'" alt="" border="0" />';

if ($avatar_link && isset($avatars[$userid])) {
$userLink = CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid);
$comments[$i]->avatar = '<a href="'. $userLink .'" target="_blank">' . $comments[$i]->avatar . '</a>';
}

$comments[$i]->profileLink = '<a href="'.$userLink.'" title=""></a>';
}
unset($avatars);

break;
Так как $avatars[$userid]->avatar существует всегда, то $noavatar вообще не использовался.

Я у себя его проверил - работает!  :D
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Аватары и Jomsocial
« Ответ #10 : 30.04.2009, 09:45:10 »
Так как $avatars[$userid]->avatar существует всегда, то $noavatar вообще не использовался.
во-первых, он не всегда существует... ведь если в списке комментарии от гостей, то массив $users будет пустой, и $avatars тоже..

во-вторых строчку:
Код: php
$comments[$i]->profileLink = '<a href="'.$userLink.'" title=""></a>';
нужно тоже включить в условие, что чуть выше... ведь иначе возможна ситуация, когда переменная $userLink не определена...

и в-третьих, а что они в базе хранят относительный путь к картинке? почему тут напрямую используется avatar прочитанный из базы в качестве пути к изображению?
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Аватары и Jomsocial
« Ответ #11 : 30.04.2009, 10:13:20 »
Блин, про гостей забыл! Спасибо за напоминание. Что касается хранения аватарок - в базе путь вот такой images/avatar/thumb_6df1e1aed5ee42be5adcd3e9.jpg

Вроде сейчас всё учёл?

Код: php
case 'js':
if (count($users)) {
$db->setQuery('SELECT userid, thumb as avatar FROM #__community_users WHERE userid in (' . implode(',', $users)  . ')');
$avatars = $db->loadObjectList('userid');
unset($users);
} else {
$avatars = array();
}

require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');

for ($i=0,$n=count($comments); $i < $n; $i++)
{
$userid = $comments[$i]->userid;
if (isset($avatars[$userid]->avatar))
{
$comments[$i]->avatar = '<img src="' . JURI::root() . $avatars[$userid]->avatar .'" alt="" border="0" />';
}
else
{
$comments[$i]->avatar = $noavatar;
}

if ($avatar_link && isset($avatars[$userid])) {
$userLink = CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid);
$comments[$i]->avatar = '<a href="'. $userLink .'" target="_blank">' . $comments[$i]->avatar . '</a>';
$comments[$i]->profileLink = '<a href="'.$userLink.'" title=""></a>';
}
else
{
$comments[$i]->profileLink = '';
}
}
unset($avatars);

break;
Хмм, хотя я сечйас проверил - если не залогинен, то аваратки не показываются вообще.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Аватары и Jomsocial
« Ответ #12 : 30.04.2009, 11:09:18 »
Замени:

Код: php
if (isset($avatars[$userid]->avatar))
на
Код: php
if (isset($avatars[$userid]) && isset($avatars[$userid]->avatar))
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Аватары и Jomsocial
« Ответ #13 : 30.04.2009, 12:17:30 »
Всё равно. Я уже по разому пытался менять, но как только делаю логаут - аватарки пропадают. То есть получается, что они вообще не пытаются вывестись - в IE даже нету неверного вывода (ну таких квадратиков вместо предпологаемых картинок).
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Аватары и Jomsocial
« Ответ #14 : 03.05.2009, 20:39:42 »
Серж - что думаешь? Почему могуть прпадать аватарки, если ты не залогинен?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Аватары и Jomsocial
« Ответ #15 : 03.05.2009, 20:49:47 »
Серж - что думаешь? Почему могуть прпадать аватарки, если ты не залогинен?
ну по тому коду, что ты привел, по идее пропадать не должны... чуть попозже попробую поставить этот JomSocial и проверить...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображаются аватары пользователей соцсетей

Автор Rom008

Ответов: 1
Просмотров: 3382
Последний ответ 08.05.2018, 13:03:16
от Rom008
Аватары

Автор fredi_k

Ответов: 1
Просмотров: 2062
Последний ответ 07.11.2014, 15:25:28
от Irina_25
Аватары из Ninjaboard

Автор ASTIN_SUMY

Ответов: 5
Просмотров: 3443
Последний ответ 03.03.2011, 23:24:17
от stadokorov
JComments - Avatars: Не отображаются аватары с форума vBulliten

Автор call007

Ответов: 10
Просмотров: 5097
Последний ответ 05.08.2010, 23:18:41
от call007