В данном шаблонизаторе возвращает массив, включающий идентификатор пользователя, если такой существует
$userId = $this->macros('users', 'profile');
В XSLT-шаблонизаторе выводит id пользователя, если такой пользователь существует.
XML-ответ UData
<udata xlink:href="uobject://27174" module="users" method="profile" generation-time="0.073833">
<id>27174</id>
</udata>
Примеры использования
Мы можем воспользоваться этим макросом для того, чтобы оформить страницы пользователей (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 пользователя, профиль которого нужно показать.
Примеры использования
Простой вывод профиля: %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;
?>