Магия списка страниц и вы!

Данная статья является переводом и нуждается в вычитке.


рейтинг: +6+x

Вы часто слышите фразу "Итерации страниц"

Иногда от кого-то из вопросника, кто увидел SCP с использованием итераций страниц и хотел бы сделать нечто подобное. Иногда от кого-то, кто хочет сделать что-то конкретное, а ответом служит итерации страниц. А иногда от кого-то, кто сообщает Вам на странице Вашего объекта о том, что Вам лучше переделать объект с использованием итераций.

Я месяцами медитировал в тропическом лесу над словосочетанием "итерации страниц", и мой ум вознесся к местам за пределами самых глубоких снов спящего. Вы можете знать, что это такое, вы можете даже знать, что это значит… но я ощутил саму суть Итераций, проходящую через мое тело. Я почувствовал, как их эфирная форма прогнулась под моей волей.

Я согнул 5-й элемент — итерации, и в этом руководстве (которое следует рассматривать как расширение для работы пользователя DrMagnusDrMagnus Продвинутое форматирование и вы) Я попытаюсь передать вам это знание.



Обратите внимание, что в этом руководстве я дал каждому модулю примеров итераций серый фон, просто чтобы отличить его от остальной части страницы. Ваши модули страниц будут иметь прозрачный фон.

Притормози, Croquembouche1!

"Мне не нужно знать, как сделать модуль итерации с нуля!" - говоришь ты мне. "Я просто хочу знать, как сделать итерации страниц, как в SCP-2998, SCP-2111 и SCP-3002, и других."

И на это я отвечаю: Нет, это действительно важно, узнать основы. Это все хорошо, можно просто копировать-вставить код, но когда что-то идет не так и вы не понимаете почему, как вы можете это исправить?

Но если вы действительно уже знаете все это (или хотите притвориться, что знаете), хорошо, прокрутите вниз до раздела 5 ROUNDERHOUSE2 : Быстро и Сумбурно. Но не говорите, что я вас не предупреждал.


1: ЧТО ТАКОЕ СПИСОК СТРАНИЦ?


Список - модуль Викидота. Полную документацию по этому модулю можно найти тут.

Цитирую документацию:

Список — это универсальный и широко используемый инструмент для выбора и отображения страниц на сайте.

Это все, что он делает — он буквально перечисляет страницы.

Списки, как правило, используются в SCP Вики для:

  1. Чтобы отфильтровать Вики для определенной группы страниц и показать их в списке,
  2. Чтобы разрешить объекту SCP (или любой другой статье) иметь несколько страниц, через которые вы проходите один за другим, но все они имеют один и тот же модуль рейтинга.

Первое - "скучно, но полезно". Мы просто назовем это списками страниц, потому что это так и есть. вот пример страницы с 4 модулями списка, которые перечисляют страницы.

Второе уже представляет собой нечто, то самое большое нечто о котором все хотят знать. На самом деле, давайте назовем это итерациями страницы или LPT3 для краткости. Вот пример страницы, которая использует LPT.

Но первый вариант намного проще для объяснения, поэтому я буду использовать его, чтобы охватить многие вещи, которые вам нужно знать для второго, для итераций страницы (LPT).

Совет

Попробуйте ограничить себя только одним списка на странице.

Модули итераций действительно могут замедлить скорость загрузки страницы. Вот моя авторская страница, где, в какой-то момент, на нем было около тридцати списков одновременно и я клянусь, что иногда загрузка страницы занимала по крайней мере целую минуту. Это было ужасно. Не делайте этого.


2: СПИСОК СТРАНИЦ


Не будем церемониться и обсудим первую реализацию списка страниц: простой список страниц.

Вот список моих 5 самых плохих страниц в вики.

