Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Ограничить вывод комментариев на некоторых страницах

Автор SeweryssРаздел Настройка системы и модулей

Ответов: 21
Просмотров: 7624
Последний ответ 18 Октября 2013, 19:06:29
от Seweryss
Ограничить вывод категорий каталога

Автор disallowРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 3365
Последний ответ 04 Октября 2011, 13:33:48
от admin
Ограничить права доступа к странице

Автор SeweryssРаздел Настройка системы и модулей

Ответов: 2
Просмотров: 2205
Последний ответ 03 Декабря 2013, 09:58:15
от admin
Как получить доступ к какому нибудь свойству в config файле?

Автор atachРаздел Custom макросы

Ответов: 2
Просмотров: 1360
Последний ответ 26 Мая 2016, 15:41:52
от atach
Доступ к просмотру комментариев

Автор AisamieryРаздел Настройка системы и модулей

Ответов: 4
Просмотров: 1954
Последний ответ 24 Апреля 2015, 19:38:30
от e.ioffe

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

*

granat20

  • *
  • 4
  • +1/-0
    • Просмотр профиля
Ограничить доступ
« : 01 Мая 2012, 09:14:46 »
Здравствуйте дорогие друзья,
подскажите как мне организовать вывод куска контента только для конкретного пользователя:
сделал - /tpls/content/tginc.tpl
подключил его на странице %system getOuterContent('./tpls/content/tginc.tpl')%

как теперь в нем прописать, что бы он содержимое показывал только пользователю id = 477?

Есть возможность получить текущего пользователя -
<?php
 header("Content-type: text/html; charset=utf-8");
 include "standalone.php";
 //Получаем id текущего пользователя
 $permissions = permissionsCollection::getInstance();
 $currentUserId = $permissions->getUserId();
 echo "Id текущего пользователя: \"", $currentUserId, "\"<br />\n";
?>

Но php не работает в tpl, как это все связать.

Спасибо. 8)

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Ограничить доступ
« Ответ #1 : 01 Мая 2012, 11:26:41 »
Поместить содержимое в блок logged макроса %users auth()%
http://help-dev.umi-cms.ru/users.auth.html

*

granat20

  • *
  • 4
  • +1/-0
    • Просмотр профиля
Re:Ограничить доступ
« Ответ #2 : 01 Мая 2012, 11:54:22 »
Посмотрел, форму авторизации на страничку вывел.
А вот сделать так, что посетитель пришел на страничку и авторизовался, а если это id=477, то ему показалась дополнительная часть контента.
« Последнее редактирование: 01 Мая 2012, 12:33:26 от granat20 »

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Ограничить доступ
« Ответ #3 : 01 Мая 2012, 16:00:34 »
ээээ... да, не обратил внимания, что вам нужно не просто для любого зарегистрированного, а только для конкретного одного.
В таком случае я бы написал кастомный макрос.

Тогда писать кастомный макрос/ Как-то так:
public function myAuth($template = "default",$userId = 477) {

if(!$template) $template = "default";
if(!$userId) $userId = 477;//для случая обращения по http
$mUser = cmsController::getInstance()->getModule('users');

$permissions = permissionsCollection::getInstance();
$currentUserId = $permissions->getUserId();

if($currentUserId == $userId) {

list($template_logged) = def_module::loadTemplates("tpls/users/{$template}.tpl", "logged");

$block_arr = Array();
$block_arr['xlink:href'] = "uobject://" . $mUser->user_id;
$block_arr['user_id'] = $mUser->user_id;
$block_arr['user_name'] = $mUser->user_fullname;
$block_arr['user_login'] = $mUser->user_login;

return def_module::parseTemplate($template_logged, $block_arr, false, $mUser->user_id);

} else {
$res = $mUser->login($template);//либо любое иное действие для пользователя не 477 или гостя
}

return $res;
}

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Re:Ограничить доступ
« Ответ #4 : 01 Мая 2012, 16:03:59 »
Общий принцип: берете аналогичный макрос из класса ЮМИ, дописываете нужное вам, и используете в кастомных классах. При этом нужно будет заменить self на def_module, а $this на объект используемого модуля. В данном случае это $mUser

*

granat20

  • *
  • 4
  • +1/-0
    • Просмотр профиля
Re:Ограничить доступ
« Ответ #5 : 01 Мая 2012, 17:08:45 »
Спасибо, пробую, о результатах отпишусь... :D

*

granat20

  • *
  • 4
  • +1/-0
    • Просмотр профиля
Re:Ограничить доступ
« Ответ #6 : 01 Мая 2012, 19:40:47 »
Спасибо, не много под шаманил и скрпт заработал:
на страничку %custom myAuth()%
в файле custom.php (находится здесь: ~/classes/modules/ ) после строки "//TODO: Write your own macroses here" новый метод -
***
public function myAuth($template = "default",$userId = 477) {
if(!$template) $template = "default";
if(!$userId) $userId = 477;//для случая обращения по http
$mUser = cmsController::getInstance()->getModule('users');
$permissions = permissionsCollection::getInstance();
$currentUserId = $permissions->getUserId();
if($currentUserId == $userId) {
return 'myText';
} else {
$res = '';
}
return '';
}
***
Текст - myText виден только одному пользователю.
Я думаю здесь можно кое что подсократить.

Спасибо за помощь. ;D