Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   Вложенные условия (http://forum.typo3.ru/showthread.php?t=4460)

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

Цитата:

Сообщение от Maria Rykalina (Сообщение 14733)
Наверное, я опять чего-то не понимаю, но:

Как вывести атрибут, отличный от 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: |
}



Часовой пояс GMT +4, время: 12:30.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot