Оглавление

xs2GetChildren

Эта функция возвращает из модуля mod в виде массива набор объектов, дочерних для объекта с идентификатором ParId. Результат можно ограничить объектами типа NType и условием condition в синтаксисе SQL. Набор полей определяется параметром fields, а сортировка результата задается параметром sort. При вызове из шаблона Smarty результат оказывается в переменной с именем, которое задано в параметре var.

Параметры

int ParId

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

Обязательный параметр.

Значение по умолчанию: 1.

string NType

Тип возвращаемых объектов.

string condition

Дополнительное условие отбора объектов (синтаксис SQL)

Значение по умолчанию: пустое условие.

mixed fields

Какие поля объекта возвращать.

Значение по умолчанию: 3.

Варианты параметра:

int = 1
Только общие поля объектов
int = 2
только дополнительные поля
int = 3
все поля

Значение по умолчанию.

string
список названий полей через запятую
array
массив названий полей

mixed linkDetail

какие поля связанных объектов возвращать.

Значение по умолчанию: 3.

Варианты параметра:

int = 1
только общие поля объектов
int = 2
только дополнительные поля
int = 3
все поля

Значение по умолчанию.

string
список названий полей через запятую
array
массив названий полей

string sort

Список полей, по которым сортируется набор.

int limit

Ограничивает количество возвращаемых узлов.

string mod

Название модуля. См. также http://lib.solutecs.com/api/concept/show/438.htm

Значение по умолчанию: текущий модуль.

string var

Название переменной, в которую возвращается результат

Используется только в шаблоне.

Примеры

Пример 6

<?php
    $category = xs2GetChildren(array('ParId' => 4));
?>
Зная идентификатор NodId категории в переменную $category получили список содержащихся в ней объектов.
Значения NType объектов могут различаться, так как дочерние объекты могут быть разнотипными:
Array(
    Array(
        [NodId] => 84
        [NName] => Briana Banks
        [ParId] => 4
        [NType] => people
        [year] => 1978
        [sex] => f
        ...
    )
   Array(
        [NodId] => 19
        [NName] => Ron Jeremy
        [ParId] => 4
        [NType] => people
        [year] => 1953
        [sex] => m
        ...
    )
    Array(
        [NodId] => 67
        [NName] => Tawny Stone
        [ParId] => 4
        [NType] => people
        [year] => 1982
        [sex] => f
        ...
     )
     Array( 
         [NodId] => 112
         [NName] => Lightspeed Media Corporation
         [ParId] => 4
         [NType] => company
         [year] => NULL
         [sex] => NULL
         ...
      )
      ...
)
Теперь можно передать список в шаблон Smarty, чтобы вывести его на странице:
<?php
    $_HTML->assign('category', $category);
?>
Набор полей в разных типах может различаться (у объектов people в примере есть поля year и sex, которые отсутствуют у объектов типа company, а значит отображать их не нужно:
{foreach from=$category item="object"}
     {$object.NType} - {$object.NName}
     {if $object.year}
          ({$object.year})
     {/if}
     <br />
{/foreach}

Пример 7

Можно ограничить выборку из предыдущего примера по типу объктов, полу и, например, возрасту. Порядок ключей в массиве-параметре не важен:
<?php
    $people = 
        xs2GetChildren(array(
              'condition' => "year > 1980 and sex = 'f'",
              'ParId' = 4,
              'NType' => 'people'));
?>
Результат получается в переменную $people – данные только о девушках (sex="f") младше 25 лет.

Пример 8

Допустим, запрошена страница http://www.quickie.ru/base/job/list/4.htm. Это значит, что в модуле base у типа объектов job запрошен метод list с параметром 4, который доступен в шаблоне через переменную $_THE.PARAMS[0].
{xs2GetChildren
        var = "group"
        ParId = $_THE.PARAMS[0]
        NType = $_THE.QUE.OBJ
        sort = "NName"}
То есть из модуля base в переменную $group получены, упорядоченные параметром sort по алфавиту, профессии (объекты типа job - его значение взято из переменной окружения $_THE.QUE), идентификатор родительского объекта которых ParId получен из запроса ($_THE.PARAMS), например:
Аппаратчик по насасыванию диафрагм
Бригадир двора изложниц
Вздымщик
Гибщик труб
Демонстратор пластических поз
Завивальщик спиралей
Испытатель бумажных мешков
Коксоочиститель
Лакировщик глобусов
Монтажник позитива
Наполнитель приборов жидкостями
Обрезчик анатомического материала
Путевой рабочий на озере
Регулировщик хвостового хозяйства
Слесарь-испытатель
Травильщик стекла плавиковой кислотой
{xs2GetChildren
        var = "group"
        ParId = $_THE.PARAMS[0]
        NType = $_THE.QUE.OBJ
        sort = "NName"
        limit=5}
Аналогичный запрос с параметром limit ограничит количество возвращенных узлов первыми пятью:
Аппаратчик по насасыванию диафрагм
Бригадир двора изложниц
Вздымщик
Гибщик труб
Демонстратор пластических поз