Оглавление

xs2GetLinks

Эта функция возвращает объекты типа NType из модулей, определяемых параметром mods, у которых в виртуальном поле lnkField есть ссылка на объект из модуля mod с идентификатором NodId.

Параметры

int NodId

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

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

mixed NType

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

Значение по умолчанию: любой тип.

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

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

string lnkField

Название поля, в котором у запрашиваемых объектов хранятся ссылки на данный объект.

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

mixed linkDetail

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

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

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

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

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

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

string mod

Название модуля, в котором находится объект с идентификатором NodId. См. также http://lib.solutecs.com/api/concept/show/438.htm

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

mixed mods

Модули из которых запрашиваются объекты. См. также http://lib.solutecs.com/api/concept/show/438.htm

Значение по умолчанию: Значение параметра mod (если mod не указан, то текущий модуль).

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

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

string var

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

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

Примеры

Пример 9

"Вдоль потоков, по равнинам,
Шли вожди от всех народов,
Шли Чоктосы и Команчи,
Шли Шошоны и Омоги,
Шли Гуроны и Мэндэны,
Делавэры и Могоки,
Черноногие и Поны,
Оджибвеи и Дакоты
Шли к горам Большой Равнины,
Пред лицо Владыки Жизни"
© Генри Лонгфелло, "Песнь о Гайавате", 1855
Допустим, что тип country содержит объекты, описывающие страны, а объекты типа tribe, хранят описания племен. У каждого объекта tribe имеется поле territory со ссылкой на одну или несколько стран (объектов типа country), в которых обитает данное племя:
{xs2GetLinks
     var = "tribes"
     NodId = 418
     NType = "tribe"
     lnkField = "territory"}  
Если объект с идентификатором NodId равным 418 - описывает Америку, то содержание массива $tribes можно обойти и получить список племен так:
{foreach from=$tribes item="tribe"}
     {$tribe.NName}
{/foreach}
Или так:
{strip}
    {foreach from=$tribes item="tribe" name="loop"}
       {if $smarty.foreach.loop.last} и {/if}
       {$tribe.NName}
       {if not $smarty.foreach.loop.last},{else}.{/if}
    {/foreach}
{/strip}
Чтобы получить на странице список названий племен через запятую:
Чоктосы, Команчи, Шошоны, Омоги, Гуроны, Мэндэны, Делавэры, Могоки, Черноногие, Поны, Оджибвеи и Дакоты.

Еще пример

{xs2GetLinks
    mods="articles, essays, docs"
    mod="users"
    lnkField="Author"
    NodId=777
    var="texts"}
Такой запрос вернет в переменную $texts все объекты из модулей articles, essays и/или docs, у которых в поле Author имеется ссылка на объект номер 777 из модуля users.
Такой же запрос, с уточнением типа (NType) запрошенных объектов:
{xs2GetLinks
    mods="articles, essays, docs"
    mod="users"
    lnkField="Author"
    NType="text"
    NodId=777
    var="texts"}
В этом случае полученные объекты будут ограничены по типу, то есть в указанных модулях будут найдены только объекты типа text. При этом типы text в каждом из модулей создаются независимо и могут отличаться.