Отображение определенного контента для конкретного пользователя в Joomla 1.5

Короче говоря, это сайт исследовательской лаборатории. Мне нужно отобразить определенный контент (лабораторный отчет) для конкретного пользователя. При выходе пользователям будет предоставлено имя пользователя и пароль, и им будет предложено войти на веб-сайт, чтобы получить доступ к его / ее отчету с предоставленными ему учетными данными.

Итак, это "конкретный контент" для "конкретного пользователя". Переход на версию 1.6 невозможен.

У меня есть решение, но оно требует большого количества взлома ядра и займет некоторое время ... Если кто-то был в подобной ситуации или у меня есть идея, я был бы признателен за вашу помощь.


person Ahmad Alfy    schedule 20.01.2011    source источник


Ответы (3)


Хорошо, это можно сделать, но для этого потребуется немного хитрости. Во-первых, вам понадобится способ публиковать лабораторные отчеты и связывать их с пользователем. Я бы использовал для этого K2, так как вы можете добавить отчет как вложение к элементу. Вы также можете добавить дополнительные поля в K2, что будет следующим шагом. Вам понадобится дополнительное поле, где вы можете ввести идентификационный номер пользователя, который вы будете использовать, чтобы определить, разрешено ли пользователю просматривать содержимое.

Вам нужно будет выполнить несколько шагов, чтобы отфильтровать контент, чтобы его мог видеть только связанный с ним пользователь.

  1. Вам нужно будет получить идентификатор пользователя, как только пользователь войдет в систему:

    $user =& JFactory::getUser();

    $usr_id = $user->get('id');

  2. Вам понадобится пункт меню со ссылкой на категорию K2, куда попадают все лабораторные отчеты.

  3. Вам понадобится подшаблон с измененным category_item.php для этой категории, который отображает только ассоциированные отчеты:

    if($this->item->extra_fields[USER_ID_EXTRA_FIELD_NAME]==$usr_id){

    все элементы категории

    }

  4. Вам понадобится подшаблон с измененным item.php для категории, которая снова блокирует пользователей, отличных от связанного пользователя, в основном тот же код, что и № 3, для отображения содержимого или сообщения об ошибке.

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

Метод K2 с подшаблонами не требует каких-либо основных хаков и будет работать с небольшой доработкой.

person Brent Friar    schedule 21.01.2011
comment
Это довольно впечатляющее использование переопределений шаблонов K2 + — мне нравится ваше мышление. Спасибо, что поделились Брентом! - person mozami; 22.01.2011

Вы можете добиться желаемого с помощью Flexicontent http://www.flexicontent.org/ и Flexiaccess.

Flexicontent — это компонент типа K2, и я использую их взаимозаменяемо. С Flexiaccess вы можете создавать элементы, доступные только определенным пользователям.

Никаких взломов не требуется.

person Jeepstone    schedule 21.01.2011
comment
Разве это не будет иметь ту же проблему, что и другие ACL? Вам нужна группа для каждого пользователя, верно? - person Brent Friar; 22.01.2011
comment
Да, хотя я считаю, что вы можете назначать пользователю права пользователя. Это просто не "хак". - person Jeepstone; 24.01.2011

Плохая новость: это невозможно сделать со стандартной Joomla 1.5 (без взлома). Хорошая новость: для этого вы можете использовать одно из бесплатных или коммерческих расширений для Joomla. Я бы предложил, например:

Доступ администратора-пользователя http://extensions.joomla.org/extensions/access-a-security/backend-a-full-access-control/9040

Или вы можете выполнить поиск самостоятельно: http://extensions.joomla.org/extensions/access-a-security/backend-a-full-access-control

person Mike    schedule 20.01.2011
comment
Я проверил каждый аддон на JED... Это невозможно сделать с помощью предложенного расширения, потому что это потребует создания группы пользователей для каждого пользователя. Хотя спасибо за предложение... - person Ahmad Alfy; 21.01.2011