При работе над форумом на компоненте Tickets возникло одно небольшое затруднение: когда есть необходимость вывода изображения автора тикета через сниппет TicketMeta, отсутствует поле [avatar], по аналогии с TicketComments.

Для тех кто не знаком с данным компонентом — это поле, по умолчанию, содержит ссылку на фото пользователя, а при отсутствии оной, выводит граватар.

Задача: вывести фотографию автора статьи или тикета, если она загружена, либо установленный граватар, либо дефолтный.

Гибкость MODX допускает несколько вариантов решения, в данном случае я выбрал установку сниппета Gravatar (репозиторий).


Секция проверки безопасного режима подключения Secure URLs не всегда работает корректно, даже при установке &secure=`1`, отключаем в теле сниппета, устанавливаем принудительно.

/* Secure URLs */
/*if ($secure) {
  $pAvatar->setSecure();
} elseif ($secure != '0' && $secure != 'false') {
  $url = $_SERVER['REQUEST_URI'];
  $ssl = FALSE;
  if($_SERVER['HTTPS'] == 1)  {
    $ssl =  TRUE;
  } elseif ($_SERVER['HTTPS'] == 'on'){
    $ssl =  TRUE;
  } elseif ($_SERVER['SERVER_PORT'] == 443) {
    $ssl = TRUE;
  }
  if ($ssl) {
    $pAvatar->setSecure();
  }
}*/
 $pAvatar->setSecure();

Вызов сниппета в чанке tpl для TicketMeta:

<img src="[[+internalKey:userinfo=`photo`:default=`[[!Gravatar? &email=`[[+email]]`]]`]]" class="ticket-avatar" alt=""/>

Вызов для любого ресурса:

<img src="[[*createdby:userinfo=`photo`:default=`[[!Gravatar? &email=`[[*createdby]]`]]`]]" class="ticket-avatar" alt=""/>

Примечание: Gravatar обрабатывает числовое значение в поле email как id пользователя.

Также для автора публикации можно элементарно вызвать любую другую информацию через модификаторы modx (документация).