Если вы думаете, что я просто набрал URL каждой из статей и был таков, подумайте еще раз. Вы видите магию итераций страницы. Если вы хотите, вы можете проверить это, перейдя на одну из этих страниц, подняв ее рейтинг (please :'()), а затем обновив эту страницу. Вы увидите, что рейтинг, написанный здесь, также изменится.

Если вы проверите исходник этой страницы, вы увидите следующий код:

[[module ListPages created_by="Croquembouche" order="rating" limit="5" separate="no"]]
* %%title_linked%% (+%%rating%%)
[[/module]]

Понятия не имеете, что все это значит? Это нормально — вот для чего это руководство.

Если бы я захотел, я мог бы показать свои лучшие 5 страниц. Или я мог бы показать больше, чем 5. Или я мог бы показать только страницы, созданные после определенной даты. Существует целая куча параметров, которые модуль итераций использует для того, чтобы делать то, что вы хотите.

Я собираюсь провести вас через основные страницы списка использования в три этапа:

  1. Выбор нужных страниц;
  2. Изменение способа обработки этих страниц списком,
  3. Собственно, отображение списка.


2.1: ВЫБОР СТРАНИЦ ДЛЯ СПИСКА


Если вы не укажете какие-либо параметры, списки страниц будут пытаться перечислить каждую страницу вики. Вы же не хотите этого(верно?), поэтому мы указываем селекторы. Они указывают спискам страниц, какие страницы следует выбрать, а какие избегать.

Давайте работать через селекторы, чтобы узнать, что каждый из них делает.

Список страниц имеет целую кучу селекторов, которые вы можете выбрать, чтобы вы могли точно сказать, какие страницы выбрать. Вот те, которые вы найдете наиболее полезными:

  • created_by — Авторский фильтр. Если вы вставите в это значение "Croquembouche", списки страниц будут показывать только страницы, созданные мной и будут игнорировать все остальные. Обратите внимание, что это выбирает только пользователя, который опубликовал эту страницу в вики на правах автора! Страницы списка слепы к соавторству и сотрудничеству.
  • rating — Фильтр по рейтингу. Если вы выставите ">20", то вы увидите страницы с рейтингом больше (+20). Поставите "=0" и вы увидите только страницы с нулевым (0) рейтингом.
  • tags — Фильтр по тегам. Если тег начинается с "+", в списке страниц отображаются только страницы с этим тегом. Если он начинается с " -", список страниц показывает только страницы без этого тега. Например, "+scp -keter" — будут отображать все страницы с тегом "scp", но без тега "keter".
  • created_at — фильтр по дате создания каждой страницы. Этот селектор принимает справедливый диапазон значений. "2009" выберет все страницы, созданные в 2009 году, а "2009.02" - все страницы, созданные в феврале 2009 года. ">2009.02 " выделит все страницы, созданные после февраля 2009 года. "last 3 month" выделит все страницы, созданные за последние 3 месяца.
  • name — фильтр по названию страницы, или скорее по URL-адресу страницы. "SCP-3000" будет соответствовать странице для SCP-3000. Используйте символ процента для обозначения "страниц, начинающихся с этого" — например, " SCP - % "будет соответствовать всем страницам, начинающимся с "SCP-".
  • category — фильтр по категориям страниц. По умолчанию списки страниц будут отображаться только в той же категории, что и текущая страница. Для этой страницы категория - "_default". Для page-tags категория - "система", а для earthworm категория - "компонент". Проверьте URL-адрес — все, что перед двоеточием, является категорией и если нет двоеточия, то это "_default". Селектор категорий позволяет указать другую категорию. Установите его в "*" для всех категорий.

Таким образом: каждый селектор будет соответствовать определенным страницам и игнорировать другие. Чтобы страница появилась в списке, она должна соответствовать всем вашим селекторам.

Документация более подробно рассматривает каждый из этих селекторов — и несколько других! — в секции "Selecting Pages".


2.2: ИЗМЕНЕНИЕ СПИСКА


Просто выбрать различныT страницS — не все, что нам нужно сделать, нам также нужно указать, как эти страницы будут отображаться.

Есть еще несколько параметров, которые вам нужно знать. Это не селекторы, поэтому они не перечислены в разделе выше, но они используются точно так же.

  • limit — Определяет, сколько страниц нужно показать. Если вы установите значение "5", то будет показано не более 5 страниц.
  • perPage — Сколько страниц должно быть показано в списке? (Это не так запутанно, как кажется!) По-умолчанию это значение равно 20, поэтому, если в списке больше 20 страниц, будет создана новая страница. Вы можете увидеть этот эффект на Топ объектов по рейтингу за месяц — в нижней части списка объектов SCP (предполагая, что это больше, чем около недели в месяц). Максимальное значение — 250.
  • separate — Независимо от того, должна ли каждая запись в списке должна быть сама по себе в своем маленьком списке или все записи в одном списке. Допустимые значения - "yes" или "no" - если вы скажете "yes", вы получите большой разрыв между каждой записью в списке, что редко бывает тем, что вы хотите.
  • order — Как упорядочить список.

Существует множество различных опций, которые принимает параметр "order", они перечислены в документации под заголовком "Ordering Pages". Я перечислю несколько наиболее полезных из них здесь.

  • order="rating" — упорядочить по рейтингу.
  • order="name" — упорядочить в алфавитном порядке по названию страницы (по её URL).
  • order="title" — упорядочить в алфавитном порядке по названию страницы (действительное название страницы, её заголовок).
  • order="created_at" — упорядочить по дате создания каждой страницы.
  • order="comments" — упорядочить по количеству комментариев.
  • order="random" — все в случайном порядке! Повторное рандомизирование один раз в минуту.

По умолчанию все упорядочено в порядке возрастания (поэтому сначала показываются низкие числа). Чтобы показать их в порядке убывания, добавьте 'desc' в конец — например: order= "rating desc".

Обратите внимание, что нет специальной опции для конкретной сортировки в порядке возрастания. Правильный способ сделать это-добавить "desc desc". Есть ли в этом смысл? Нет. Можем ли мы действительно ожидать чего-то лучшего от Wikidot? Нет.


2.3: ОТОБРАЖЕНИЕ СПИСКА


Хорошо, теперь, когда мы знаем всё о том, как выбрать конкретные страницы, которые нам нужны, и как изменить параметры этого списка. Мы получаем список страниц.

Когда дело доходит до отображения этого списка, у вас есть много вариантов. В теле модуля - то есть между [[модуль]] и [[/модуль]]@@ - есть несколько различных маркеров содержимого, которые вы можете поместить.

Каждый маркер контента похож на штамп. Возьмем, например, %%title%%, который представляет заголовок страницы. Представьте себе это так: модуль ListPages имеет список названий. Он штампует первый заголовок на странице, затем перемещается вниз, переходит к следующему заголовку и штампует его. И так далее, по списку. В итоге вы получаете список заголовков страниц.

Вот некоторые из наиболее полезных маркеров контента. Как обычно, документация содержит их полный список под заголовком "Sections head/body/foot". Там много чего есть, так что обязательно взгляните.

  • %%title%% — Отображает заголовок страницы.
  • %%title_linked%% — Отображает кликабельный заголовок страницы.
  • %%created_by%% — Отображает автора страницы.
  • %%created_at%% — Отображает дату создания страницы.
  • %%rating%% — Отображает рейтинг страницы.
  • %%index%% — Отображает позицию страницы в списке.
  • %%content%% — Отображает все содержимое страницы. Мы вернемся к этому позже.

Серьезно, здесь я перечислил только 7, а всего их 56, но некоторые из них настолько непонятные, что вы никогда не будете их использовать.

Пожалуйста, обратите внимание

Список страниц не отображает название вашего объекта SCP. Например, если вы хотите добавить в список SCP-173, вы не сможете добавить в список "скульптура" и т.п, только "SCP-173".

Это связано с тем, что заголовки объектов SCP хранятся только на страницах списка объектов SCP, а не на самих страницах объектов SCP. Поэтому эта информация недоступна для страниц списка, которые перечисляют только основную информацию о выбранных страницах и не ищут информацию о них на других страницах.


Итак, теперь, когда мы знаем так много параметров, давайте проведем демонстрацию.

Я собираюсь перечислить…

  • Все страницы, созданные за последние 3 месяца…
    • created_at="last 3 month"
  • …название начинается с буквы "S"…
    • name="S%"
  • …рейтинг которых ниже 100…
    • rating="<100"
  • …и без тега"scp".
    • tags="-scp"
  • я хочу показать не больше 40 результатов…
    • limit="40"
  • …так же я хочу, чтобы на одной странице списка было только 10 страниц…
    • perPage="10"
  • …и я хочу, чтобы все они появлялись в одном списке, а не по отдельности…
    • separate="no"
  • …и я хочу, чтобы они были упорядочены по рейтингу, в порядке убывания.
    • order="rating desc"
  • Я хочу, чтобы эти страницы были в нумерованном списке…
  • …далее следует дата создания страницы…
    • %%created_at%%
  • …далее следует кликабельный заголовок страницы со ссылкой на страницу…
    • %%title_linked%%
  • …далее следует имя автора…
    • by %%created_by%%
  • …далее следует рейтинг страницы, в скобках.
    • (%%rating%%)

Поэтому я пишу следующий модуль ListPages:

[[module ListPages created_at="last 3 month" name="S%" rating="<100" tags="-scp"
limit="40" perPage="10" separate="no" order="rating desc"]]
# %%created_at%% %%title_linked%% by %%created_by%% (%%rating%%)
[[/module]]

…который выводит следующий список:

  1. 20 Jun 2020 11:34 SCP-1380-RU - Vergessenheit, или Город забывших by Arbelict (44)
  2. 09 Jun 2020 12:07 SCP-5999 - Здесь настал мой черёд by HolyCat (35)
  3. 15 May 2020 19:13 SCP-5987 - Сиреноголовый by HolyCat (20)
  4. 22 Jun 2020 13:11 SCP-1369-RU - Глаза Морфея by underbylka (13)
  5. 20 Jun 2020 14:22 SCP-3120-RU-J - У каждого кота должен быть свой человек by Razaldo (13)
  6. 20 Jun 2020 11:19 SCP-1404-RU - В миражах и снах мы видим море by Arbelict (13)
  7. 05 Jun 2020 14:52 SCP-1335-RU - Радуга by AlexZaretsky (12)
  8. 18 May 2020 19:58 SCP-4158 - Большая корова по имени Большой Чарли by Wing13 (12)
  9. 29 Jun 2020 17:29 SCP-1349-RU - Атипичный ураган by Blackbird5154 (11)
  10. 23 May 2020 14:44 SCP-2417 - Боги, Вселенные и Оригами by abbaquiche (11)
page 1 of 41234next »

Это полезный список? Нет, но это отличный пример.

Круто. Если вы повторяли за мной на полигоне, поздравляю, вы только что сделали модуль ListPages. Если нет, то все равно поздравляю, но не так сильно.

Примечание: Если вы решили сделать модуль ListPages на полигоне, имейте в виду, что вы будете видеть страницы с полигона, а не из основной Вики! Это застает меня врасплох каждый раз.

Домашнее задание: перейдите в последние публикации, нажмите Параметры, Затем источник страницы внизу, посмотрите, можете ли вы найти модуль ListPages, а затем посмотрите, знаете ли вы, что делает каждый бит. Если вы видите вещи, которые я не раскрывал, убедитесь, что у вас есть документация!


Обратите также внимание, что раздел содержимого вашего модуля ListPages не должен быть длиной в одну строку. Это может быть столько строк, сколько вам нужно.

Если вы используете более одной строки, я рекомендую выбрать separate="yes", или это может выглядеть немного запутанным.


Теперь, когда я посвятил вас в основы списка страниц, пришло время перейти к его самому известному приложению.


3: РАЗБИРАЕМ ИТЕРАЦИИ СТРАНИЦЫ


Здесь все становится сложнее.

SCP-2998 за которым следует SCP-1893 и SCP-1173 — это страницы, которые наиболее известны использованием итераций, и, безусловно, отвечают за их популярность в наши дни. Все три были написаны EskobarEskobar, который сам учился у AelannaAelanna, так что вы должны поблагодарить их за это.

С тех пор многие страницы используют итерации. SCP-2111, SCP-3002, SCP-3939, SCP-3449, моя авторская страница, SCP-3020, предложение Джима Норта и многие другие также делают это.

Если ваша страница также использует итерации, оставьте комментарий, чтобы все знали!

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

С этого момента я буду сокращать итерации страницы до LPT.


БУДЬТЕ ОСТОРОЖНЫ! Использование LPT обходится дорого: ваш читатель будет ожидать, что вы действительно оправдаете их использование. LPT должны быть зарезервированы для более тяжелых статей, которые действительно нуждаются в них, чтобы их концепции и/или форматные винты работали. LPT не подходит для SCP-AVGJOE4.


3.1: ЧТО ТАКОЕ LPT?


LPT — это когда SCP (или любая страница) имеет несколько страниц, но сохраняет один и тот же модуль рейтинга. LPT можно легко определить, проверив URL-адрес после нажатия ссылки на странице — если он заканчивается на "/ offset/X", где X-это число, это LPT. Большинство (но не все!) приложения LPT могут быть идентифицированы таким образом.

В более широком смысле, это когда любая страница в вики изменяется в содержании в результате обновления или нажатия на ссылку внутри нее.

Есть некоторые исключения из этого правила - SCP-2786 и SCP-3211 не являются LPT, потому что они используют [[html]] вместо [[модуль ListPages]]. [[html]] можно определить по части страницы, занимающей на несколько секунд больше времени, чем остальная страница во время загрузки, а также по тому факту, что изменения происходят мгновенно.

Изменения LPT, в отличие от [[html]], могут произойти только при обновлении страницы или при переходе пользователя к /offset/ URL.

SCP-3340 делает это все еще более запутанным, потому что он работает на [[html]] (не ListPages), и все же его изменения происходят только при обновлении страницы.

Итак, вкратце:

Как LPT, так и [[html]] - Это методы для изменения содержимого страницы.

LPT работает на ListPages. [[html]] работает на HTML, CSS и часто JavaScript.

Изменения в результате [[html]] могут произойти мгновенно и могут быть практически любыми, но они могут влиять только на вещи в блоке [[html]], который уже находится на странице.

Изменения в результате LPT влияют на всю страницу, но они могут произойти только тогда, когда пользователь нажимает на ссылку сменной страницы или обновляет страницу.

LPT - легко в освоении. @@[[html]]@ @ — намного сложнее в освоении.

Предупреждение

Согласно документации, модуль ListPages и [[html]] не ладят друг с другом! Вы не можете использовать [[html]] в любых дочерних страницах LPT - это просто не сработает. Виноват Wikidot.

Вы можете использовать один или другой, но не оба (хотя статья может содержать как LPT, так и [[html]], если они независимы друг от друга). Выберите, что лучше для вашей статьи и/или что вам по зубам.


3.2: КАК РАБОТАЕТ LPT?


LPT-это просто очень специфическое применение стандартной техники смены страниц.

Вот обычный модуль ListPages. Обратите внимание на конкретные параметры, которые мы здесь используем.

[[module ListPages category="fragment" parent="." order="created_at" limit="1" offset="@URL|0"]]
%%content%%
[[/module]]

Здесь есть пара новых терминов, так что я их сейчас рассмотрю.

  • category="fragment" — Выбирает страницы из категории "фрагмент". Страницы в категории "фрагмент" не отображаются на страницах с самым высоким рейтингом в этом месяце или на недавно созданных страницах. Это делает их полезными для создания дочерних страниц, которые мы рассмотрим немного позже. Хотя они не совсем незаметны.
  • parent="." — Селектор родителя соответствует страницам, родительский элемент которых совпадает со значением этого параметра. родитель."=" соответствует страницам, родителем которых является текущая страница. Чтобы задать родителя страницы, нажмите кнопку Параметры внизу, затем родитель, а затем введите имя страницы, дочерним элементом которой должна быть эта страница.
  • order="created_at" — Вы должны знать, что это делает — оно показывает страницы по дате их создания. SCP-1893 фактически упорядочивает свои страницы случайным образом.
  • limit="1" — Это ограничивает число страниц, которые могут быть выбраны списком до 1. Всего одна страница.
  • %%content%% — Этот заполнитель означает, что вместо того, чтобы просто получить небольшой бит информации, такой как заголовок страницы или ее рейтинг, ListPages просто сбросит все содержимое выбранной страницы на текущую страницу. В том числе модули CSS.
  • offset="@URL|0" — Это немного сложнее объяснить, поэтому я собираюсь сделать это в картинках.


3.3: ПАРАМЕТР СМЕЩЕНИЯ


Итак, скажем, у нас есть объект SCP, который мы только что написали. Зеленое поле ниже представляет эту совершенно новую страницу нашего объекта.

lp1.png

Теперь давайте поместим в неё модуль ListPages. Это представлено большим отверстием (которое позже будет заполнено % % content%%).

lp2.png

Теперь давайте создадим две дочерние страницы. Эти страницы — то, что заполнит дыру в странице-родителе.

Я буду подробно описывать, что такое дочерние страницы и как их сделать, но пока я буду представлять их с этими уродливыми коробками с лососем:

lp3.png

Таким образом, эти две дочерние страницы (красный лосось) являются дочерними страницами страницы-родителя (зеленый SCP).

На странице-родителе мы напишем следующий модуль ListPages, чтобы выбрать и отобразить содержимое этих двух дочерних страниц:

[[module ListPages parent="."]]
%%content%%
[[/module]]

Что дает нам следующую страницу-родителя:

lp5.png

У нас появилась проблема: страница-родитель отображает содержимое обеих дочерних страниц. Потому что по умолчанию ListPages содержит столько страниц, сколько возможно.

Итак, мы устанавливаем limit на 1, чтобы заставить ListPages показывать только одну страницу:

[[module ListPages parent="." limit="1"]]
%%content%%
[[/module]]

Что дает нам следующее:

lp4.png

Отлично! Теперь у нас есть модуль ListPages, который показывает только содержимое одной дочерней страницы, и есть еще одна дочерняя страница, готовая и ожидающая, чтобы показать свое содержимое, когда читатель закончит чтение.

Итак, как нам показать вторую дочернюю страницу?

Мы уже установили, что сделать страницу-родителя "шире", то есть показать обе дочерние страницы, не получится, потому что тогда читатель все равно сможет увидеть только первую дочернюю страницу.

Поэтому мы просто перемещаем страницу-родителя вправо.

lp6.png
[[module ListPages parent="." limit="1" offset="1"]]
%%content%%
[[/module]]

Мы делаем это с помощью параметра offset. offset легче всего представить как расстояние от начала списка до дочерней страницы, которую вы хотите отобразить.

lp7.pnglp8.pnglp9.pnglp10.png

По-умолчанию значение offset равно "0", что означает, что он покажет первую дочернюю страницу в списке. Вы можете изменить это вручную, если хотите, но зачем вам это делать?

offset= "@URL " означает, что вместо того, чтобы значение смещения было предопределенным числом, оно задается URL. Если вы находитесь на странице, которая заканчивается на "/offset/X", это означает, что URL-адрес установил значение смещения модуля ListPages на этой странице. Например: "http://www.scp-wiki.net/scp-2998/offset/1"

Это позволяет изменить смещение, предоставив читателю URL-адрес для следующей страницы. SCP-2998 делает это, имея ссылку в нижней части каждой дочерней страницы. SCP-3939 делает это, предоставляя читателю несколько ссылок в нижней части каждой дочерней страницы.

**offset= "@URL|0 " ** устанавливает смещение в соответствии с URL-адресом, но если URL-адрес не указывает смещение — например, когда читатель загружает страницу в первый раз — это устанавливает его в 0. Он может быть установлен любым, каким вы захотите - "@URL|21 " является допустимым значением - но с 0, как правило, проще всего работать. Это просто зависит от того, в каком порядке находятся ваши дочерние страницы, и какой из них вы хотите увидеть в первую очередь.

SCP-1893 не дает читателю никаких ссылок. Вместо этого страницы упорядочиваются случайным образом с помощью order= "random". Значение смещения остается на своих значениях по умолчанию — 0 — поэтому всякий раз, когда порядок изменяется, отображается первая страница в списке (т. е. случайная страница).

  • Примечание о order= "random": порядок страниц при использовании "order="random"" обновляется раз в минуту. Хорошие новости: он повторно рандомизируется сам по себе, и вам не нужно ничего делать. Плохие новости: он не будет повторно рандомизирован раньше положенного срока. Обновление страницы снова и снова не приведет вас ни к чему — вам все равно придется ждать целую минуту.


3.4: СОЗДАНИЕ ДОЧЕРНИХ СТРАНИЦ


Как было установлено выше, LPT требует наличия страницы-родителя и нескольких дочерних страниц.

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

Дочерние страницы — это то, где расположено содержимое вашего LPT.

Я буду использовать SCP-3939 в качестве примера.

Модуль ListPages имеет offset="@URL|0", поэтому главная страница такая же, как SCP-39 / offset / 0.

Дочерняя страница, на которую это указывает, является fragment:scp-3939-0(фрагментом). Взгляните на источники дочерней и родительской страниц и поиграйте в игру "найди разницу" между ними..

Вы должны заметить три вещи:

  1. Дочерняя страница содержит все содержимое, которое еще не находится на странице-родителе.
  2. Дочерняя страница содержит ссылки, которые должны смещать читателя между дочерними страницами.
  3. Страница-родитель имеет модуль рейтинга и всё форматирование CSS - т.е. всё то, что должно быть на всех страницах.

Что касается третьего пункта, у вас могут быть вещи, которые должны быть на всех дочерних страницах, но вам же легче, если это на родителе. Если вам нужно что-то изменить, вам нужно только изменить его один раз на родителе, а не много раз для каждой дочерней страницы отдельно.

Обратите внимание, что в случае SCP-3939 изображение находится на каждом дочернем элементе, а не на родительском, потому что есть одна страница, на которой изображение не должно отображаться. Если бы это было на родительской, то это изображение было бы вынуждено появиться на всех страницах.
Если вы собираетесь сделать это, Пожалуйста, загрузите изображение только на одну страницу!

Обычно вы размещаете почти весь свой контент на дочерних страницах, но вам это не нужно! Проверьте SCP-3306 для примера LPT, где модуль ListPages находится только в нижней части страницы и только изменяет окончание.


Чтобы создать дочернюю страницу, создайте новую страницу в вики под названием "фрагмент:что-то", где "что-то" — это все, что вам нравится.

Очень важно, чтобы URL начинался с " fragment:". Страницы фрагментов не отображаются на страницах с самым высоким рейтингом в этом месяце, недавно созданных страницах или недавно отредактированных страницах (хотя они появляются при последних изменениях). Кроме того, ни jarvis, ни scpper не подсчитывают голоса со страниц фрагментов в сторону вашего общего/среднего количества голосов, поэтому они ни на что не повлияют.

"Что-то" может быть чем угодно, что вам нравится, хотя я лично рекомендую называть их так же, как ваш SCP, а также нумеровать их вместе со смещением. Так что для SCP-XXXX это будет фрагмент: SCP-XXXX-0, фрагмент: SCP-XXXX-1, фрагмент: SCP-XXXX-2 и так далее.

Повторите это для каждой дочерней страницы.

Убедитесь, что вы создаете дочерние страницы в правильном порядке! В этом руководстве я буду рекомендовать упорядочивать страницы к моменту их создания с помощью order= "created_at". Вы можете разместить их в любом порядке, но если вы распределяете по дате/времени, убедитесь, что вы создаете их в правильном порядке.

Убедитесь, что ваши дочерние страницы содержат ссылки смещения, чтобы читатель мог легко перейти к следующей странице!


Следующий шаг — установить страницу-родителя в качестве родителя для дочерних страниц. Нажмите "Параметры" в нижней части каждой дочерней страницы, затем "родитель", затем введите имя своей страницы-родителя (URL, а не название страницы!). После того, как вы набрали несколько букв, ваша родительская страница должна появиться автоматически.

Если вы еще не создали страницу-родителя, она не появится в списке. Не волнуйтесь — просто сделайте это после того, как вы создали страницу-родителя.


3.5: СОЗДАНИЕ СТРАНИЦЫ-РОДИТЕЛЯ


Теперь, когда у нас есть дочерние страницы, нам нужна страница-родитель. Она — это зеленая линза, через которую читатель будет видеть дочерние страницы цвета красного лосося, одну за другой.

Все, что вам нужно сделать, это создать новую страницу — на этот раз обычную, а не в категории "фрагмент:" — и шлепнуть на нее модуль ListPages.

Модуль ListPages который я рекомендую:

[[module ListPages category="fragment" parent="." order="created_at" limit="1" offset="@URL|0"]]
%%content%%
[[/module]]

Это уже знакомый модуль из раздела 3.2: "Как работает LPT?" и каждый термин объясняется там.

Единственный термин, который вы возможно захотите изменить, — это order. Я всегда рекомендую создавать ваши дочерние страницы в том порядке, в котором вы хотите, чтобы они появлялись, а затем упорядочить по "created_at". Однако, если вы последовали моему совету о том, как назвать ваши дочерние страницы, то вы также должны иметь возможность задать по "name" или "title". Вы даже можете повторить SCP-1893 и показывать дочерние страницы "случайным образом", если хотите.

На полигоне рстраница-родитель должна быть в категории "collab: category. Убедитесь, что URL-адрес начинается с "collab:".
ListPages по-умолчанию ищет страницы в той же категории, что и родительская страница, поэтому, если вы решите опустить селектор "категория "в песочнице, все ваши дочерние страницы также должны быть в категории" collab:".


Если вы еще не сделали этого, установите эту страницу в качестве родительской для дочерних страниц.

На полигоне вы не сможете сделать это, если URL-адрес страницы-родителя не начинается с "collab:". Если вы пропустили этот шаг, не беспокойтесь - нажмите Параметры в нижней части страницы-родителя, затем переименуйте, а затем вставьте "collab:" в начале имени страницы. Этот шаг не нужен для основной Вики.

Притормози, Croquembouche!

"Почему вы используете именно эти селекторы? — спросишь ты меня. parent="." и order= "created_at" хороши и все тут, но что мешает мне использовать любые селекторы, которые я хочу?"

И мой ответ на это: ничего. Вы можете использовать любые селекторы, которые вам нравятся, чтобы выбрать свои дочерние страницы.

Но вот что: предположим, вы создаете загрузку страниц с именем fragment:SCP-XXXX-0 в fragment:SCP-XXXX-10. Упорядочите их через order="name" и выберите их с помощью category="fragment" и name="SCP-XXXX-%". И это работает! Идеально.

Но тогда нет ничего, что помешало бы кому-то впрыснуть страницы в середину списка смешений, если бы они очень хотели так поступить. Если кто-то возьмет и создаст fragment:SCP-XXXX-0 a без вашего ведома, созданная страница появится в списке между 0 и 1, и вся ваша цепочка смещений будет разрушена.

Люди не могут вводить страницы в середину списка смещений order= "created_at" без буквального путешествия назад во времени. На самом деле, это еще более безопасно, если вы также включаете created_by="ваш никнейм". Если вы не пишете что-то совместное, нет причин не делать этого.

И parent="." просто приятно, потому что он автоматически оставляет ссылку в верхней части ваших дочерних страниц, которая указывает на родительскую страницу. Очень полезно для потерянных людей, которые не знают, как они туда попали.

Кроме того, если вы хотите быть действительно хорошим, убедитесь, что вы оставили список дочерних страниц где-то. Очень удобно для будущих переводчиков, и очень удобно для любопытных людей вроде меня, которые хотят посмотреть, как вы это сделали.

И, конечно же, оставьте комментарий на этой странице, как только ваш LPT SCP будет опубликован!


4: ЗАКЛЮЧЕНИЕ


Хорошо. Это всё. Вы знаете все основы списка страниц и том, как делать итерации страниц.

Тем не менее, действуйте осторожно: теперь вы обладаете Великой, ужасной силой; силой списка страниц. Используйте её мудро, используйте её ответственно, и самое главное: используйте её экономно. Винты формата списка страниц удивительны только тогда, когда они сделаны хорошо. Когда они сделаны плохо, каждая страница, которая использует список страниц, также страдает.

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


И, конечно же, есть использование списка страниц за пределами 2 или 3 чрезвычайно конкретных случая использования, описанных здесь.

Используйте серию случайных страниц списка, чтобы сделать модульную статью, которая совершенно отличается каждый раз, когда вы ее читаете. Используйте список страниц вместе с [[tab view]], чтобы иметь отдельные сноски для каждой вкладки.

Сделайте то, что никто еще не сделал. Это лучший способ использовать эту силу.


Если у вас остались какие-то вопросы, пожалуйста, задавайте их в ходе обсуждения, и я прослежу, чтобы на них были даны ответы.

Спасибо, что настроились.

Croquembouche, удаляется.












5: БЫСТРО И СУМБУРНО.


Теперь, когда Croque дал необходимое техническое объяснение, я, ROUNDER HOUSE, обращаюсь к вам, дорогой читатель. Такому человеку, как я, который либо не желает читать все вышесказанное, либо лучше учится на примере. Это будет быстрое и сумбурное руководство о том, как настроить LPT для нужной вам статьи. Однако, если вы что-то испортите, вам понадобится мини-руководство, которое Croque объяснил выше, чтобы исправить это. Я настоятельно рекомендую вам, по крайней мере, попытаться прочитать все выше, прежде чем прибегать к этому. Я собираюсь использовать SCP-9000 как плашку временного названия. Если вы видите "scp-9000", смените его на номер вашей статьи.


5.1: ВРЕМЯ ФРАГМЕНТОВ


Во-первых, решите, сколько страниц вы хотите в своей статье с итерациями. Допустим, вы хотите три. Вы собираетесь сделать три страницы, используя общий создатель страниц, все в категории фрагментов. ВАЖНО: СОЗДАВАЙТЕ СТРАНИЦЫ В ТОМ ПОРЯДКЕ, В КОТОРОМ ВЫ ХОТИТЕ, ЧТОБЫ ОНИ ОТОБРАЖАЛИСЬ. Таким образом, ваши три страницы будут "fragment:scp-9000-1", "fragment:scp-9000-2" и "fragment:scp-9000-3". На первом поле есть надпись, что вы хотите быть первой итерацией, на втором-надпись для второго и так далее. Очевидно, вам не нужно называть их так, но это просто. ** ЕЩЕ ОДНО ЗАМЕЧАНИЕ: НЕ РАЗМЕЩАЙТЕ НА ЭТИХ СТРАНИЦАХ РЕЙТИНГОВЫЕ МОДУЛИ.** Это уничтожило бы смысл иметь их в качестве итераций.


5.2: РОДАКИ ДОМА


Далее, вы должны сделать страницу-родителя. Поскольку мы делаем SCP-9000, мы перейдем к соответствующему слоту в главном списке и создадим страницу. В него мы бы поместили это:

[[>]]
[[module Rate]]
[[/>]]

[[module ListPages  category="fragment" parent="." limit="1" order="created_at" offset="@URL|0"]]
%%content%%
[[/module]]

[!-- http://www.scp-wiki.net/fragment:scp-9000-1 --]
[!-- http://www.scp-wiki.net/fragment:scp-9000-2 --]
[!-- http://www.scp-wiki.net/fragment:scp-9000-3 --]

То, что находится между [!— ] — комментарии. Они не будут отображаться на странице или учитываться в любом коде. Они в основном существуют для удобства редактирования, а также для переводчиков.


5.3: ВОСПИТАНИЕ 101


Хорошо, теперь вернитесь к своим страницам фрагментам. Вам придется установить для родителя. Картинка объяснит лучше тысячи слов.

page-1.png

page-2.png

Сделайте это для всех ваших страниц фрагментов, очевидно, отключив "scp-9000" для вашей соответствующей статьи.

Примечание от Croque: на полигоне страница-родитель должна быть в категории collab, или вы получите ошибку при попытке установить ее в качестве родителя. Вы можете изменить её категорию, перейдя в нижнюю часть страницы, нажав + Опции, а затем переименовать и вставить "collab:" в передней части имени.


5.4: СМЕЩЕНИЕ


Хорошо. Очевидно, что вы захотите включить опцию на своих страницах для перехода на другие страницы. Для этого, вы не можете использовать нормально ссылку. Поскольку моя статья откроется на содержании "fragment: scp-9000-1", мне нужно будет добавить способ добраться до"фрагмента:scp-9000-2". Для этого я бы, вероятно, отредактировал "fragment:scp-9000-1", чтобы включить что-то вроде этого внизу:

[[>]]
[[[http://www.scp-wiki.net/scp-9000/offset/1|NEXT ITERATION]]]
[[/>]]

"offset/1" фактически приведет к странице с отображаемым на ней содержимым — "fragment: scp-9000-2". Вы также хотите сделать это на странице "фрагмент: scp-9000-2", с добавленной оговоренной ссылки, ведущей назад.

[[<]]
[[[http://www.scp-wiki.net/scp-9000|PREVIOUS ITERATION]]]
[[/<]]

[[>]]
[[[http://www.scp-wiki.net/scp-9000/offset/2|NEXT ITERATION]]]
[[/>]]

Сделайте тоже самое и для "fragment:scp-9000-3".


5.5: Я В ВАС ВЕРЮ!


Предполагаю, что вы правильно выполнили все инструкции и это должно сработать. Когда вы переходите на страницу scp-9000, это должно привести к тому, что вы увидите содержимое fragment:scp-9000-1, отображаемое на странице, со ссылкой, ведущей к offset/2, которая с гордостью отображает содержимое фрагмента:scp-9000-2 и так далее и так далее. Они должны иметь один и тот же рейтинговый модуль, что на самом деле является основным смыслом всего того, что мы сделали. Не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы или проблемы.

Ваш RounderhouseRounderhouse. 👋

Пока не указано иное, содержимое этой страницы распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 License