Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Почему-то очень неудобно реализована функция func,special/sorting,owner сортировщика фото по автору в виде 10 последних загруженых изображений.
Кто-нибуть пробовал реализовать просмотр не только последних 10 фото автора, но и всех, которые он загрузил по 10 штук на страницу?
« Последнее редактирование: 21.09.2009, 18:29:01 от mijsvit »
*

beliyadm

  • Moderator
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Элементарно, Ватсон
Файл sub_viewspecial.php, находим
case 'owner':
...
break; 

и заменяем все что там на следующий код:

    
case 'owner':
    
$database->setQuery("select username from #__users where id = '$op'");
	
$imgowner $database->loadResult();
        
//чтение значений параметров
	
$limit intvalmosGetParam$_REQUEST'limit'$ad_toplist ) );
	
$limitstart intvalmosGetParam$_REQUEST'limitstart') );
        
//считаем общее количество
	
$database->setQuery("select count(*) from #__datsogallery where owner = '$imgowner'");
	
$total $database->loadResult();
	
//подключаем файл pageNavigation.php
	
require_once( 
$GLOBALS['mosConfig_absolute_path'] . '/includes/pageNavigation.php' );
	
$pageNav = new mosPageNav$total$limitstart$limit );
    
//запрос в БД и добавляем
    
$database->setQuery("select * "
	
" from #__datsogallery as a, #__datsogallery_catg "
	
" as ca where a.catid=ca.cid "
	
" and a.published=1 and a.owner = '$imgowner' and a.approved=1 and ca.published=1 and ca.access<=$gid "
	
" order by a.id desc limit $limitstart$limit");
	
$tl_title $ad_toplist " ._DG_NEW_PIC." "._DG_FROM_USER.$imgowner";
        
$pw_title $ad_toplist " ._DG_NEW_PIC." "._DG_FROM_USER.$imgowner";
   
	
$link "index.php?option=com_datsogallery&func=special&sorting=owner&op=$op";
   
	
echo 
$pageNav->writePagesLinks$link );
    break;

Количество выводимых картинок лежит в $ad_toplist, что выставляется в админке, вкладка ВИД -> "Топ-список на страницу:"
Аналогично постраничную разбивку можно добавить с любую другую опцию из панели (лучше, популярные, комменты)

P.S. только что заметил еще одну глупость кода - в таблице #__datsogallery идентификатором пользователя (владельца фотографии) служит почему то username, вместо его ID - как следствие лишние запросы и прочие неудобства :)

Хотя давайте оптимизируем еще немного код для очистки совести:

    
case 'owner':
    
//чтение значений параметров
	
$limit intvalmosGetParam$_REQUEST'limit'$ad_toplist ) );
	
$limitstart intvalmosGetParam$_REQUEST'limitstart') );
        
//считаем общее количество и сразу же имя автора
	
$database->setQuery("select count(*) AS count, d.owner as owner from #__datsogallery as d
	
JOIN #__users as u on u.username = d.owner where u.id = '
$op' GROUP BY d.owner ");
	
$database->LoadObject($row);
	
$total $row->count;
	
$imgowner $row->owner;
	
//подключаем файл pageNavigation.php
	
require_once( 
$GLOBALS['mosConfig_absolute_path'] . '/includes/pageNavigation.php' );
	
$pageNav = new mosPageNav$total$limitstart$limit );
    
//запрос в БД и добавляем
    
$database->setQuery("select a.*, ca.* from #__datsogallery as a "
    
" JOIN #__datsogallery_catg as ca ON a.catid=ca.cid "
    
" JOIN #__users AS u ON u.id = '$op' "
	
" WHERE a.published=1 and a.approved=1 and ca.published=1 and ca.access<=$gid "
	
" order by a.id desc limit $limitstart$limit");
	
$tl_title $ad_toplist " ._DG_NEW_PIC." "._DG_FROM_USER.$imgowner";
        
$pw_title $ad_toplist " ._DG_NEW_PIC." "._DG_FROM_USER.$imgowner";
   
	
$link "index.php?option=com_datsogallery&func=special&sorting=owner&op=$op";
   
	
echo 
$pageNav->writePagesLinks$link );
    break;

На мой взгляд второй вариант будет правильней
« Последнее редактирование: 10.08.2008, 15:49:30 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
beliyadm, спасибо большое! Аж не ожидал полностью все решение получить :)
Второй вариант почему-то не работает в 1,6 потому использовал первый - все отлично!
« Последнее редактирование: 10.08.2008, 21:27:56 от mijsvit »
*

Peroon

  • Захожу иногда
  • 247
  • 11 / 1
  • http://textonix.ru
есть маленький недочет
в выборке со счетчиком считаются все картинки (не одобренные администрацией и запрещенные к показу), как следствие - неверный счетчик.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

В какую галерею перенести все фото из DatsoGallery?

Автор darkknight

Ответов: 5
Просмотров: 4219
Последний ответ 08.12.2021, 18:45:41
от sergeytolkachyov
Загружаю новое фото а показывает другое фото

Автор sknc

Ответов: 0
Просмотров: 5087
Последний ответ 21.11.2015, 21:30:42
от sknc
Сортировка категорий (альбомов)

Автор vaganov

Ответов: 0
Просмотров: 5039
Последний ответ 25.06.2015, 14:07:49
от vaganov
Лишние поля при загрузке фото DatsoGallery Joomla 2.5

Автор lelonko

Ответов: 1
Просмотров: 3353
Последний ответ 10.03.2015, 13:17:41
от kikimora17
Управление авто-заполнением полей в профиле фото

Автор kikimora17

Ответов: 0
Просмотров: 2856
Последний ответ 06.03.2015, 14:26:54
от kikimora17