Как получить значение параметра в шаблоне списка документов

5 views
Skip to first unread message

pul...@live.ru

unread,
Mar 6, 2008, 1:24:23 PM3/6/08
to Open Constructor
У меня такая проблема.
Создал гибридный документ, в нем несколько параметров - два параметра
примитивных типов и один - массив документов. Создал объект Гибридные
данные -> Список документов, отметил всё что нужно в блоке
<<Запрашиваемые поля документов>>, сохранил.

Создал шаблон - Гибридные данные -> Список документов. В шаблоне -
поля примитивных типов выводятся без проблем, но я не понимаю, что
делать с массивом документов, выводится только id через запятую. Как
вывести данные документа?

ButscH

unread,
Mar 6, 2008, 2:29:46 PM3/6/08
to Open Constructor
Создание инъекции

ButscH

unread,
Mar 6, 2008, 2:40:00 PM3/6/08
to Open Constructor
Создаешь в шаблоне блок куда будет выводится массив, допустим
{run_block id=news}
Далее можно создать новый объект, либо использовать старый , откуда ты
берешь массив документов и ставишь на этой странице в блок news

Далее идешь в объекты - разное - инъекция объектов
Создаешь инъекцию и в ней указываещь
Вставить - context параметр допустим .product.newsmass
где product - Идентификатор документа(Ctx), который указываешться в
объекте гибридный документ для объекта в котором массив
news - id поля с массивом, которое ты указал в данных

В - ставишь блок
id цели ставишь блок где у тебя должен выводится массив, в моем случае
он news ( {run_block id=news} )
Поле ставишь ids
Место применеия страницв где массив в блоке PRE

pul...@live.ru

unread,
Mar 18, 2008, 9:43:50 AM3/18/08
to Open Constructor
Все сделал по инструкции, но ничего не получилось. Если я создаю
Список документов (для вывода поля с массивом), то у меня выводятся
все документы из базы, а мне нужны только те, которые указаны в
массиве. А если я создаю Список документов по ID - то у меня вообще
ничего не выводится; и ещё - инъекция никак не влияет на вывод.

У меня:

В разделе данных: раздел (гибридный) <<Фильмы>>.
Параметры раздела:

Идентификатор: films
Название раздела: Фильмы

Поля:
id; header; year(примитивный); director(массив документов), документы
хранятся в разделе гибридных данных <<Люди>>.

Гибридный раздел <<Люди>>

Идентификатор: persons

Поля: id, header, profession, f_name, m_name, l_name.

Далее создал Список гибридных документов (каталог), указал в
параметрах, чтобы объект запрашивал все поля, в том числе и director.

В итоге всё нормально выводится кроме поля director(получаю только
список id).
Помогите пожалуйста, сам ни как не разберусь. Спасибо.

Павлушка Б.

unread,
Mar 18, 2008, 9:59:12 AM3/18/08
to opencon...@googlegroups.com

director(массив документов) - ты использушь его для вывода id документов, так? Следовательно у тебя как бы в буфере страницы имеются id документов через запятую, главное галочку в объектах не забыть поставить.

Создавая инъекцию ты как бы ей передаешь id номера  поля director а другому блоку с информацией на странице.

Следовательно инъекция должна быть вида:

Встывить -> context -> .films.director
В -> блок -> "Блок где у тебя находится объект люди"

Инъекцию надо разместить на тойже странице что Объект фильмы и люди только я заметил что она должны быть выже этих двух блоков, иначе не работает!

Если что могу помочь по icq 3139171


Sanjar Akhmedov

unread,
Mar 18, 2008, 11:05:50 AM3/18/08
to opencon...@googlegroups.com
Метод описанный ButscH-ем используется если нужно вытащить массив документов из объекта "Гибридный Документ", но это не сработает для объекта списков.

Вытащить связанные через поля гибридные документы в списке документов возможно только в последнем ОК который в svn.

