Как вывести список пользователей и оформить его шаблоном XSL?
Kotoff
4 декабря 2009 г.
Пользуемся:
Юзеры с транзакциями внутри
Юзеры с транзакциями внутри
<?php
/**
* @author James
* @copyright 2009
*/
// проверим существование класса SiteUsers
if (class_exists('SiteUsers')) {
// создадим экземпляр класса SiteUsers
$SiteUsers = &singleton('SiteUsers');
// создадим экземпляр класса Shop
$sv_shop = &singleton('shop');
$shop_shops_id = 10;
// получим список пользователей
$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;
// конец добавленного куска для свойств
// и вот сюда вписываем код для суммы на счету у юзера
$sum = $sv_shop->GetSiteUserAccountSum($item_user_id, $shop_shops_id);
$node = array();
$node['xml_name'] = 'users_sum';
$node['value'] = $sum;
$user_value[] = $node;
// а вот сюда - код для транзакций
$transactions = array();
$transactionsValue = array();
$transactions['xml_name'] = 'transactions';
$trans_resource = $sv_shop->GetAllSiteUserAccountTransaction($site_users_id);
while ($trans_row = mysql_fetch_assoc($trans_resource)) {
$transaction_item = array();
$transaction_item['xml_name'] = 'transaction';
$transactionItemValue = array();
foreach ($trans_row as $trans_key => $trans_value) {
$node = array();
$node['xml_name'] = $trans_key;
$node['value'] = $trans_value;
$transactionItemValue[] = $node;
}
$transaction_item['value'] = $transactionItemValue;
$transactionsValue[] = $transaction_item;
}
$transactions['value'] = $transactionsValue;
$user_value[] = $transactions;
$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>';
// Применим XSL-шаблон и выведем страницу
$xsl = &singleton('xsl');
$xsl_name = 'XSL_для_пользователей_сайта';
echo $xsl->build($usersxml, $xsl_name);
}
?>
/**
* @author James
* @copyright 2009
*/
// проверим существование класса SiteUsers
if (class_exists('SiteUsers')) {
// создадим экземпляр класса SiteUsers
$SiteUsers = &singleton('SiteUsers');
// создадим экземпляр класса Shop
$sv_shop = &singleton('shop');
$shop_shops_id = 10;
// получим список пользователей
$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;
// конец добавленного куска для свойств
// и вот сюда вписываем код для суммы на счету у юзера
$sum = $sv_shop->GetSiteUserAccountSum($item_user_id, $shop_shops_id);
$node = array();
$node['xml_name'] = 'users_sum';
$node['value'] = $sum;
$user_value[] = $node;
// а вот сюда - код для транзакций
$transactions = array();
$transactionsValue = array();
$transactions['xml_name'] = 'transactions';
$trans_resource = $sv_shop->GetAllSiteUserAccountTransaction($site_users_id);
while ($trans_row = mysql_fetch_assoc($trans_resource)) {
$transaction_item = array();
$transaction_item['xml_name'] = 'transaction';
$transactionItemValue = array();
foreach ($trans_row as $trans_key => $trans_value) {
$node = array();
$node['xml_name'] = $trans_key;
$node['value'] = $trans_value;
$transactionItemValue[] = $node;
}
$transaction_item['value'] = $transactionItemValue;
$transactionsValue[] = $transaction_item;
}
$transactions['value'] = $transactionsValue;
$user_value[] = $transactions;
$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>';
// Применим XSL-шаблон и выведем страницу
$xsl = &singleton('xsl');
$xsl_name = 'XSL_для_пользователей_сайта';
echo $xsl->build($usersxml, $xsl_name);
}
?>
Заказов не беру. Консультирую редко.
Kotoff
4 декабря 2009 г.
Чуть-чуть поправил пару переменных
<?php
/**
* @author James
* @copyright 2009
*/
// проверим существование класса SiteUsers
if (class_exists('SiteUsers')) {
// создадим экземпляр класса SiteUsers
$SiteUsers = &singleton('SiteUsers');
// создадим экземпляр класса Shop
$shop = &singleton('shop');
$shop_shops_id = 10;
// получим список пользователей
$resource = $SiteUsers->GetAllUsers();
// подготовим массив для генерации XML
// подробнее см. api класса ExternalXml, метод GenXml()
$users = array();
$usersCount = 0;
while ($row = mysql_fetch_assoc($resource)) {
$item_user_id = $row['site_users_id'];
$usersCount++;
$user_item = array();
$user_item['xml_name'] = 'user';
$user_item['attribute'] = array('id' => $item_user_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($item_user_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;
// конец добавленного куска для свойств
// и вот сюда вписываем код для суммы на счету у юзера
$sum = $shop->GetSiteUserAccountSum($item_user_id, $shop_shops_id);
$node = array();
$node['xml_name'] = 'users_sum';
$node['value'] = $sum;
$user_value[] = $node;
// конец кода для суммы
// а вот сюда - код для транзакций
$transactions = array();
$transactionsValue = array();
$transactions['xml_name'] = 'transactions';
$trans_resource = $shop->GetAllSiteUserAccountTransaction($item_user_id, $shop_shops_id);
while ($trans_row = mysql_fetch_assoc($trans_resource)) {
$transaction_item = array();
$transaction_item['xml_name'] = 'transaction';
$transactionItemValue = array();
foreach ($trans_row as $trans_key => $trans_value) {
$node = array();
$node['xml_name'] = $trans_key;
$node['value'] = $trans_value;
$transactionItemValue[] = $node;
}
$transaction_item['value'] = $transactionItemValue;
$transactionsValue[] = $transaction_item;
}
$transactions['value'] = $transactionsValue;
$user_value[] = $transactions;
// конец обработки транзакций
$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>';
// Отладка - просмотр сгенерированного xml
//echo nl2br(htmlspecialchars($usersxml));
// Применим XSL-шаблон и выведем страницу
$xsl = &singleton('xsl');
$xsl_name = 'XSL_для_пользователей_сайта';
echo $xsl->build($usersxml, $xsl_name);
}
?>
/**
* @author James
* @copyright 2009
*/
// проверим существование класса SiteUsers
if (class_exists('SiteUsers')) {
// создадим экземпляр класса SiteUsers
$SiteUsers = &singleton('SiteUsers');
// создадим экземпляр класса Shop
$shop = &singleton('shop');
$shop_shops_id = 10;
// получим список пользователей
$resource = $SiteUsers->GetAllUsers();
// подготовим массив для генерации XML
// подробнее см. api класса ExternalXml, метод GenXml()
$users = array();
$usersCount = 0;
while ($row = mysql_fetch_assoc($resource)) {
$item_user_id = $row['site_users_id'];
$usersCount++;
$user_item = array();
$user_item['xml_name'] = 'user';
$user_item['attribute'] = array('id' => $item_user_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($item_user_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;
// конец добавленного куска для свойств
// и вот сюда вписываем код для суммы на счету у юзера
$sum = $shop->GetSiteUserAccountSum($item_user_id, $shop_shops_id);
$node = array();
$node['xml_name'] = 'users_sum';
$node['value'] = $sum;
$user_value[] = $node;
// конец кода для суммы
// а вот сюда - код для транзакций
$transactions = array();
$transactionsValue = array();
$transactions['xml_name'] = 'transactions';
$trans_resource = $shop->GetAllSiteUserAccountTransaction($item_user_id, $shop_shops_id);
while ($trans_row = mysql_fetch_assoc($trans_resource)) {
$transaction_item = array();
$transaction_item['xml_name'] = 'transaction';
$transactionItemValue = array();
foreach ($trans_row as $trans_key => $trans_value) {
$node = array();
$node['xml_name'] = $trans_key;
$node['value'] = $trans_value;
$transactionItemValue[] = $node;
}
$transaction_item['value'] = $transactionItemValue;
$transactionsValue[] = $transaction_item;
}
$transactions['value'] = $transactionsValue;
$user_value[] = $transactions;
// конец обработки транзакций
$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>';
// Отладка - просмотр сгенерированного xml
//echo nl2br(htmlspecialchars($usersxml));
// Применим XSL-шаблон и выведем страницу
$xsl = &singleton('xsl');
$xsl_name = 'XSL_для_пользователей_сайта';
echo $xsl->build($usersxml, $xsl_name);
}
?>
Заказов не беру. Консультирую редко.
Kotoff
4 декабря 2009 г.
А вот вам, пожалуйста, и пример простейшего XSL-шаблона для того xml, который создается скриптом из предыдущего поста:
<?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">
<h1>Пользователи</h1>
<p>Всего пользователей - <xsl:value-of select="@count"/>.</p>
<xsl:apply-templates select="user"/>
</xsl:template>
<xsl:template match="user">
<div class="user">
<h3>Идентифтикатор пользователя
<xsl:value-of select="@id"/>,
логин -
<xsl:value-of select="site_users_login"/>.</h3>
<p>Аватрака: <xsl:value-of select="extra_propertys/extra_property[site_users_extra_property_name = 'avatar']/site_users_property_value"/></p>
<p>Сумма на счете: <xsl:value-of select="users_sum"/></p>
<p>Данные о транзакциях:</p>
<xsl:apply-templates select="transactions/transaction"/>
<p>Всего транзакций: <xsl:value-of select="count(transactions/transaction)"/>.</p>
</div>
</xsl:template>
<xsl:template match="transaction">
<p>Дата: <xsl:value-of select="shop_site_users_account_datetime"/>,
номер заказа: <xsl:value-of select="shop_order_id"/>,
описание заказа <xsl:value-of select="shop_site_users_account_description"/>,
сумма: <xsl:apply-templates select="shop_site_users_account_sum"/></p>
</xsl:template>
</xsl:stylesheet>
<!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">
<h1>Пользователи</h1>
<p>Всего пользователей - <xsl:value-of select="@count"/>.</p>
<xsl:apply-templates select="user"/>
</xsl:template>
<xsl:template match="user">
<div class="user">
<h3>Идентифтикатор пользователя
<xsl:value-of select="@id"/>,
логин -
<xsl:value-of select="site_users_login"/>.</h3>
<p>Аватрака: <xsl:value-of select="extra_propertys/extra_property[site_users_extra_property_name = 'avatar']/site_users_property_value"/></p>
<p>Сумма на счете: <xsl:value-of select="users_sum"/></p>
<p>Данные о транзакциях:</p>
<xsl:apply-templates select="transactions/transaction"/>
<p>Всего транзакций: <xsl:value-of select="count(transactions/transaction)"/>.</p>
</div>
</xsl:template>
<xsl:template match="transaction">
<p>Дата: <xsl:value-of select="shop_site_users_account_datetime"/>,
номер заказа: <xsl:value-of select="shop_order_id"/>,
описание заказа <xsl:value-of select="shop_site_users_account_description"/>,
сумма: <xsl:apply-templates select="shop_site_users_account_sum"/></p>
</xsl:template>
</xsl:stylesheet>
Заказов не беру. Консультирую редко.
hostcms
Модератор
11 апреля 2013 г.
Пример контроллера для шестой версии http://www.hostcms.ru/forums/3/8580/
Авторизация