Как вывести список пользователей и оформить его шаблоном XSL?

#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
да ладно. быть не может чтобы ничего не происходило.
у меня выводит список id и логинов моих юзеров на сайте

Ну попробуйте перед комментарием "// Применим XSL-шаблон и выведем страницу"
вставить такую строчку:
echo nl2br(htmlspecialchars($usersxml));

Вам на экран должен выйти XML-код, который сгенерировался для этой страницы.

UPD: скопируйте его сюда, посмотрим, может у вас там, допустим, просто юзеров нету и инфу выводить не о чем...
Заказов не беру. Консультирую редко.
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
XML выводится а вот шаблон не применяется не пойму почему...
Юзеры есть и много...
Суда дать не могу.

Вот один из фрагментов:

<user id="44">
<site_users_login>XXXXXXX</site_users_login>
<site_users_password>XXX</site_users_password>
<site_users_email>XXX@mail.ru</site_users_email>
<site_users_name>XXX</site_users_name>
<site_users_surname></site_users_surname>
<site_users_patronymic></site_users_patronymic>
<site_users_company></site_users_company>
<site_users_phone></site_users_phone>
<site_users_fax></site_users_fax>
<site_users_site></site_users_site>
<site_users_icq></site_users_icq>
<site_users_country>Россия</site_users_country>
<site_users_postcode></site_users_postcode>
<site_users_city>Москва</site_users_city>
<site_users_address></site_users_address>
<site_users_date_registration>2009-07-01 00:57:00</site_users_date_registration>
<site_users_ip>XXX</site_users_ip>
<site_users_index>XXX</site_users_index>
<site_users_confirmation>1</site_users_confirmation>
<users_id>XX</users_id>
</user>
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Ну вот, значит XML у вас генерится нормальный.
XSL-шаблон под каким именем у вас сохранен? В моем примере предполагается, что шаблон будет иметь название "XSL_для_пользователей_сайта". Если у вас другое то измените строчку
$xsl_name = 'XSL_для_пользователей_сайта';

Хотя если бы у вас шаблон не находился то скорее всего выходила бы на экран какая-нибудь ругань.
Ну давайте еще на всякий случай окончательно упростим шаблон, до примитива:

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
  
   <xsl:template match="user">
      <p>Идентифтикатор пользователя
         <xsl:value-of select="@id"/>,
   логин -
         <xsl:value-of select="site_users_login"/>.</p>
   </xsl:template>
</xsl:stylesheet>


У меня получается XML вида
<?xml version="1.0" encoding="windows-1251"?>
<users count="124">
   <user id="9">
      <site_users_login>хххххх</site_users_login>
      <site_users_password>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</site_users_password>
      <site_users_email>xxxxx@xxxxxxxxxxxx.ru</site_users_email>
      <site_users_name>Мxxxx</site_users_name>
      <site_users_surname>Дмxxxxxxа</site_users_surname>
      <site_users_patronymic>Аxxxxxxна</site_users_patronymic>
      <site_users_company></site_users_company>
      <site_users_phone>2113</site_users_phone>
      <site_users_fax></site_users_fax>
      <site_users_site></site_users_site>
      <site_users_icq></site_users_icq>
      <site_users_country></site_users_country>
      <site_users_postcode></site_users_postcode>
      <site_users_city></site_users_city>
      <site_users_address></site_users_address>
      <site_users_date_registration>2008-08-26 02:54:01</site_users_date_registration>
      <site_users_ip>84.204.228.3</site_users_ip>
      <site_users_index>xxxxxxxxxxxxxxxxxxxxxxxxxx467e97</site_users_index>
      <site_users_confirmation>1</site_users_confirmation>
      <users_id>19</users_id>
   </user>
........... тут еще пользователи ......
</users>


И применение к нему вышеуказанного шаблона дает результат вида:
Идентифтикатор пользователя 9, логин - хххххх.
Заказов не беру. Консультирую редко.
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
А, черт, последняя строчка:
вместо
echo $xsl->build($xml, $xsl_name);

должно быть
echo $xsl->build($usersxml, $xsl_name);


Я просто работу шаблона с этим XML проверил на StylusStudio, а сам шаблон в CMS не создавал, вот и проморгал переменную. Сорри.
Заказов не беру. Консультирую редко.
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Все. Заработало. Спасибо огромное.
Попробую сделать из этого типовую динамическую страницу.
Если не получиться, можно еще пристать?
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Ну, можно в принципе, но лучше, конечно, в аську с тех.заданием, чем на форум с вопросом Т.к. здесь я могу бывать нерегулярно, да и примеры кода сюда редко пишу, обычно только общее направление, в котором надо думать.

Номерок я писал в теме про "активность добавленного им инфоэлемента".
Заказов не беру. Консультирую редко.
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Кому нужен код, вот полный вариант вместе с возможностью отображения дополнительных свойств пользователей:


