Магия ListPages и вы!

Данная статья является переводом.


Данная статья является адаптацией данной инструкции.


рейтинг: 4.5
1/100%

Всё чаще Вам приходится слышать о таком явлении, как "оффсеты".

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

Весь смысл ListPages и оффсетов заключается в следующих возможностях:

  • объединить несколько страниц разного содержания под общим рейтингом;
  • обойти ограничение Викидота на максимум в 200.000 символов в одной статье;
  • использовать механику категорий страниц в рамках одной статьи (сложно, не особо полезно, и вообще умеют такое только АМС);
  • использовать несколько [[include]]-функций, вроде тех, которые применяются в нашей плашке аномальных объектов.

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

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



ОБРАТИТЕ ВНИМАНИЕ

"Я просто хочу узнать, как делать итерации страниц, как в SCP-332-RU-EX, SCP-1076-RU и даже в SCP-001 - Так оно заканчивается!".

Наибольшее внимание Вам стоит уделить разделу "Быстро и сумбурно". Это — ответ на главный вопрос, предоставленный выше. Кроме этого раздела Вам на самом деле ничего больше и не нужно.

Вам достаточно будет повторить последовательно инструкции, которые будут приведены далее. Нет никакой необходимости разбираться в том, как устроены order, limit, separate и прочие свойства модуля. Вы можете использовать ListPages и без оффсетов, например, как в Новых статьях Полигона, чтобы делать выборку по страницам с определёнными функциями.

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


1: ОСНОВНОЙ СИНТАКСИС


ПРЕДОСТЕРЕЖЕНИЕ
Заранее советуем Вам — попробуйте ограничиться лишь одним модулем ListPages на странице.

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

То есть, будут грузиться примерно также, как когда Вы используете [[HTML]] или [[iframe]] функции. Что совершенно не оптимально для каких-нибудь статей с этими модулями, но в черновиках или на системных страницах — почему бы нет. Там никто пользователя не торопит, из погружения не выбивает.

Вот простой, не автоматический список страниц, у которых рейтинг превышает +250:

Список выше приведён на момент создания этой статьи. Он никак сам по себе не поменяется, хотя уже в скором времени в него пришлось бы добавить "Пустотную сингулярность" с её текущим рейтингом 249.

Для автоматизации задачи с обновлением списка мы используем простейший код, который приведён далее:

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



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


Давайте разберёмся, что каждое из приведённых значений значит.

Вы начинаете с того, что помещаете [[module ListPages]] в любую часть статьи. Это — открывающий тег, который далее нужно будет закрыть с помощью [[/module]], когда в нём будут все надлежащие инструкции.

[[module ListPages функция="свойство"]]
> %%параметр%%
> [[/module]]

Практически всё, о чём пойдёт далее речь, перечислено в официальной документации Викидота. Большая часть функций, свойств и параметров говорят сами за себя, но мы приведём их в русскоязычном варианте.

Для начала, мы выбираем, откуда вообще будут перечисляться статьи. Это касается как списков, так и оффсетов.

На сайте есть категории страниц. Например, fragment:, где у нас принято размещать страницы для оффсетов. Или sandbox:, в которой публикуются страницы авторов Руфонда перед публикацией в основное пространство. Эти категории отражены в адресной строке страницы, что видно, например, здесь:

http://scpfoundation.net/sandbox:drafts2 — ссылка на страницу с черновиками участников.

Дефолтным селектором (изначальной выборкой) для списка будет являться категория, в которой расположена статья с модулем ListPages. Можно указывать как выборку по всему сайту, так и в отдельных категориях. В модуле это демонстрируется через функцию category="*", где "*" означает "выбрать из всех страниц на сайте". Для отдельной категории, например — category="component", без двоеточия.

Именно category является нашим основным выборщиком в модуле, так как только он работает с категориями fragment: и sandbox:, да и любыми другими.

ListPages ограничивается не только селектором category. Селекторами являются такие вещи, которые помогут Вам задать последовательность появления страниц в списке (или в оффсетах).

