Шаблон:День в истории: различия между версиями
Перейти к навигации
Перейти к поиску
Содержимое удалено Содержимое добавлено
Nikita (обсуждение | вклад) Исключение игр с тематикой 18+ |
Oreolek (обсуждение | вклад) мНет описания правки |
||
| (не показано 5 промежуточных версий 2 участников) | |||
| Строка 1: | Строка 1: | ||
<noinclude> |
<noinclude> |
||
Шаблон, отображающий информацию о различных исторических событиях на конкретную дату. Показывает первые релизы проектов (свойство "Дата первого релиза"), релизы игр (свойство "Дата") и дни рождения (свойство "День рождения"), приходящиеся на заданный день года. В качестве необязательного аргумента может принимать дату в формате ДД.ММ, например, <nowiki>{{День в истории|13.09}}</nowiki>, информацию по которой надо показать. Без указания даты отображает информацию для текущего дня согласно настройкам сервера. |
Шаблон, отображающий информацию о различных исторических событиях на конкретную дату. Показывает первые релизы проектов (свойство "Дата первого релиза"), релизы игр (свойство "Дата") и дни рождения (свойство "День рождения"), приходящиеся на заданный день года. В качестве необязательного аргумента может принимать дату в формате ДД.ММ, например, <nowiki>{{День в истории|13.09}}</nowiki>, информацию по которой надо показать. Без указания даты отображает информацию для текущего дня согласно настройкам сервера. |
||
Примечание: Сейчас в [[IFВики]] {{#ask: [[Категория:Персоналии]] [[День рождения::+]] | format=count }} страниц со свойством "[[:Свойство:День рождения|День рождения]]" в категории "[[:Категория:Персоналии|Персоналии]]". Когда это число достигнет 500, реализованный в шаблоне алгоритм выявления дней рождения на конкретную дату перестанет работать корректным образом (будут теряться дни рождения за пределами первых 500) из-за лимита возвращаемого числа результатов функции встраиваемых запросов #ask. Потребуется изменение реализации. |
|||
</noinclude><div style="display: none;"> |
</noinclude><div style="display: none;"> |
||
<!-- Проверяем, передан ли шаблону аргумент. --> |
|||
{{#if: {{{1|}}} |{{#vardefine:sDayMonth| {{{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: |
{{#vardefine:sDayMonth| {{{1}}} }} |
||
<!-- Разбиваем строку аргумента по знаку точки на две подстроки. --> |
|||
|{{#vardefine:sDayMonth| {{CURRENTDAY2}}.{{CURRENTMONTH}} }} |
|||
{{#arraydefine:aDate|{{{1}}}|.}} |
|||
{{#vardefine:sCurrentMonthNameGen| {{CURRENTMONTHNAMEGEN}} }} |
|||
<!-- В зависимости от номера месяца определяем его словесное название в родительном падеже. --> |
|||
{{#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}} |
||
<!-- Нижеследующий запрос обрабатывает только 500 первых по алфавиту категорий, но числовые названия идут как раз впереди, так что этого неполного среза хватит на несколько ближайших веков. --> |
|||
{{#arraydefine:aCategories| {{#ask: [[Категория:+]] | limit=500 | link=none | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER }} |
|||
{{#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:sTemp| {{#arrayindex:aTemp|1}} }} {{#ifeq: {{#var:sTemp}} | {{CURRENTYEAR}} | | {{#arraydefine:aTemp| {{#var:sTemp}} }} {{#arraymerge:aYears|aYears|aTemp}} }} }} |
|||
{{#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| |@@@@| |
{{#arrayprint:aYears| |@@@@| |
||
<!-- Определяем массив всех игр с релизом в заданную дату для конкретного года. --> |
|||
{{#arraydefine:aAllGames| {{#ask: [[Категория:Игры]] [[Дата::{{#var:sDayMonth}}.@@@@]] [[Дата::!@@@@]] | limit=500 | link=none | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} |
|||
{{#arraydefine:aAllGames| {{#ask: [[Категория:Игры]] [[Дата::{{#var:sDayMonth}}.@@@@]] [[Дата::!@@@@]] | limit=500 | link=none | searchlabel= | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} |
|||
{{#arrayprint:aAllGames| |@| |
|||
<!-- Перебираем все игры из массива, чтобы отсеять игры с нежелательной тематикой. --> |
|||
{{#arraydefine:aTemp|{{#show: @ | ?Тема | link=none }}|18+}} |
|||
{{#arrayprint:aAllGames| |@| |
|||
{{#ifeq: {{#arraysize:aTemp}} | 2 | | {{#arraydefine:aTemp|@|SUPERMEGADELIMITER}} {{#arraymerge:aGames|aGames|aTemp}} }} |
|||
<!-- Добавляем в итоговый массив игр только игры без темы "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}} |
||
<!-- Перебираем все дни рождения из массива, проверяя для каждого соответствие заданной дате. --> |
|||
{{#arraydefine:aAllBirthdays| {{#ask: [[Категория:Персоналии]] [[День рождения::+]] | limit=500 | link=none | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} |
|||
{{#arrayprint:aAllBirthdays| |@@@@| |
|||
{{#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 | sep=SUPERMEGADELIMITER }} |SUPERMEGADELIMITER}} |
|||
{{#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}} |
{{#arraymerge:aBirthdays|aBirthdays|aAllBirthdays}} |
||
<!-- Определяем количество памятных дат отдельно по каждому типу, а также вместе. --> |
|||
{{#vardefine:iReleases| {{#arraysize:aReleases}} }} |
{{#vardefine:iReleases| {{#arraysize:aReleases}} }} |
||
{{#vardefine:iGames| {{#arraysize:aGames}} }} |
{{#vardefine:iGames| {{#arraysize:aGames}} }} |
||
| Строка 36: | Строка 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> |
||
| Строка 52: | Строка 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}} |
{{#vardefine:iLimitGames|10}} |
||
<!-- По-разному обрабатываем список игр, вписывающийся в лимит полного отображения, и не вписывающийся. --> |
|||
{{#ifeq: {{#expr: {{#var:iGames}} > {{#var:iLimitGames}} + 2}} | 0 | |
|||
{{#ifexpr: {{#var:iGames}} <= {{#var:iLimitGames}} + 2 | |
|||
<ul> |
<ul> |
||
{{#arrayprint:aGames| |@@@@| |
{{#arrayprint:aGames| |@@@@| |
||
<!-- Разбиваем строку даты релиза игры по запятой, чтобы по-разному обработать игры с несколькими и одной датами релизов. --> |
|||
{{#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> |
||
| Строка 65: | Строка 140: | ||
}} |
}} |
||
</ul> |
</ul> |
||
|<!-- Определяем переменную-счётчик для контроля числа выводимых игр, после которого нужно вставлять спойлер. --> |
|||
|{{#vardefine:iCounterGames|0}} {{#vardefine:iOtherGames| {{#expr: {{#var:iGames}} - {{#var:iLimitGames}} }} }} |
|||
{{#vardefine:iCounterGames|0}} |
|||
<!-- Определяем количество прочих игр, убираемых под спойлер. --> |
|||
{{#vardefine:iOtherGames| {{#expr: {{#var:iGames}} - {{#var:iLimitGames}} }} }} |
|||
<ul> |
<ul> |
||
{{#arrayprint:aGames| |@@@@| |
{{#arrayprint:aGames| |@@@@| |
||
<!-- Инкрементируем счётчик. --> |
|||
{{#ifeq: {{#expr: {{#var:iCounterGames}} <= {{#var:iLimitGames}} }} | 1 | |
|||
{{#vardefine:iCounterGames| {{#expr: {{#var:iCounterGames}} + 1}} }} |
|||
{{#arraydefine:aTemp|{{#show: @@@@ | ?Дата }}|,}} |
|||
<!-- Как только достигли лимита, прячем прочие игры под спойлер. --> |
|||
{{#ifeq: {{#expr: {{#arraysize:aTemp}} > 1}} | 1 |
|||
{{#ifexpr: {{#var:iCounterGames}} = {{#var:iLimitGames}} + 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> |
</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 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"> |
<div class="mw-collapsible-content"> |
||
{{#vardefine:iCounterGames|0}} |
|||
<ul> |
<ul> |
||
| }} |
|||
{{#arrayprint:aGames| |@@@@|{{#vardefine:iCounterGames| {{#expr: {{#var:iCounterGames}} + 1}} }} |
|||
<!-- Разбиваем строку даты релиза игры по запятой, чтобы по-разному обработать игры с несколькими и одной датами релизов. --> |
|||
{{#ifeq: {{#expr: {{#var:iCounterGames}} > {{#var:iLimitGames}} }} | 1 | |
|||
{{#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> |
||
}} |
}} |
||
| }} |
|||
}} |
}} |
||
</ul> |
</ul> |
||
| Строка 103: | Строка 175: | ||
<ul> |
<ul> |
||
{{#arrayprint:aBirthdays| |@@@@| |
{{#arrayprint:aBirthdays| |@@@@| |
||
<!-- Разбиваем строку даты по названию месяца в родительном падеже, получая во второй подстроке число с номером года. --> |
|||
{{#arraydefine:aDate|{{#show: @@@@ | ?День рождения }}| {{#var:sCurrentMonthNameGen}} }} |
{{#arraydefine:aDate|{{#show: @@@@ | ?День рождения }}| {{#var:sCurrentMonthNameGen}} }} |
||
<!-- Если удалось получить из даты год, то определяем количество лет, прошедшее от текущего года до обрабатываемой даты. --> |
|||
{{#if: {{#arrayindex:aDate|0}} | {{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | }} |
{{#if: {{#arrayindex:aDate|0}} | {{#vardefine:iAge| {{#expr: {{CURRENTYEAR}} - {{#arrayindex:aDate|1}} }} }} | }} |
||
<li>'''{{#if: {{#arrayindex:aDate|0}} | {{#var:iAge}} {{plural:{{#var:iAge}}|год назад|года назад|лет назад}} | Сколько-то лет назад }}''' [[@@@@]]</li> |
<li>'''{{#if: {{#arrayindex:aDate|0}} | {{#var:iAge}} {{plural:{{#var:iAge}}|год назад|года назад|лет назад}} | Сколько-то лет назад }}''' [[@@@@]]</li> |
||
| Строка 110: | Строка 184: | ||
}} |
}} |
||
}} |
}} |
||
<noinclude>[[Категория:Шаблоны]]</noinclude> |
<noinclude>[[Категория:Шаблоны главной]]</noinclude> |
||
Текущая версия от 13:31, 1 марта 2020
Шаблон, отображающий информацию о различных исторических событиях на конкретную дату. Показывает первые релизы проектов (свойство "Дата первого релиза"), релизы игр (свойство "Дата") и дни рождения (свойство "День рождения"), приходящиеся на заданный день года. В качестве необязательного аргумента может принимать дату в формате ДД.ММ, например, {{День в истории|13.09}}, информацию по которой надо показать. Без указания даты отображает информацию для текущего дня согласно настройкам сервера.
Этот день в истории
Игры
4 мая вышло 2 игры:
- 2011 (15 лет назад) Приключения бумажки. часть 2 (Wall·e — Квестер)
- 2021 (5 лет назад) 17 комнат (Павленко, Юрий, Зубарев, Всеволод, Косых, Пётр, Ajenta Arrow, Яковлев, Александр, Добранов, Вячеслав, Qwerty, Блинов, Виталий, Ласточкин, Антон, Лобанов, Андрей, Enola, Irremann, Щёголев, Роман, Артамонов, Антон, Можайский, Сергей, Айвазян, Артур, Khaelenmore Thaal, Zlobot — Метапарсер)
Дни рождения
4 мая родился 1 человек:
- 40 лет назад Лобанов, Андрей