<?php
if (class_exists('SiteUsers'))
{
// создадим экземпляр класса SiteUsers
$SiteUsers = &singleton('SiteUsers');

// получим список пользователей
$resource = $SiteUsers->GetAllUsers();

// подготовим массив для генерации XML
// подробнее см. api класса ExternalXml, метод GenXml()
$users = array();
$usersCount = 0;
while ($row = mysql_fetch_assoc($resource))
{
    $usersCount++;
    $user_item = array();
    $user_item['xml_name'] = 'user';
    $user_item['attribute'] = array('id' => $row['site_users_id']);
    $user_value = array();
    foreach ($row as $key => $value)
    {
        if ($key != 'site_users_id')
        {
            $node = array();
            $node['xml_name'] = $key;
            $node['value'] = $value;
            $user_value[] = $node;
        }
    }
    
    // добавленный кусок для свойств
    $propertysRow = $SiteUsers->GetListExtraProperties($row['site_users_id']);
    $propertys = array();
    $propertysValue = array();
    $propertys['xml_name'] = 'extra_propertys';
    foreach ($propertysRow as $key => $value)
    {
        $propertyItem = array();
        $propertyItem['xml_name'] = 'extra_property';
        $propertyItem['attribute'] = array('id' => $value['site_users_extra_property_id']);
        $propertyValue = array();
        foreach ($value as $newkey => $newvalue)
        {
            if (!is_numeric($newkey))
            {
                $node = array();
                $node['xml_name'] = $newkey;
                $node['value'] = $newvalue;
                $propertyValue[] = $node;

            }
        }
        $propertyItem['value'] = $propertyValue;
        $propertysValue[] = $propertyItem;
    }

    $propertys['value'] = $propertysValue;
    $user_value[] = $propertys;
    // конец добавленного куска для свойств

    $user_item['value'] = $user_value;    
    $users[] = $user_item;
}

// cгенерируем XML
$ExternalXml = &singleton('ExternalXml');
$type = 1;
$usersxml = '<?xml version="1.0" encoding="windows-1251"?><users count="' . $usersCount .
    '">' . $ExternalXml->GenXml($users, $type) . '</users>';

// echo nl2br(htmlspecialchars($usersxml));
// Применим XSL-шаблон и выведем страницу
$xsl = &singleton('xsl');
$xsl_name = 'sv_для_пользователей_сайта';
echo $xsl->build($usersxml, $xsl_name);
}
?>


Щаблон XSL: sv_для_пользователей_сайта

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
<xsl:template match="/users">

<xsl:apply-templates select="user"/>

</xsl:template>
   
<xsl:template match="/users/user">

<div style="margin:0px 10px 10px 10px; padding:10px; border:1px solid #999;">

<!-- Аватар берем из доп. свойств пользователя -->
<xsl:if test="extra_propertys/extra_property[site_users_extra_property_name = 'avatar']/site_users_property_value!=''">
<img align="right" src="/upload/users/{@id}/{extra_propertys/extra_property[site_users_extra_property_name = 'avatar']/site_users_property_value}" />
</xsl:if>

<!-- Проверяем подтверждение регистрации перьзователя -->         
<xsl:if test="site_users_confirmation=1">
<img src="/hostcmsfiles/images/message.gif" bolder="0" align="middle" style="margin: -3px 10px 5px 5px;"/>
</xsl:if>
<xsl:if test="site_users_confirmation=0">
<img src="/hostcmsfiles/images/delete.gif" bolder="0" align="middle" style="margin: -3px 10px 5px 5px;" />
</xsl:if>

<!-- Данные пользователя -->         
<xsl:value-of select="site_users_login"/> (<a href="mailto:{site_users_email}" target="_blank"><xsl:value-of select="site_users_email"/></a>) - ID [<a href="/users/info/{site_users_login}/" target="_blank"><xsl:value-of select="@id"/></a>]

<br/>ФИО:&#xA0;<xsl:value-of select="site_users_name"/>&#xA0;<xsl:value-of select="site_users_patronymic"/>&#xA0;<xsl:value-of select="site_users_surname"/>
<br/>Сайт:&#xA0;<a href="{site_users_site}" target="_blank"><xsl:value-of select="site_users_site"/></a>
<br/>ICQ:&#xA0;<xsl:value-of select="site_users_icq"/>
<br/>Страна:&#xA0;<xsl:value-of select="site_users_country"/>
<br/>Город:&#xA0;<xsl:value-of select="site_users_city"/>

</div>
</xsl:template>
</xsl:stylesheet>
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
3dkvadrat, мне не жалко, но вообще-то неплохо бы указывать авторство кода
Заказов не беру. Консультирую редко.
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Я только выложил готовый вариант. Автор и так виден из переписки. Я не претендую на авторство вообще. Просто комуто понадобится, а здесь есть такое уже.

АВТОР КОДА: Евгений (Kotoff), Санкт-Петербург
Обращайтесь к нему по поводу разработки модулей, интеграции и написания кода для HostCMS.
Качественно, быстро и недорого...
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
#
Re: Как вывести список пользователей и оформить его шаблоном XSL?
Как в приведенный код PHP внедрить еще и данные по движению в лицевом счете?
$sum_no = $sv_shop->GetSiteUserAccountTransaction($site_users_id);

Данные массива $sum_no поместить в XML каждого пользователя.
Вот распечатка массива:
Array ( [shop_site_users_account_id] => 22 [shop_shops_id] => 10 [site_users_id] => 159 [shop_site_users_account_active] => 1 [shop_site_users_account_datetime] => 2009-11-16 13:38:13 [shop_site_users_account_sum] => 10.00 [shop_currency_id] => 5 [shop_site_users_account_sum_in_base_currency] => 10.00 [shop_order_id] => 0 [shop_site_users_account_description] => Тест [users_id] => 19 )
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
Авторизация