PDA

Просмотр полной версии : Вложенные условия


Maria Rykalina
11.09.2007, 18:23
Здравствуйте. При изучении TypoScript возник такой вопрос:

Допускает ли TypoScript создание вложенных условий такого вида:

[Условие 1]
[Условие 2]
Действия 2.1
[else]
Действия 2.2
[end]
[else]
Действия 1
[end]

Может, есть какая-нибудь специальная конструкция, отличающаяся от моих фантазий?

Спасибо.

void
11.09.2007, 18:41
Нет, не допускает. Обычно, когда нужно сделать не просто if-else условие, пользуются CASE.

Maria Rykalina
11.09.2007, 18:58
CASE здесь вряд ли пойдет, потому что имеется в виду выбор не среди нескольких значений одного свойства.

Нужно, чтобы в зависимости от значения одного свойства происходил дальнейший выбор действия уже по значению другого свойства.

Как реализовать такой выбор?

Pavel Antonov
11.09.2007, 19:10
Вложенные CASE-ы.

Вообще, приведите здесь условия которые необходимо реализовать.

Maria Rykalina
12.09.2007, 14:05
Вложенные CASE-ы вполне подойдут. Только как проверить не совпадение конкретного значения, а просто наличие хоть какого-нибудь?
Не так ведь:
stuff = CASE
...
stuff.* = TEXT
stuff.* {
....
}

А необходимость такая: в зависимости от заполненности одного поля учетной записи пользователя выводить либо не выводить дополнительные его атрибуты.

void
12.09.2007, 17:14
Ну, например, как-то так:


10 = COA
10.10 = TEXT
10.10.value = Привет, {TSFE:fe_user|user|username} #Общая часть
10.10.insertData = 1
10.20 = TEXT
10.20.data = TSFE:fe_user|user|email
10.20.required = 1
10.20.wrap = Твой email: |

Maria Rykalina
13.09.2007, 18:17
Если я не ошибаюсь(что весьма вероятно), этот пример обязательно выведет username, а после авторизации - обязательно выведет email.

Если опираться на Ваш пример, то мне нужна такая последовательность:
1. Выводится общая часть
2. Пользователь авторизуется
3. Проверяется email
3.1. Если email не пуст, выводится username
3.2. Иначе вывести name

Если для этого подойдет приведенная конструкция, то как ей воспользоваться?

PS: Основной вопрос сейчас - как записать условие "если атрибут имеет хотя бы какое-то значение(не пуст)"?

Pavel Antonov
14.09.2007, 14:40
Email будет выведен только в том случае если он не пуст.
Для этого служит required=1

Maria Rykalina
14.09.2007, 15:22
Наверное, я опять чего-то не понимаю, но:

Как вывести атрибут, отличный от email, если email все же пуст?

Pavel Antonov
14.09.2007, 18:25
Наверное, я опять чего-то не понимаю, но:

Как вывести атрибут, отличный от email, если email все же пуст?

10 = TEXT
10.value = Привет, {TSFE:fe_user|user|username}
10.insertData = 1
10.override {
data = TSFE:fe_user|user|email
required = 1
wrap = Твой email: |
}

wind
22.10.2008, 18:24
не могли бы вы поподробнее рассказать как использовать вложенные CASE?
мне нужно сделать, чтобы в зависимости от выбранного языка и id страницы показывались разные картинки в меню. я пишу такой код :lib.page_top_title.file = CASE

10{
key.data = TSFE:id
21=CASE
21{
key.data = GP:L
0= fileadmin/template/images/kontakt.png
1= fileadmin/template/images/contact.png


}
}

т.е. если id страницы= 21, то начинаем вложенный case. и если языковая переменная = 0, то подключаем каотринку kontakt.png, а если 1- сontact.png

wind
22.10.2008, 18:40
или как можно написать условие типа [globalVar = TSFE:id = 21 AND globalVar = GP:L=0] ?
т.е. чтобы оба условия работали одновременно?