Новости Joomla

Рендер пользовательского поля внутри другого пользовательского поля. Joomla 5.3

Писал ранее о том, как внутри одного пользовательского поля рендерить другое пользовательское поле. Применил для этого возможность Joomla обращаться к методам плагинов напрямую. Процитирую строчку кода из предыдущего поста:

<?php
$joomlaFieldContentPlugn->onContentPrepare('com_content.article', $fakeItem, $app->getParams());

Joomla постепенно переходит от простого указания аргументов для триггеров плагинов к собственным классам событий. Это позволяет не запоминать порядок передачи аргументов класса и использовать человекопонятные методы $event->getContext(), $event->getItem() и т.д. А то в одном месте в Joomla было $article, в другом - $item, в третьем ещё как-то... Порядку больше становится.

Сегодня обновил сайт клиентов до Joomla 5.3. В ней обновили контент-плагин fields и мой финт ушами с вызовом метода плагина отвалился потому, что я передавал в нём 3 аргумента, вместо одного. И для события onContentPrepare это должен быть объект класса ContentPrepareEvent. Как меняется фрагмент кода из предыдущего поста:

<?php
// мы находимся в файле макета поля

use Joomla\CMS\Event\Content\ContentPrepareEvent;
use Joomla\CMS\Factory;

$app = Factory::getApplication();
$fakeItem = new \stdClass();
// Получаем id текущего материала из объекта Input
$fakeItem->id = $app->getInput()->getInt('id');
// {field 29} - это шорт код вставки поля с id 29 - "ассортимент проекта"
// к содержимому поля конкатенируем шорт-код для обработки
$fakeItem->text = $field->value . '{field 29}';
// Получаем объект плагина
$joomlaFieldContentPlugn = $app->bootPLugin('fields', 'content');
// вызываем метод обработки напрямую
// вместо 3-х аргументов теперь указываем один
// это объект класса ContentPrepareEvent
$joomlaFieldContentPlugn->onContentPrepare(new ContentPrepareEvent('onContentPrepare', [
            'context' => 'com_content.article',
            'subject' => $fakeItem,
            'params'  => $app->getParams(),
            'page'    => 0,
        ]));
// выводим оба поля
echo $fakeItem->text;

@webtolkru 

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

Girevik

  • Захожу иногда
  • 360
  • 1 / 1
Подскажите, могу ли я создавать свои роли пользователей?? и если да, то как это сделать и как им назначать права??
Вообще, мне нужно сделать порядка 5 ролей, у каждой из них свое доп меню..
*

Girevik

  • Захожу иногда
  • 360
  • 1 / 1
Re: Новые группы пользователей
« Ответ #1 : 23.10.2008, 10:55:49 »
Может я не так вопрос сформулировал...

У меня есть дополнительное меню. Нужно чтобы у каждой роли был свой список пунктов. При выборе доступа есть только 3 варианта: Всем, зарегистрированным и вообще непонятный "Специальный"...
Как добиться нужного результата??
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Re: Новые группы пользователей
« Ответ #2 : 23.10.2008, 11:00:02 »
Насколько я знаю, в 1.5 с этим проблемы, да и в 1.0 тоже были... На самом деле можно попробовать поюзать JACL для создания новыйх групп.
*

Girevik

  • Захожу иногда
  • 360
  • 1 / 1
Re: Новые группы пользователей
« Ответ #3 : 23.10.2008, 11:48:36 »
А что за вид доступа "Специальный"??

Могу ли я Назначить доступ на пункт меню или на все меню только 2-3 конкретным пользователям??
« Последнее редактирование: 23.10.2008, 14:46:39 от Girevik »
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

Girevik

  • Захожу иногда
  • 360
  • 1 / 1
Re: Новые группы пользователей
« Ответ #5 : 24.10.2008, 08:28:24 »
дак как?? как использовать "специальный" вид доступа??
*

wr123

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: Новые группы пользователей
« Ответ #6 : 14.11.2008, 13:16:31 »
Тоже заинтересовался данным вопросом. Необходимы граппы с определёнными правами доступа к компонентам. Веду поиск, пока безуспешный. Создание группы не проблема - напрямую с базе, потом можно и компонент написать для этого. Непонятны пока значения полей в таблице групп пользователей, елси кто знает какую часть мануала по этому поводу почитать напишите плиз сюда.

Следующая загадка "спец доступ" - что такое? где настроить? с первыми двумя всё прозрачно, а вот с этим как то не очень ясен алгоритм работы.

З.Ы. Отдельно хотелось бы отметить часто рекомендуемый компонент/хак для работы с группами JACLPlus (/Pro). Под 1.5 он платный, и нет возможности оценить его функциональность даже на примере работы под самые ранние релизы поколения 1.5, чтибы оценить целесообразность его покупки.

З.Ы.2 Предположительно специальный - это только автор + админы. Вобщем как вариант расширять функциональность данного типа доступа скажем добавив право доступа для группы  автора или просто специфичной группы
« Последнее редактирование: 14.11.2008, 13:25:26 от wr123 »
*

Girevik

  • Захожу иногда
  • 360
  • 1 / 1
Re: Новые группы пользователей
« Ответ #7 : 14.11.2008, 14:41:44 »
Специальный - это Author, Editor, Publisher, Admin
Но, естественно этого мало... роли разбиты как то очень не универсально...
Даже банально разбить людей на 2 группы со своим списком доступных вещей никак...
*

wr123

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: Новые группы пользователей
« Ответ #8 : 16.11.2008, 16:08:41 »
Таблица #__groups содержит группы по которым распределяется доступ к меню, модулям и т.п. По умолчанию там public, registered, special. Если сюда добавить ещё строк то они будут отображаться в списке доступа для меню, модулей и т.п. Однако как сопоставить группы пользователей с группами из данной таблици я пока не нашёл.

Дополнение: У каждого пользователя есть поле AID которое и отвечает за уровеньб доступа. найти где данное поле класса пользователя устанавливается мне не удалось, зато нашёл очень подробное руководство как реализовать дополнительные группы просто выставляя этот самый AID через плагин. Руководство находится здесь http://forum.joomla.org/viewtopic.php?f=473&t=317838
« Последнее редактирование: 16.11.2008, 16:49:00 от wr123 »
*

wr123

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: Новые группы пользователей
« Ответ #9 : 16.11.2008, 17:13:53 »
Нашёл где выставляется AID: \plugins\user\joomla.php line 117

Код
		// Fudge Authors, Editors, Publishers and Super Administrators into the special access group
if ($acl->is_group_child_of($grp->name, 'Registered')      ||
    $acl->is_group_child_of($grp->name, 'Public Backend'))    {
$instance->set('aid', 2);
}

Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Авторизация пользователей

Автор Вик2811

Ответов: 0
Просмотров: 894
Последний ответ 27.08.2019, 13:55:52
от Вик2811
Не показываются новые рекламные блоки Google AdSense (со старыми всё нормально)

Автор Batyanya62

Ответов: 2
Просмотров: 3233
Последний ответ 21.07.2016, 11:11:27
от Марк Простой
Автоматический редирект на новые адреса

Автор Alger48

Ответов: 4
Просмотров: 1261
Последний ответ 25.01.2016, 22:36:14
от Alger48
Как скрыть модуль зарегистрированных пользователей Joomla 1.5.26 ?

Автор ShcherbaVv

Ответов: 0
Просмотров: 1429
Последний ответ 05.04.2015, 19:42:08
от ShcherbaVv
Лог входа пользователей в систему

Автор Vasja555

Ответов: 1
Просмотров: 1668
Последний ответ 04.03.2015, 22:18:18
от voland