Вход

Просмотр полной версии : TemplaVoila MAPPING или DS???


MDG
15.08.2006, 17:13
Даже не знаю, как правильно описать ситуацию, чтобы стало ясно, чего я хочу, но попробую...

Есть вот такое условие маппинга для темплейта страницы:
[CS]->div
____[CO]->div
________[EL]->td_INNER
________[EL]->td_INNER
________[EL]->td_INNER

в [CO] попадает следующий HTML

<div class="padding">
<table class="showcase" cellspacing="0">
<tbody>
<tr valign="top">
<td class="showcase1">
qwerty1
</td>
<td class="showcase2">
qwerty2
</td>
<td class="showcase3">
qwerty3
</td>
</tr>
</tbody>
</table>
</div>

в [EL] попадает HTML

<td class="showcase">
qwerty1 (...2,...3)
</td>


В результате получается таблица с 3-мя! ячейками в любом случае.
А мне нужно, чтобы когда в заголовке страницы я вставляю содержимое (контент) только в первый [EL] (в первую ячейку), а в двух остальных элементах пусто, вот этот <td class="showcase2"></td><td class="showcase3"></td> не выводился. Просто сейчас получается, что таблица состоит из 3-х ячеек чтобы я не делал, а мне нужно, чтобы количество ячеек было от 1 до 3 в зависимости от контента (есть/нет).

Может в DS можно руками условия прописать??? Я в структуре еще совсем плохо разобрался...

PS: Пробовал по другому маппинг строить, добавляя внутрь контейнера еще секции или еще контейнеры. Но если в 3-м ветвлении встречается контейнер или секция, ее невозможно выбрать, когда правишь заголовок страницы, она просто сама по сабе пропадает.

Pavel Antonov
15.08.2006, 17:57
Нужно тогда генерить эти тэги в TS...

Мэпить какой нибудь объект TS на <tr> и все <td> генерировать самостоятельно. А контент оставить бэз меппинга.

В TS должно быть что то вроде:

lib.row = COA
lib.row {
10 = TEXT
10.field = field_cell1
10.wrap = <td ...>|</td>

...
}

MDG
15.08.2006, 18:39
10.field = field_cell1
выводит ID страницы(число) которая присутствует в field_cell1 а как вывести саму страницу (содержание)?

Ну, соответственно, чтобы <td></td> выводилось только когда field_cell1 не пусто, я добавил if,
получилось
lib.row = COA
lib.row {
10 = TEXT
10{
if.isTrue.field = field_cell1
wrap = <td ...>|</td>
field = field_cell1
}
}
Так реагирует на содержимое field_cell1 и если там что-то есть только тогда выводит <td ...>|</td>.

Pavel Antonov
16.08.2006, 18:19
field_cell1 - это поле с содержимым... переименуйте как оно у Вас называется.

MDG
16.08.2006, 19:23
field_cell1 - это поле с содержимым... переименуйте как оно у Вас называется.
Переименовал конечно, но я получаю ID контента(число) вместо самого конткнта. Просто число "123"! Как мне именно содержимое ID=123 получить?

Pavel Antonov
16.08.2006, 19:34
А... видимо поле имеет тип "content elements"???

Тогда

10 = TEXT
10.cObject = RECORDS
10.cObject {
source.field = field_cell1
tabel = tt_content
}
10.if.isTrue.field = field_cell1



сObject используется для вложения RECORDS, так как у него нет опций stdWrap

MDG
17.08.2006, 14:12
А... видимо поле имеет тип "content elements"??? ДА, он самый.

Спасибо огромное, все получилось как я хотел!
Вот немного подправленный рабочий код:

lib.row = COA
lib.row {
10 = TEXT
10.cObject = RECORDS
10.cObject {
source.field =field_cell1
tables = tt_content
}
10.if.isTrue.field = field_cell1
10.wrap = <td class="showcase1">|</td>
}

Pavel Antonov
17.08.2006, 14:56
да точно... ошибся