1. Нужно создать объект "Список документов по ID" который будет вытаскивать документы из раздела Люди. Шаблон не имеет значения, можно не создавать.
2. В объекте Список фильмов в настройке полей справа от поля director появится дропдаун где нужно выбрать объект созданный в шаге 1.
3. Оба объекта должны находится на странице где они используются. Вспомогательный объект который был создан на шаге 1 должен находится в stub блоке.

Из шаблона Список фильмов можно посмотреть структуру документов {$docs|@debug_print_var}

pul...@live.ru

unread,
Mar 18, 2008, 1:50:05 PM3/18/08
to Open Constructor
Спасибо большое, теперь все работает, и в документе и в списке! Сам бы
не разобрался.

pul...@live.ru

unread,
Mar 21, 2008, 10:02:15 AM3/21/08
to Open Constructor
А что делать если нужно вывести информацию из второго блока до того
как завершится вывод из первого блока?

Допустим у меня два блока - PageContent(в основном шаблоне для всех
страниц) и MyStub_1(объявлен в основном шаблоне, запускается в шаблоне
"Описание фильма", через него выводится массив документов "Список
людей"). Если использовать инъекцию в блок MyStub_1, то информацию
можно вывести только после блока PageContent поставив {run_block
id=MyStab_1} в конце шаблона "Описание фильма", либо перед ним,
поставив {run_block id=MyStab_1} в основном шаблоне перед {run_block
id=PageContent}. А мне нужно выводить данные в разном порядке -
немного из описания фильма, потом массив людей, потом ещё инфа
офильме. На сколько я понял это можно решить через инъекцию в сам
объект "Описание фильма", но не могу разобраться как это сделать.
Помогите плз.

Объект "Описание фильма" =>

Array (25)
id => 2
_id => 2
_type => "films"
_published => true
header => "А зори здесь тихие..."
duration => "160"
genre => "Военная Драма"
info => "Эта драма о судьбах �..."
synopsis => "Действие происходит..."
year => "1972"
actors => "9,10,11,12,13,14,15,16,17,18,19"
awards => "20,21,22,24"
composer => "6"
cutter => ""
designer => ""
director => "1"
dvd_release => "27"
operator => "7"
producer => ""
script => "1,8"
sound_producer => ""
stills => "2,3"
studio => "5"
aspect_ratio => Array (3)
id => "6"
value => "ar-185"
header => "1,85:1"


Объект "Список людей" =>

Array (7)
_id => 1
id => 1
_dsKey => "person"
header => "Ростоцкий Станислав"
f_name => "Станислав"
l_name => "Ростоцкий"
href => ".?item=1"


Как инъектировать массив со списком в Описание фильма.director? и
возможно ли это вообще? Спасибо.

Sanjar Akhmedov

unread,
Mar 21, 2008, 6:10:02 PM3/21/08
to opencon...@googlegroups.com
Если director и actors берутся из одного и того же раздела данных и объект(список док. по id) в блоке MyStub_1 настроен на этот раздел данных, то можно в шаблоне фильма написать:
Инф о фильме...
Актеры:
{inject block=MyStub_1 field=ids value=$doc.actors|default:-1}
{run_block id=MyStub_1}
Режиссер:
{inject block=MyStub_1 field=ids value=$doc.directo|default:-1}
{run_block id=MyStub_1}
Дальше инф о фильме...

pul...@live.ru

unread,
Mar 25, 2008, 12:45:22 PM3/25/08
to Open Constructor

Спасибо.
А как всё таки пользоваться инъекцией в объект?

Sanjar Akhmedov

unread,
Mar 26, 2008, 3:13:29 AM3/26/08
to opencon...@googlegroups.com
В моем примере инъекция происходит прям в шаблоне через вызов {inject...}

pul...@live.ru

unread,
Apr 7, 2008, 8:00:28 AM4/7/08
to Open Constructor
разобрался! проще было сделать вывод документа через объект "Список
документов по ID", обошёлся двумя инъекциями в список и в галерею,
остальное подгружается автоматом.
Получается, что объект "Гибридный документ" без подгрузки данных как в
списке по id - теряет свою актуальность
Reply all
Reply to author
Forward
0 new messages