[Решено] Fenom и вызов полей пользователя
        В документации есть пример вызова текущего пользователя через {$_modx->user}
Но как вызвать произвольного пользователя, по id?
Есть ли для этого быстрые феномовские штучки, или прийдётся писать сниппет, и уже его запускать через феном?
UPD.
Решение: написать свой сниппет-модификатор (для более удобного перехода с MODX-модификатора).
Сниппет-модификатор user_info
Например переход с [[*author:userinfo=`fullname`]] будет выглядеть так:
    
    
                                                                                
            Но как вызвать произвольного пользователя, по id?
Есть ли для этого быстрые феномовские штучки, или прийдётся писать сниппет, и уже его запускать через феном?
UPD.
Решение: написать свой сниппет-модификатор (для более удобного перехода с MODX-модификатора).
Сниппет-модификатор user_info
<?php
$output = '';
$profile = $modx->getObject('modUserProfile', ['internalKey' => $input]);
if($profile) {
    if (strpos($options,'extended.') === false) {
        $output = $profile->$options;
    } else {
        $ext = explode(".", $options);
        $profile = $profile->get('extended');
        if(isset($profile[$ext[1]])) {
            $output = $profile[$ext[1]];
        }        
    }    
}
return $output;{$_modx->runSnippet('!user_info', ['input' => 2,'options' => 'extended.skype'])}Например переход с [[*author:userinfo=`fullname`]] будет выглядеть так:
{$_modx->runSnippet('!user_info', ['input' => $_modx->resource.author, 'options' => 'fullname'])}Комментарии: 7
                Решил следующим образом:
1. Включил MODX в Fenom (pdotools_fenom_modx)
2. Вызвал следующим образом:
                    1. Включил MODX в Fenom (pdotools_fenom_modx)
2. Вызвал следующим образом:
{$modx->getObject('modUser', 2)->username} // где 2 - это ID нужного пользователя
                Сорри, такой вариант не подходит для всех полей. Пришлось переписать в следующий вызов, чтобы был одной строкой:
                    {$modx->getObject('modUser', 2)->getOne('Profile')->email}
                Тогда уж так:
Использовать это можно только, если ты один, или всецело доверяешь своим пользователям.
                    {set $profile = $modx->getObject('modUserProfile', ['internalKey' => 2])}
{if $profile}
	{$profile->email}
{/if}Использовать это можно только, если ты один, или всецело доверяешь своим пользователям.
                Спасибо за пример, он натолкнул меня в нужном направлении! 
Я написал переходный сниппет-модификатор, подходит и для extended-полей.
                    Я написал переходный сниппет-модификатор, подходит и для extended-полей.
                Лучше уж свой сниппет. Раньше тоже включал эту настройку, а когда Василий протер мне глаза, насколько это небезопасно, я задумался и решил, что оно того не стоит. Лучше написать свой более менее универсальный сниппет вывода полей определённого юзера. Если затрудняешься в этом — пиши, я выложу свой сниппет для этого дела. Не сказать, что он универсальный, но мои потребности решает.            
                    
                Набросал свой сниппет-модификатор user_info (чтобы легче было перейти с MODX-модификаторов) по примеру выше. 
Вполне себе рабочее решение как мне кажется:
Спасибо тебе, Гвоздь, и Василию за примеры и пинки в нужном направлении!
                    Вполне себе рабочее решение как мне кажется:
<?php
$output = '';
$profile = $modx->getObject('modUserProfile', ['internalKey' => $input]);
if($profile) {
    if (strpos($options,'extended.') === false) {
        $output = $profile->$options;
    } else {
        $ext = explode(".", $options);
        $profile = $profile->get('extended');
        if(isset($profile[$ext[1]])) {
            $output = $profile[$ext[1]];
        }        
    }    
}
return $output;{$_modx->runSnippet('!user_info', ['input' => 2,'options' => 'extended.skype'])}Спасибо тебе, Гвоздь, и Василию за примеры и пинки в нужном направлении!
                Вдруг я не единственный, кому понадобилось получать данные любого пользователя на фронте, используя fenom, поэтому предлагаю вашему вниманию более универсальную версию сниппета user_info
                    $output = [];
$options = explode(',',$options);
$profile = $modx->getObject('modUserProfile', ['internalKey' => $input]);
if($profile) {
    foreach($options as $option){
        if (strpos($option,'extended.') === false) {
        $output[$option] = $profile->$option;
        } else {
            $extended = $profile->get('extended');
            $ext = explode(".", $option);
            $ext = $ext[1];
            if(strpos($ext,'|') === false){
                $output[$ext] = $extended[$ext];
            }else{
                $cont = explode("|", $ext);
                $key = $cont[0];
                $val = $cont[1];
                $output[$key][$val] = $extended[$key][$val];
                
            }
        }    
    }
}
if(count($output) == 1){
    return $output[$options[0]];
}else{
    return $output;
    //return json_encode($output); //раскомментируй чтобы возвращать json, а предыдущую закомментируй
}<!-- получаем email -->
{44 | getUserInfo : 'email'} 
<!-- получаем несколько полей -->
{44 | getUserInfo : 'phone,extended.sizes|weight,extended.age' | print_r}Array ( [phone] => +7(989)456-85-12 [sizes] => Array ( [weight] => 67 ) [age] => 35 )
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    
             
             
                    
                    
                