Вот те, которые вы найдете наиболее полезными:

  • created_by — фильтр по автору. Если вы вставите в эту функцию никнейм любого пользователя на сайте, ListPages будет показывать только страницы, созданные им на этой вики. Не забывайте, что "автором" статьи по этому списку будет признаваться тот, кто опубликовал статью, а не фактический автор. Также с этим параметром нельзя указать какое-либо соавторство.
  • rating — фильтр по рейтингу. Если вы поставите в этой функции значение ">=20", то вы увидите страницы с рейтингом больше или равном (+20). Поставите "=0" и вы увидите только страницы с нулевым (0) рейтингом.
  • tags — фильтр по тегам. Если в функции к тегу приписать "+", то в списке будут отображаться только страницы с этим тегом конкретным тегом. Если он указывается с " -", будут перечислены страницы без этого тега. Например, "+объект -кетер" — будут отображать все страницы с тегом "объект", но без тега "кетер".
  • created_at — фильтр по дате создания каждой страницы. Этот селектор принимает широкий диапазон значений. Например, "2009" выберет все страницы, созданные в 2009 году, а "2009.02" - все страницы, созданные в феврале 2009 года. ">2009.02 " выделит все страницы, созданные после февраля 2009 года. "last 3 month" выделит все страницы, созданные за последние 3 месяца.
  • name — фильтр по названию страницы, или, вернее, по URL-адресу страницы. "SCP-3000" будет соответствовать странице для SCP-3000. Используйте символ процента для обозначения "страниц, начинающихся с этого" — например, " SCP-% "будет соответствовать всем страницам, начинающимся с "SCP-".

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


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


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

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

  • limit — определяет, сколько страниц нужно показать. Если вы установите значение "5", то будет показано не более 5 страниц.
  • perPage — сколько страниц должно быть показано в списке. По-умолчанию это значение равно 20, поэтому, если в списке больше 20 страниц, будет создана новая страница. Вы можете увидеть этот эффект на Новых статьях Полигона — там это значение составляет perPage="30". Максимальное значение для одного модуля — 250 страниц.
  • separate — оформление для списка. Допустимые значения - "yes" или "no". Если вы укажете "yes", вы получите отступы между каждой записью в списке.
  • order — как упорядочить список.

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

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

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

Обратите внимание, что не существует опции для сортировки в порядке возрастания из-за её стандартного положения. Вы можете ставить для этого "desc desc", но вам оно не надо.


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


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

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

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

Давайте взглянем, на примере %%title%%, как это работает.

[[module ListPages order="created_at desc" category="sandbox" separate="yes" perPage="5" prependLine="||~ Страница ||" separate="false"]]
|| %%title%% ||
[[/module]]
Страница
SCP-1477-RU-Тотем бессмертия
SCP-1489-RU – Зимний Шар (в работе)
Досье отдела разведки: Регион-9440AF9 "Православия"
SCP-1919-RU - Наше поле боя вечность Waffenträger
SCP-1438-RU - Вьётся в воздухе листва
страница 6 из 29 « предыдущая 1 2 ... 4 5 6 7 8 ... 28 29 следующая »

Думаю, теперь это очевидно. Правда, можно сделать вещи несколько комплекснее с помощью следующих маркеров:

[[module ListPages order="created_at desc" category="sandbox" separate="yes" perPage="5" prependLine="||~ Страница ||~ Рейтинг ||" separate="false"]]
|| %%title%% || %%rating%% (##green|+[[#expr (%%rating%%+((%%rating_votes%%-%%rating%%)/2))]]##, ##red|-[[#expr ((%%rating_votes%%-%%rating%%)/2)]]##)||
[[/module]]
СтраницаРейтинг
SCP-1477-RU-Тотем бессмертия1.8 (+3.9000000000000004, -2.1)
SCP-1489-RU – Зимний Шар (в работе)4.5 (+4.75, -0.25)
Досье отдела разведки: Регион-9440AF9 "Православия"4.9 (+5.95, -1.0499999999999998)
SCP-1919-RU - Наше поле боя вечность Waffenträger4.0 (+3.5, --0.5)
SCP-1438-RU - Вьётся в воздухе листва3.0 (+18, -15)
страница 6 из 29 « предыдущая 1 2 ... 4 5 6 7 8 ... 28 29 следующая »

Как видите, это можно использовать, чтобы следить за количеством страниц, созданных Вами, и их оценками.

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


3: ОФФСЕТЫ СТРАНИЦ


SCP-2998, SCP-1893 и SCP-1173 — это страницы, известные использованием итераций страниц (оффсетов). Все три были написаны eskobar, который учился у aelanna, и которые, вероятно, консультировали автора оригинальной статьи о ListPages.

Автор статьи сокращает термин "итерации страниц" до LPT, что значит "чё-то ListPages". Оригинальное руководство писалось так, чтобы его могли понять даже дошкольники, но раз мы в Руфонде — здесь всё строже, здесь мы идём в первый класс и учимся складывать слова в предложения.

Собственно, этим мы и занимаемся, пока составляем модули ListPages.


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


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.png

lp8.png

lp9.png

lp10.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


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

parenting.png


parenting2.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 и так далее и так далее. Они должны иметь один и тот же рейтинговый модуль, что на самом деле является основным смыслом всего того, что мы сделали. Не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы или проблемы.

Ваш Rounderhouse. 👋

Филиал: en
Перевод: к_вычитке
версия страницы: 27, Последняя правка: 16 Май 2024, 09:38 (220 дней назад)
Пока не указано иное, содержимое этой страницы распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 License.