SubPageList (MediaWiki) — различия между версиями

Материал из YourcmcWiki
Перейти к: навигация, поиск
м
м (Перенаправление на Http://wiki.4intra.net/TemplatedPageList)
Строка 1: Строка 1:
Ссылка на SVN исходников: {{SVN|vitalif/trunk/mediawiki/SubPageList2/}}.
+
#REDIRECT [[http://wiki.4intra.net/TemplatedPageList]]
 
+
На основе расширения MediaWiki [[mediawikiwiki:Extension:SubPageList2|SubPageList2]] в [[{{SITENAME}}]] я породил собственную вариацию на тему SubPageList’а — его можно было бы назвать «TemplatedPageList». По сути расширение продолжает серию расширений, направленных в сторону вики-программирования, что идеологически ещё неизвестно, хорошо ли, нет ли.
+
 
+
{{note}} ''Мне очень стыдно: я взялся за доработку SubPageList’а, а не [[mediawikiwiki:Extension:DynamicPageList_(third-party)|DynamicPageList]]'а, который, кстати, вырос из [[mediawikiwiki:Extension:Intersection|Intersection]]'а, который сам вырос из SubPageList’а тем же путём, что и моя вариация на тему. Тем не менее, мой экстенжн умеет то, чего не умеет DynamicPageList: шаблонизированный вывод… Кроме того, DynamicPageList — это, конечно, кромешный ад навороченный. Тем не менее, его возможности выборки страниц гораздо мощнее, так что, возможно, он вас заинтересует.''
+
 
+
Так или иначе, код расширения переписан в хлам — предыдущий автор, видимо, был, во-первых, C’шник, а во-вторых, большой любитель избыточности в духе округления целых чисел (<tt>round(intval($options['count']))</tt>). ''(а ещё — пробелов после открывающихся и до закрывающихся скобочек… брррр).'' Всё это было выгашено из кода сраной метлой, показатель — количество строк кода, уменьшившееся почти в два раза — с примерно 680 до примерно 350 строк.
+
 
+
== Список изменений ==
+
 
+
Функционала при этом стало больше:
+
 
+
* Опция <tt>category=</tt> теперь ведёт себя более разумно — ограничивает выбираемый список категорией. Кроме того, выбирать теперь можно как по префиску, так и по категории БЕЗ указания префикса. Также теперь можно делать выборку из нескольких категорий: <tt><nowiki>category="Категория1|Категория2"</nowiki></tt>.
+
* Добавлена опция <tt>offset=</tt>, позволяющая указывать не только максимальное количество выбираемых страниц, а также и «смещение» от начала списка.
+
* Теперь разрешается выборка из всех пространств имён сразу: <tt>namespace=""</tt>.
+
* Теперь разрешается выборка не только ''подстраниц'', а вообще страниц по любому префиксу названия (опция <tt>parent=</tt>).
+
* Опция <tt>deepness=</tt> теперь, во-первых, работает корректно, а во-вторых, допускает значение-диапазон: <tt>deepness=1..2</tt> — то есть, можно накладывать ограничение уровня вложенности на выбираемые страницы. Если <tt>deepness=</tt> просто числу — оно воспринимается, как ''минимальная'' вложенность. Также теперь разрешается выборка страниц ''только'' по условию уровня вложенности без учёта других условий (<tt>parent=</tt> и <tt>category=</tt>).
+
* Добавлено препроцессирование кода включаемых страниц, то есть корректная обработка [[mediawikiwiki:Help:Magic Words/ru|магических слов]] (типа PAGENAME и REVISIONDAY) и тегов <tt><nowiki><noinclude></nowiki></tt> и <tt><nowiki><includeonly></nowiki></tt>.
+
* Добавлен метод сортировки списка страниц по количеству посещений — <tt>ordermethod=pagecounter</tt>.
+
* Добавлен метод сортировки списка страниц по дате '''создания''' — <tt>ordermethod=creation</tt>. Кстати, чтобы вставить дату создания в текст статьи, можно обратиться к расширению [[UserMagic (MediaWiki)|UserMagic]].
+
* Исправлена ошибка, возникавшая при просмотре различий по странице, использующей тег <tt><nowiki><subpages></nowiki></tt>.
+
* Вывод расширения больше не кэшируется и нет нужды нажимать «Обновить» или пересохранять статью, чтобы увидеть изменения. Нет ошибок с подстановкой UNIQ… в текст статьи.
+
 
+
== Шаблонизированный вывод ==
+
 
+
Но самое главное, что расширение теперь работает на шаблонах — оцпией <tt>template=</tt> передаётся имя шаблона, который будет обработан для каждой страницы и дописан в текст. По умолчанию выбирается шаблон с названием, идентичным статье, использующей тег <tt><nowiki><subpagelist></nowiki></tt>, но в пространстве имён ''«Шаблон:»''.
+
 
+
Шаблону передаются следующие параметры:
+
 
+
;index: Номер страницы в списке, начиная с 0.
+
;number: Номер страницы в списке, начиная с 1.
+
;odd: 1, если номер страницы нечётный (начиная с 1), и 0 иначе.
+
;has_more: 1, если страница имеет секции, кроме первой, и 0 иначе.
+
 
+
Для вставки вариаций на тему заголовков страницы можно (и нужно) использовать [[mediawikiwiki:Help:Magic_Words/ru|магические слова]] типа <nowiki>{{FULLPAGENAME}}</nowiki> — включаемый шаблон обрабатывается в контексте включаемой страницы, и поэтому эти магические слова имеют корректные значения.
+
 
+
Чтобы вставить на страницу первую секцию страницы, лучше воспользоваться инструкцией:
+
 
+
<pre><includeonly>{{#getsection:0|{{:{{FULLPAGENAME}}|здесь|можно|передать|параметры}}}}</includeonly></pre>
+
 
+
== TODO ==
+
 
+
Что ещё хотелось бы сделать (а возможно, я это и сделаю в ближайшее время):
+
 
+
* Отслеживать вхождения тега <tt><nowiki><subpages></nowiki></tt> на страницах и сохранять их в БД, а при добавлении и изменении страниц автоматически менять зависимые страницы.
+
 
+
[[Категория:Разработка]]
+
[[Категория:MediaWiki]]
+

Версия 18:39, 28 июня 2011

Перенаправление на: