Обсуждение шаблона:Ifdef
Материал из Википедии — свободной энциклопедии
Условный шаблон {{ifdef}}:
{{ifdef|выражение1|выражение2}}
Значением шаблона будет выражение2, если выражение1 - не пустая строка. В противном случае шаблон возвратит пустую строку.
Содержание |
[править] Примеры
{{ifdef | | привет, ''Мир!!!''}} |
|
|
{{ifdef | здесь есть текст | привет, ''Мир!!!''}} |
|
—gruzd 08:22, 9 декабря 2005 (UTC)
[править] Ограничения
выражение1 и выражение2 не должны включать в себя в нераскрытом виде символы «=» и «|». Если необходимо использовать символ «=», лучше взять Шаблон:Qif. Maxim Razin 11:31, 11 февраля 2006 (UTC)
[править] Дефект в реализации
Нужно заменить на {{switch|1={{{1|}}}|case: {{{1}}}={{{2}}}| case: =}}
, иначе шаблон работает неверно, если первый параметр содержит знак равенства: {{ifdef|1=a=b|2=show this}}
вычисляется в «
ВНИМАНИЕ! Шаблон ifdef устарел и не больше не используется. Вместо него надо использовать функции парсера. |
», а должен в «show this». — doublep 17:44, 7 января 2006 (UTC)
- Кроме того,
|case: =
можно вообще убрать, случай по умолчанию и без того пустая строка. — doublep 17:45, 7 января 2006 (UTC)
-
- Заменил --ajvol 20:48, 7 января 2006 (UTC)
-
-
- Это не работает, я (как и автор) не учёл, что
case: {{{1}}}={{{2}}}
разворачивается, например, в «case: a=b=show this
», и в итоге опять ничего не получается из-за неправильного названия параметра. Новое предложение: переделать через Шаблон:qif —{{qif|test={{{1|}}}|then={{{2|}}}}}
. — doublep 21:45, 7 января 2006 (UTC)- Подожди секунду - твой вариант создаёт лишний уровень раскрытия шаблонов, а конструкция {{ifdef|1=a=b|2=show this}} всё равно никуда не годится. Лучше задокументировать ограничение, что внутри параметров не должно быть символа '=' (а иначе рекомендовать пользоваться qif). Maxim Razin 22:20, 7 января 2006 (UTC)
- Что значит «никуда не годится»? Имеется в виду, что «a=b» вылезло из раскрытия другого шаблона. Не надо ограничений в таких низкоуровневых шаблонах, ты их потом в жизни не отследишь, когда начнутся глюки в чём нибудь вроде Шаблон:Страна. Если не нравится лиший уровень, можно скопировать
qif
cюда и прооптимизировать для пустого параметраelse
. (Кстати, почему «qif», а не просто «if»?) — doublep 22:35, 7 января 2006 (UTC)- Ответ себе: у англичан есть и
qif
иif
, с другой функциональностью, так что лучше ничего не переименовывать. — doublep 11:33, 8 января 2006 (UTC)
- Ответ себе: у англичан есть и
- Что значит «никуда не годится»? Имеется в виду, что «a=b» вылезло из раскрытия другого шаблона. Не надо ограничений в таких низкоуровневых шаблонах, ты их потом в жизни не отследишь, когда начнутся глюки в чём нибудь вроде Шаблон:Страна. Если не нравится лиший уровень, можно скопировать
- Подожди секунду - твой вариант создаёт лишний уровень раскрытия шаблонов, а конструкция {{ifdef|1=a=b|2=show this}} всё равно никуда не годится. Лучше задокументировать ограничение, что внутри параметров не должно быть символа '=' (а иначе рекомендовать пользоваться qif). Maxim Razin 22:20, 7 января 2006 (UTC)
- Это не работает, я (как и автор) не учёл, что
-
Может вообще удалить этот шаблон и рекомендовать использовать Qif? Например, в английской вике нет такого шаблона. --ajvol 11:22, 8 января 2006 (UTC)
- Думаю, лучше оставить. Он уже используется и в нём не надо указывать имена параметров (хотя это и может приводить к глюкам при наличии знаков равенства в значениях…). Давай заменим реализацию на
{{{1{{{1|}}}|{{{2|}}}}}}
. — doublep 11:32, 8 января 2006 (UTC)
[править] Как такое сделать у себя
Хороший шаблон, только в своей (локальной версии) не понимаю куда и что писать для создания шабона (ведь это не обычный шаблон)? Понимаю что вопрос задавать не сюда, но тогда куда? --Allexander 14:42, 13 января 2006 (UTC)
Поддерживаю вопрос, мне тоже интересно как такое сделать. --Phoenix 14:10, 10 февраля 2006 (UTC)
[править] Почему не получается?
Я попробовал вставить в Шаблон:Город Франции, но почему-то ничего не показывается, даже когда параметр есть. Что такое? --PlatypeanArchcow 03:52, 10 февраля 2006 (UTC)
- ifdef почему-то работает только в самых простых случаях, лучше пользоваться qif. А сложные части желательно выносить в отдельные подшаблоны. Посмотрите, как сделан Шаблон:Станция метрополитена. Maxim Razin 00:03, 11 февраля 2006 (UTC)
- Разобрался - в параметрах не должно быть символа "=", иначе они воспринимаются как ключевые. Maxim Razin 11:26, 11 февраля 2006 (UTC)