Логотип

Документация по макросам и шаблонам UMI.CMS

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

$userId = $this->macros('users', 'profile');

В XSLT-шаблонизаторе выводит id пользователя, если такой пользователь существует.

Пример вызова

udata://users/profile/notemplate/27174

XML-ответ UData

<udata xlink:href="uobject://27174" module="users" method="profile" generation-time="0.073833">
  <id>27174</id>
</udata>

Элементы и атрибуты

@xlink:href

Атрибут ветви udata, содержащий ссылку UObject на пользователя, если тот существует.

<id>

Id запрошенного пользователя.

Примеры использования

Мы можем воспользоваться этим макросом для того, чтобы оформить страницы пользователей (yourdomain.ru/users/profile/id_пользователя) на сайте. В шаблоне разметки для этого в контентой части должна стоять следующая инструкция:

<div id="content">
    <xsl:apply-templates select="result" />
</div>

Определим заранее параметр $param0:

<xsl:param name="param0" />

Id пользователя, указанный в адресной строке, будет передан в этом параметре. Тогда мы можем описать шаблон, обрабатывающий страницы профилей:

<xsl:template match="result[@module = 'users'][@method = 'profile']">
    <xsl:apply-templates
     select="document(concat('udata://users/profile/notemplate/', $param0))/udata"
     mode="profile" />
</xsl:template>

И обработать результаты макроса для двух случаев. Для несуществующего пользователя выведем текст:

<xsl:template match="udata[@method = 'profile']" mode="profile" >
  <p>Данного пользователя не существует</p>
</xsl:template>

Для существующих пользователей воспользуемся протоколом UObject (см. «Объекты: протокол UObject»):

<xsl:template match="udata[@method = 'profile'][id]" mode="profile">
  <xsl:apply-templates select="document(concat('uobject://', id))//properties" mode="userinfo" />
</xsl:template>

И выведем, например логин, имя и фамилию пользователя, обратившись к свойствам объекта:

<xsl:template match="properties" mode="userinfo">
  <p>Логин (ник): <xsl:value-of select=".//property[@name = 'login']/value" /></p>
  <p>Имя: <xsl:value-of select=".//property[@name = 'fname']/value" /></p>
  <p>Фамилия: <xsl:value-of select=".//property[@name = 'lname']/value" /></p>
</xsl:template>

Макрос выводит профиль пользователя (информацию о нем) по шаблону, указанному в параметре template. Id пользователя должен быть указан в первом параметре страницы, которая выводит профиль пользователя, используя данный макрос. Например: /sample_profile/user_id, где user_id — id пользователя, профиль которого нужно показать.

Используемые шаблоны

Макрос оперирует шаблонами, находящимися в каталоге /tpls/users/profile.

Используемые блоки шаблона

profile_block

Блок для вывода формы настроек.

%user_id%

Id пользователя.

bad_user_block

Блок для вывода ошибки о несуществующем пользователе.

Примеры использования

Простой вывод профиля: %users profile()%.

Вывод профиля настроек по пользовательскому шаблону: %users profile('sample')%.

<?php

$FORMS = Array();

$FORMS['profile_block'] = <<<END

 <p><b>%login%</b></p>

 %data getPropertyGroupOfObject(%id%, 'short_info more_info addon', 'profile')%

END;

$FORMS['bad_user_block'] = <<<END

 <p>Данного пользователя не существует</p>

END;

?>

Название

%users profile()% — Выводит профиль пользователя.

Параметры: users profile([template = 'default', user_id = 0])

template

Имя шаблона, по которому выводится профиль.

user_id

Id пользователя, чей профиль необходимо вывести.

Описание

Макрос используется для выведения информации о пользователе.

Дополнительные сведения