Шаблон:День в истории: различия между версиями
Перейти к навигации
Перейти к поиску
Nikita (обсуждение | вклад) |
Oreolek (обсуждение | вклад) м |
||
(не показано 16 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
<noinclude> | <noinclude> | ||
Шаблон, отображающий информацию о различных исторических событиях на конкретную дату. Показывает первые релизы проектов (свойство "Дата первого релиза"), релизы игр (свойство "Дата") и дни рождения (свойство "День рождения"), приходящиеся на заданный день года. В качестве необязательного аргумента может принимать дату в формате ДД.ММ, например, <nowiki>{{День в истории|13.09}}</nowiki>, информацию по которой надо показать. Без указания даты отображает информацию для текущего дня согласно настройкам сервера. | Шаблон, отображающий информацию о различных исторических событиях на конкретную дату. Показывает первые релизы проектов (свойство "Дата первого релиза"), релизы игр (свойство "Дата") и дни рождения (свойство "День рождения"), приходящиеся на заданный день года. В качестве необязательного аргумента может принимать дату в формате ДД.ММ, например, <nowiki>{{День в истории|13.09}}</nowiki>, информацию по которой надо показать. Без указания даты отображает информацию для текущего дня согласно настройкам сервера. | ||
− | |||
− | |||
</noinclude><div style="display: none;"> | </noinclude><div style="display: none;"> | ||
− | {{#if: {{{1|}}} |{{#vardefine:sDayMonth| {{{1}}} }} | + | <!-- Проверяем, передан ли шаблону аргумент. --> |
− | {{#arraydefine:aDate|{{{1}}}|.}} | + | {{#if: {{{1|}}} | |
− | {{#switch: {{#arrayindex:aDate|1}} | 01 = {{#vardefine:sCurrentMonthNameGen|января}} | 02 = {{#vardefine:sCurrentMonthNameGen|февраля}} | 03 = {{#vardefine:sCurrentMonthNameGen|марта}} | 04 = {{#vardefine:sCurrentMonthNameGen|апреля}} | 05 = {{#vardefine:sCurrentMonthNameGen|мая}} | 06 = {{#vardefine:sCurrentMonthNameGen|июня}} | 07 = {{#vardefine:sCurrentMonthNameGen|июля}} | 08 = {{#vardefine:sCurrentMonthNameGen|августа}} | 09 = {{#vardefine:sCurrentMonthNameGen|сентября}} | 10 = {{#vardefine:sCurrentMonthNameGen|октября}} | 11 = {{#vardefine:sCurrentMonthNameGen|ноября}} | 12 = {{#vardefine:sCurrentMonthNameGen|декабря}} }} | + | <!-- Переданный аргумент принимаем как числовое значение даты в формате ДД.ММ --> |
− | {{#vardefine:sDayMonthName| {{#expr: {{#arrayindex:aDate|0}} + 0}} {{#var:sCurrentMonthNameGen}} }} | + | {{#vardefine:sDayMonth| {{{1}}} }} |
− | |{{#vardefine:sDayMonth| {{CURRENTDAY2}}.{{CURRENTMONTH}} }} | + | <!-- Разбиваем строку аргумента по знаку точки на две подстроки. --> |
− | {{#vardefine:sCurrentMonthNameGen| {{CURRENTMONTHNAMEGEN}} }} | + | {{#arraydefine:aDate|{{{1}}}|.}} |
− | {{#vardefine:sDayMonthName| {{CURRENTDAY}} {{#var:sCurrentMonthNameGen}} }} | + | <!-- В зависимости от номера месяца определяем его словесное название в родительном падеже. --> |
+ | {{#switch: {{#arrayindex:aDate|1}} | 01 = {{#vardefine:sCurrentMonthNameGen|января}} | 02 = {{#vardefine:sCurrentMonthNameGen|февраля}} | 03 = {{#vardefine:sCurrentMonthNameGen|марта}} | 04 = {{#vardefine:sCurrentMonthNameGen|апреля}} | 05 = {{#vardefine:sCurrentMonthNameGen|мая}} | 06 = {{#vardefine:sCurrentMonthNameGen|июня}} | 07 = {{#vardefine:sCurrentMonthNameGen|июля}} | 08 = {{#vardefine:sCurrentMonthNameGen|августа}} | 09 = {{#vardefine:sCurrentMonthNameGen|сентября}} | 10 = {{#vardefine:sCurrentMonthNameGen|октября}} | 11 = {{#vardefine:sCurrentMonthNameGen|ноября}} | 12 = {{#vardefine:sCurrentMonthNameGen|декабря}} }} | ||
+ | <!-- Определяем название даты в виде строки с номером дня (без нуля в начале) и словесного названия месяца в родительном падеже. --> | ||
+ | {{#vardefine:sDayMonthName| {{#expr: {{#arrayindex:aDate|0}} + 0}} {{#var:sCurrentMonthNameGen}} }} | ||
+ | | | ||
+ | <!-- Если шаблон вызван без аргумента, то за числовую дату в формате ДД.ММ принимаем текущую дату с сервера. --> | ||
+ | {{#vardefine:sDayMonth| {{CURRENTDAY2}}.{{CURRENTMONTH}} }} | ||
+ | <!-- Определяем словесное название месяца в родительном падеже. --> | ||
+ | {{#vardefine:sCurrentMonthNameGen| {{CURRENTMONTHNAMEGEN}} }} | ||
+ | <!-- Определяем название даты в виде строки с номером дня (без нуля в начале) и словесного названия месяца в родительном падеже. --> | ||
+ | {{#vardefine:sDayMonthName| {{CURRENTDAY}} {{#var:sCurrentMonthNameGen}} }} | ||
}} | }} | ||
+ | <!-- Определяем массив годов, актуальных для контента вики. --> | ||
{{#arraydefine:aYears}} | {{#arraydefine:aYears}} | ||
− | {{#arraydefine:aCategories| {{#ask: [[Категория:+]] | limit=500 | link=none | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER }} | + | <!-- Нижеследующий запрос обрабатывает только 500 первых по алфавиту категорий, но числовые названия идут как раз впереди, так что этого неполного среза хватит на несколько ближайших веков. --> |
+ | {{#arraydefine:aCategories| {{#ask: [[Категория:+]] | limit=500 | link=none | searchlabel= | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER }} | ||
+ | <!-- Отбираем только категории, чьи названия состоят из четырёх цифр. --> | ||
{{#arraysearcharray:aCategories|aCategories|/^Категория:\d{4}$/}} | {{#arraysearcharray:aCategories|aCategories|/^Категория:\d{4}$/}} | ||
− | {{#arrayprint:aCategories| |@@@@| {{#arraydefine:aTemp|@@@@|:}} {{#vardefine: | + | <!-- Перебираем массив категорий, выполняя ряд проверок и наполняя массив годов. --> |
+ | {{#arrayprint:aCategories| |@@@@| | ||
+ | <!-- Определяем номер года, вырезая его из названия категории. --> | ||
+ | {{#arraydefine:aTemp|@@@@|:}} | ||
+ | {{#vardefine:iYear| {{#arrayindex:aTemp|1}} }} | ||
+ | <!-- Определяем переменную-флаг, по значению которой год в итоге будет или не будет включаться в массив. --> | ||
+ | {{#vardefine:bYear|1}} | ||
+ | <!-- Отбрасываем год, если он является текущим. --> | ||
+ | {{#ifeq: {{#var:iYear}} | {{CURRENTYEAR}} | {{#vardefine:bYear|0}} | | ||
+ | <!-- Для даты 29.02 берём только високосные годы. --> | ||
+ | {{#ifeq: {{#var:sDayMonth}} | 29.02 | | ||
+ | {{#ifeq: {{#time: L | {{#var:iYear}} }} | 0 | {{#vardefine:bYear|0}} | }} | ||
+ | | }} | ||
+ | }} | ||
+ | <!-- Если после всех проверок значение флага не изменилось, то включаем год в массив. --> | ||
+ | {{#ifeq: {{#var:bYear}} | 1 | | ||
+ | {{#arraydefine:aTemp| {{#var:iYear}} }} | ||
+ | {{#arraymerge:aYears|aYears|aTemp}} | ||
+ | | }} | ||
+ | }} | ||
+ | <!-- Определяем массив продуктов с первым релизом в заданную дату. --> | ||
{{#arraydefine:aReleases}} | {{#arraydefine:aReleases}} | ||
− | {{#arrayprint:aYears| |@@@@| {{#arraydefine:aTemp| {{#ask: [[Дата первого релиза::{{#var:sDayMonth}}.@@@@]] [[Дата первого релиза::!@@@@]] | limit=500 | link=none | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} {{#arraymerge:aReleases|aReleases|aTemp}} }} | + | <!-- Перебираем все года из массива, проверяя в каждом наличие первых релизов в заданную дату. --> |
+ | {{#arrayprint:aYears| |@@@@| | ||
+ | <!-- Здесь и далее в запросе явно отбрасываем даты в виде просто года, потому что иначе они будут подходить к любому текущему дню года. --> | ||
+ | {{#arraydefine:aTemp| {{#ask: [[Дата первого релиза::{{#var:sDayMonth}}.@@@@]] [[Дата первого релиза::!@@@@]] | limit=500 | link=none | searchlabel= | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} | ||
+ | {{#arraymerge:aReleases|aReleases|aTemp}} | ||
+ | }} | ||
+ | <!-- Определяем массив игр с релизом в заданную дату. --> | ||
{{#arraydefine:aGames}} | {{#arraydefine:aGames}} | ||
− | {{#arrayprint:aYears| |@@@@| {{#arraydefine: | + | <!-- Перебираем все года из массива, проверяя в каждом наличие релизов игр в заданную дату. --> |
+ | {{#arrayprint:aYears| |@@@@| | ||
+ | <!-- Определяем массив всех игр с релизом в заданную дату для конкретного года. --> | ||
+ | {{#arraydefine:aAllGames| {{#ask: [[Категория:Игры]] [[Дата::{{#var:sDayMonth}}.@@@@]] [[Дата::!@@@@]] | limit=500 | link=none | searchlabel= | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} | ||
+ | <!-- Перебираем все игры из массива, чтобы отсеять игры с нежелательной тематикой. --> | ||
+ | {{#arrayprint:aAllGames| |@| | ||
+ | <!-- Добавляем в итоговый массив игр только игры без темы "18+". --> | ||
+ | {{#arraydefine:aTemp| {{#show: @ | ?Тема | link=none }} }} | ||
+ | {{#if: {{#arraysearch:aTemp|18+}} | | | ||
+ | {{#arraydefine:aTemp|@|SUPERMEGADELIMITER}} | ||
+ | {{#arraymerge:aGames|aGames|aTemp}} | ||
+ | }} | ||
+ | }} | ||
+ | }} | ||
+ | <!-- Определяем общее количество дней рождения у персоналий в вики. --> | ||
+ | {{#vardefine:iBirthdays| {{#ask: [[Категория:Персоналии]] [[День рождения::+]] | format=count }} }} | ||
+ | <!-- Определяем количество тактов цикла, необходимое для перебора всего набора дней рождения порциями по 500. --> | ||
+ | {{#vardefine:iLoops| {{#expr: {{#var:iBirthdays}} / 500 + 1 round 0}} }} | ||
+ | <!-- Определяем массив всех дней рождения в вики. --> | ||
+ | {{#arraydefine:aAllBirthdays}} | ||
+ | {{#loop: iLoop | 0 | {{#var:iLoops}} | | ||
+ | {{#arraydefine:aTemp| {{#ask: [[Категория:Персоналии]] [[День рождения::+]] | limit=500 | link=none | offset={{#expr: {{#var:iLoop}}*500}} | searchlabel= | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} | ||
+ | {{#arraymerge:aAllBirthdays|aAllBirthdays|aTemp}} | ||
+ | }} | ||
+ | <!-- Определяем массив дней рождения в заданную дату. --> | ||
{{#arraydefine:aBirthdays}} | {{#arraydefine:aBirthdays}} | ||
− | + | <!-- Перебираем все дни рождения из массива, проверяя для каждого соответствие заданной дате. --> | |
− | {{#arrayprint:aAllBirthdays| |@@@@| {{#arraydefine:aTemp| {{#show: @@@@ | ?День рождения }} | {{#var:sDayMonthName}} }} {{#ifeq: {{#arraysize:aTemp}} | 2 | {{#if: {{#arrayindex:aTemp|0}} | | {{#arraydefine:aTemp|@@@@|SUPERMEGADELIMITER}} {{#arraymerge:aBirthdays|aBirthdays|aTemp}} }} | }} }} | + | {{#arrayprint:aAllBirthdays| |@@@@| |
+ | <!-- Выполняем проверку вхождения заданных номера дня и названия месяца в строку даты дня рождения. --> | ||
+ | {{#arraydefine:aTemp| {{#show: @@@@ | ?День рождения }} | {{#var:sDayMonthName}} }} | ||
+ | <!-- При валидном вхождении, строка дня рождения должна разбиться на два фрагмента, причём, первый фрагмент должен быть пустым. --> | ||
+ | {{#ifeq: {{#arraysize:aTemp}} | 2 | | ||
+ | {{#if: {{#arrayindex:aTemp|0}} | | | ||
+ | {{#arraydefine:aTemp|@@@@|SUPERMEGADELIMITER}} | ||
+ | {{#arraymerge:aBirthdays|aBirthdays|aTemp}} | ||
+ | }} | ||
+ | | }} | ||
+ | }} | ||
+ | <!-- Отдельно определяем массив дней рождения в заданную дату, но без указанного года, прибавляя его к ранее полученным результатам. --> | ||
+ | {{#arraydefine:aAllBirthdays| {{#ask: [[Категория:Персоналии]] [[День рождения::{{#var:sDayMonthName}}]] | limit=500 | link=none | searchlabel= | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} | ||
+ | {{#arraymerge:aBirthdays|aBirthdays|aAllBirthdays}} | ||
+ | <!-- Определяем количество памятных дат отдельно по каждому типу, а также вместе. --> | ||
{{#vardefine:iReleases| {{#arraysize:aReleases}} }} | {{#vardefine:iReleases| {{#arraysize:aReleases}} }} | ||
{{#vardefine:iGames| {{#arraysize:aGames}} }} | {{#vardefine:iGames| {{#arraysize:aGames}} }} | ||
Строка 28: | Строка 103: | ||
{{#vardefine:iHolidays| {{#expr: {{#var:iReleases}} + {{#var:iGames}} + {{#var:iBirthdays}} }} }} | {{#vardefine:iHolidays| {{#expr: {{#var:iReleases}} + {{#var:iGames}} + {{#var:iBirthdays}} }} }} | ||
</div> | </div> | ||
+ | <!-- Вывод информации только тогда, когда есть хотя бы одна памятная дата. --> | ||
{{#ifeq: {{#var:iHolidays}} | 0 | | | {{#ifeq: {{#var:iHolidays}} | 0 | | | ||
== Этот день в истории == | == Этот день в истории == | ||
{{#ifeq: {{#var:iReleases}} | 0 | | | {{#ifeq: {{#var:iReleases}} | 0 | | | ||
=== Релизы === | === Релизы === | ||
− | {{#var:sDayMonthName}} произошёл первый релиз | + | {{#var:sDayMonthName}} произошёл первый релиз {{#var:iReleases}} {{plural:{{#var:iReleases}}|проекта|проектов|проектов}}: |
<ul> | <ul> | ||
{{#arrayprint:aReleases| |@@@@| | {{#arrayprint:aReleases| |@@@@| | ||
+ | <!-- Разбиваем строку даты по названию месяца в родительном падеже, получая во второй подстроке число с номером года. --> | ||
{{#arraydefine:aDate|{{#show: @@@@ | ?Дата первого релиза }}| {{#var:sCurrentMonthNameGen}} }} | {{#arraydefine:aDate|{{#show: @@@@ | ?Дата первого релиза }}| {{#var:sCurrentMonthNameGen}} }} | ||
+ | <!-- Определяем количество лет, прошедшее от текущего года до обрабатываемой даты. --> | ||
{{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | {{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | ||
<li>'''{{#arrayindex:aDate|1}}''' ({{#var:iAge}} {{plural:{{#var:iAge}}|год назад|года назад|лет назад}}) [[@@@@|{{#show: @@@@ | ?Название }}]]</li> | <li>'''{{#arrayindex:aDate|1}}''' ({{#var:iAge}} {{plural:{{#var:iAge}}|год назад|года назад|лет назад}}) [[@@@@|{{#show: @@@@ | ?Название }}]]</li> | ||
Строка 44: | Строка 122: | ||
=== Игры === | === Игры === | ||
{{#var:sDayMonthName}} {{plural:{{#var:iGames}}|вышла {{#var:iGames}} игра|вышло {{#var:iGames}} игры|вышло {{#var:iGames}} игр}}: | {{#var:sDayMonthName}} {{plural:{{#var:iGames}}|вышла {{#var:iGames}} игра|вышло {{#var:iGames}} игры|вышло {{#var:iGames}} игр}}: | ||
+ | <!-- Определяем количество игр, после которого (плюс 2 игры) список игр показывается частично с сокрытием остального под спойлером. --> | ||
+ | {{#vardefine:iLimitGames|10}} | ||
+ | <!-- По-разному обрабатываем список игр, вписывающийся в лимит полного отображения, и не вписывающийся. --> | ||
+ | {{#ifexpr: {{#var:iGames}} <= {{#var:iLimitGames}} + 2 | | ||
+ | <ul> | ||
+ | {{#arrayprint:aGames| |@@@@| | ||
+ | <!-- Разбиваем строку даты релиза игры по запятой, чтобы по-разному обработать игры с несколькими и одной датами релизов. --> | ||
+ | {{#arraydefine:aTemp|{{#show: @@@@ | ?Дата }}|,}} | ||
+ | {{#ifexpr: {{#arraysize:aTemp}} > 1 | ||
+ | |<li>1 из {{#arraysize:aTemp}} {{plural:{{#arraysize:aTemp}}|релиза|релизов|релизов}} [[@@@@|{{#show: @@@@ | ?Название }}]] ({{#show: @@@@ | ?Автор | link=none }} — {{#show: @@@@ | ?Платформа | link=none }})</li> | ||
+ | |<!-- Разбиваем строку даты по названию месяца в родительном падеже, получая во второй подстроке число с номером года. --> | ||
+ | {{#arraydefine:aDate|{{#show: @@@@ | ?Дата }}| {{#var:sCurrentMonthNameGen}} }} | ||
+ | <!-- Определяем количество лет, прошедшее от текущего года до обрабатываемой даты. --> | ||
+ | {{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | ||
+ | <li>'''{{#arrayindex:aDate|1}}''' ({{#var:iAge}} {{plural:{{#var:iAge}}|год назад|года назад|лет назад}}) [[@@@@|{{#show: @@@@ | ?Название }}]] ({{#show: @@@@ | ?Автор | link=none }} — {{#show: @@@@ | ?Платформа | link=none }})</li> | ||
+ | }} | ||
+ | }} | ||
+ | </ul> | ||
+ | |<!-- Определяем переменную-счётчик для контроля числа выводимых игр, после которого нужно вставлять спойлер. --> | ||
+ | {{#vardefine:iCounterGames|0}} | ||
+ | <!-- Определяем количество прочих игр, убираемых под спойлер. --> | ||
+ | {{#vardefine:iOtherGames| {{#expr: {{#var:iGames}} - {{#var:iLimitGames}} }} }} | ||
<ul> | <ul> | ||
{{#arrayprint:aGames| |@@@@| | {{#arrayprint:aGames| |@@@@| | ||
+ | <!-- Инкрементируем счётчик. --> | ||
+ | {{#vardefine:iCounterGames| {{#expr: {{#var:iCounterGames}} + 1}} }} | ||
+ | <!-- Как только достигли лимита, прячем прочие игры под спойлер. --> | ||
+ | {{#ifexpr: {{#var:iCounterGames}} = {{#var:iLimitGames}} + 1 | | ||
+ | </ul> | ||
+ | <div data-expandtext="Показать {{plural:{{#var:iOtherGames}}|остальную {{#var:iOtherGames}} игру|остальные {{#var:iOtherGames}} игры|остальные {{#var:iOtherGames}} игр}}" data-collapsetext="Спрятать {{plural:{{#var:iOtherGames}}|остальную {{#var:iOtherGames}} игру|остальные {{#var:iOtherGames}} игры|остальные {{#var:iOtherGames}} игр}}" class="toccolours mw-collapsible mw-collapsed" style="margin: auto 1em; overflow:auto;"> | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <ul> | ||
+ | | }} | ||
+ | <!-- Разбиваем строку даты релиза игры по запятой, чтобы по-разному обработать игры с несколькими и одной датами релизов. --> | ||
{{#arraydefine:aTemp|{{#show: @@@@ | ?Дата }}|,}} | {{#arraydefine:aTemp|{{#show: @@@@ | ?Дата }}|,}} | ||
− | {{# | + | {{#ifexpr: {{#arraysize:aTemp}} > 1 |
|<li>1 из {{#arraysize:aTemp}} {{plural:{{#arraysize:aTemp}}|релиза|релизов|релизов}} [[@@@@|{{#show: @@@@ | ?Название }}]] ({{#show: @@@@ | ?Автор | link=none }} — {{#show: @@@@ | ?Платформа | link=none }})</li> | |<li>1 из {{#arraysize:aTemp}} {{plural:{{#arraysize:aTemp}}|релиза|релизов|релизов}} [[@@@@|{{#show: @@@@ | ?Название }}]] ({{#show: @@@@ | ?Автор | link=none }} — {{#show: @@@@ | ?Платформа | link=none }})</li> | ||
− | |{{#arraydefine:aDate|{{#show: @@@@ | ?Дата }}| {{#var:sCurrentMonthNameGen}} }} | + | |<!-- Разбиваем строку даты по названию месяца в родительном падеже, получая во второй подстроке число с номером года. --> |
+ | {{#arraydefine:aDate|{{#show: @@@@ | ?Дата }}| {{#var:sCurrentMonthNameGen}} }} | ||
+ | <!-- Определяем количество лет, прошедшее от текущего года до обрабатываемой даты. --> | ||
{{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | {{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | ||
<li>'''{{#arrayindex:aDate|1}}''' ({{#var:iAge}} {{plural:{{#var:iAge}}|год назад|года назад|лет назад}}) [[@@@@|{{#show: @@@@ | ?Название }}]] ({{#show: @@@@ | ?Автор | link=none }} — {{#show: @@@@ | ?Платформа | link=none }})</li> | <li>'''{{#arrayindex:aDate|1}}''' ({{#var:iAge}} {{plural:{{#var:iAge}}|год назад|года назад|лет назад}}) [[@@@@|{{#show: @@@@ | ?Название }}]] ({{#show: @@@@ | ?Автор | link=none }} — {{#show: @@@@ | ?Платформа | link=none }})</li> | ||
Строка 55: | Строка 167: | ||
}} | }} | ||
</ul> | </ul> | ||
+ | </div></div> | ||
+ | }} | ||
}} | }} | ||
{{#ifeq: {{#var:iBirthdays}} | 0 | | | {{#ifeq: {{#var:iBirthdays}} | 0 | | | ||
Строка 61: | Строка 175: | ||
<ul> | <ul> | ||
{{#arrayprint:aBirthdays| |@@@@| | {{#arrayprint:aBirthdays| |@@@@| | ||
+ | <!-- Разбиваем строку даты по названию месяца в родительном падеже, получая во второй подстроке число с номером года. --> | ||
{{#arraydefine:aDate|{{#show: @@@@ | ?День рождения }}| {{#var:sCurrentMonthNameGen}} }} | {{#arraydefine:aDate|{{#show: @@@@ | ?День рождения }}| {{#var:sCurrentMonthNameGen}} }} | ||
− | {{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | + | <!-- Если удалось получить из даты год, то определяем количество лет, прошедшее от текущего года до обрабатываемой даты. --> |
− | <li>'''{{# | + | {{#if: {{#arrayindex:aDate|0}} | {{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | }} |
+ | <li>'''{{#if: {{#arrayindex:aDate|0}} | {{#var:iAge}} {{plural:{{#var:iAge}}|год назад|года назад|лет назад}} | Сколько-то лет назад }}''' [[@@@@]]</li> | ||
}} | }} | ||
</ul> | </ul> | ||
}} | }} | ||
}} | }} | ||
− | <noinclude>[[Категория:Шаблоны]]</noinclude> | + | <noinclude>[[Категория:Шаблоны главной]]</noinclude> |
Текущая версия на 15:31, 1 марта 2020
Шаблон, отображающий информацию о различных исторических событиях на конкретную дату. Показывает первые релизы проектов (свойство "Дата первого релиза"), релизы игр (свойство "Дата") и дни рождения (свойство "День рождения"), приходящиеся на заданный день года. В качестве необязательного аргумента может принимать дату в формате ДД.ММ, например, {{День в истории|13.09}}, информацию по которой надо показать. Без указания даты отображает информацию для текущего дня согласно настройкам сервера.
Этот день в истории
Игры
21 ноября вышло 16 игр:
- 2000 (24 года назад) Приключения в мире Подземного Огня (Грудницкая, Алёна — Книга-игра)
- 2006 (18 лет назад) Q-Quest (Туголуков, Евгений — URQ DOS)
- 2009 (15 лет назад) Speleologist II (Боричевский, Александр, NooS, Qwerty — ТОМ 0.9 бета)
- 2010 (14 лет назад) Паломничество к храму Санктус (Бильченко, Александр — QSP)
- 2010 (14 лет назад) Честные выборы (Bangosh — Квестер)
- 2013 (11 лет назад) Каникулы Максвелла (Дударь, Дмитрий — INSTEAD)
- 2019 (5 лет назад) Администратор (Роман Мейер — Атрил)
- 2023 (1 год назад) Алхимик (Magneto Team — Самодельные платформы)
- 2023 (1 год назад) Багомаг: первый экзамен (Гаджимурадов, Алик — Самодельные платформы)
- 2023 (1 год назад) Испытание смелости (Blue koi — Ren'Py)
- 2023 (1 год назад) Космокрот 2 (Liontka4 — Самодельные платформы)
- 2023 (1 год назад) Омонимия (Лука — INSTEAD)
- 2023 (1 год назад) Песнь Луны и Солнца (Lualay — Twine)
- 2023 (1 год назад) Приход ночи: Книга откровений (Рулин, Андрей, Айзек Азимов — StoryReader)
- 2023 (1 год назад) Хорошка и летающая тарелка (BakoomWak — Самодельные платформы)
- 2023 (1 год назад) Цветы предательства (Артём Стрельников — Текстовые Квесты)