|
|
Line 1: |
Line 1: |
− | {{Extension4i | + | {{Extension4info |
| |name=TemplatedPageList | | |name=TemplatedPageList |
− | |назначение=Расширение для вывода списков вики-страниц. Наше, родное, похоже на DPL и его друзей, но отличается от них поддержкой вывода по шаблону и наличием спецстраницы с интерфейсом. | + | |description ru=Расширение для вывода списков вики-страниц. Наше, родное, похоже на DPL и его друзей, но отличается от них поддержкой вывода по шаблону и наличием спецстраницы с интерфейсом. |
| |description=Page listing extension. Similar, but better in some ways than DPL & company. Supports template output. | | |description=Page listing extension. Similar, but better in some ways than DPL & company. Supports template output. |
| |authors=[[User:VitaliyFilippov]] | | |authors=[[User:VitaliyFilippov]] |
Line 9: |
Line 9: |
| |status=our | | |status=our |
| }} | | }} |
− | | + | {{ExtensionFromInfo|lang=en|name=TemplatedPageList}} |
− | == Features ==
| + | [[Category:Incomplete extension descriptions]] |
− | | + | |
− | This is Yet Another Page Listing extension. It is similar to DynamicPageList & company ([[mediawikiwiki:Extension:DynamicPageList (Wikimedia)|Intersection / Wikimedia’s DPL]], [[mediawikiwiki:Extension:DynamicPageList (third-party)|3rd party’s DPL]], [[mediawikiwiki:Extension:SubPageList|SubPageList]], [[mediawikiwiki:Extension:SubPageList2|SubPageList2]], [[mediawikiwiki:Extension:SubPageList2|SubPageList3]], etc), but the code is simpler and the functionality is more advanced.
| + | |
− | | + | |
− | Initially, it was just an improved [[mediawikiwiki:Extension:SubPageList2|SubPageList2]]. Then it survived several feature additions and refactorings (previous authors probably were C-coders and big lovers of rounding integers (<tt>round(intval($options['count']))</tt>)).
| + | |
− | | + | |
− | Features:
| + | |
− | * (Main feature) '''<subpagelist>''' tag produces a simple or ''templated'' list of pages selected by dynamic conditions.
| + | |
− | * Special page with form interface to <subpagelist> ([[Special:TemplatedPageList]])
| + | |
− | * <nowiki>{{#getsection|Title|section number}}</nowiki> parser function for extracting page sections by number.
| + | |
− | * Automatic AJAX display of subpages everywhere.
| + | |
− | | + | |
− | TODO:
| + | |
− | * Support «materialization» of lists in the DB, enable caching and support correct refreshing of parser cache by saving dependencies into database.
| + | |
− | | + | |
− | == Automatic subpage listing == | + | |
− | | + | |
− | '''TemplatedPageList''' can add a simple link to each page, and when clicked, this link displays list of all subpages of current page.
| + | |
− | | + | |
− | <tt>$egSubpagelistAjaxNamespaces = array(NS_MAIN => true);</tt> setting enables this on namespaces specified.
| + | |
− | | + | |
− | <tt>$egSubpagelistAjaxDisableRE = "regexp";</tt> is a regexp disables this on pages whose title match it.
| + | |
− | | + | |
− | == <nowiki>{{#getsection}}</nowiki> ==
| + | |
− | | + | |
− | If you want to include first section of page, use the following instruction:
| + | |
− | | + | |
− | <pre><includeonly>{{#getsection:0|{{:{{FULLPAGENAME}}|here|you|can|pass|parameters}}}}</includeonly></pre>
| + | |
− | | + | |
− | == <subpagelist> syntax ==
| + | |
− | | + | |
− | Syntax is backwards compatible with [[mediawikiwiki:Extension:DynamicPageList_(Wikimedia)|Wikimedia’s DynamicPageList]] syntax,
| + | |
− | except for 'firstcategorydate' related stuff. The text inside <tt><subpagelist></tt>
| + | |
− | is preprocessed, so you can use templates, magic words and parser functions
| + | |
− | inside it. Options are specified one per line.
| + | |
− | | + | |
− | === Open the tag or parser function ===
| + | |
− | | + | |
− | '''<tt><templatedpagelist></tt>''' (you can also use one of <subpagelist>, <DynamicPageList> or <subpages> for compatibility)
| + | |
− | | + | |
− | or
| + | |
− | | + | |
− | '''<tt><nowiki>{{#templatedpagelist:</nowiki></tt>'''
| + | |
− | | + | |
− | === Page selection ===
| + | |
− | | + | |
− | ; namespace = Main|Talk|…: Restrict list to some namespaces
| + | |
− | ; category = A|B|C<br /> category = D|E: Restrict page list to pages which are in one of these categories. This option may be specified multiple times, following occurrences will be appended as a conjunction, i.e., the resulting expression will be (A or B or C) & (D or E). This is compatible with Wikimedia’s DynamicPageList syntax, but allows more complex queries.
| + | |
− | ; subcategory = F|G: Like previous, but recursively including all subcategories of F and G.
| + | |
− | ; notcategory = A: Exclude pages which are in category A.
| + | |
− | ; notsubcategory = B: Exclude pages from category B and all its subcategories.
| + | |
− | ; parent = P: Restrict listing to subpages of P.
| + | |
− | ; prefix = P: Restrict listing to pages whose title starts with P. I.e. '''<tt>parent=P</tt>''' is equivalent to '''<tt>prefix=P/</tt>'''.
| + | |
− | ; level = L or MIN..MAX: Set wanted subpage nesting levels (i.e. number of '/' in title) it must be equal to L or be within MIN..MAX.
| + | |
− | ; deepness = D or MIN..MAX: Set wanted subpage nesting levels, relative to parent.
| + | |
− | ; ignore = L1|L2|…: Ignore pages which match L1 or L2 or … LIKE patterns:
| + | |
− | :* '\_' and ' ' match single space.
| + | |
− | :* '_' matches any single character.
| + | |
− | :* '%' matches any substring.
| + | |
− | :* '\%' matches single '%' character.
| + | |
− | ; redirect = yes|no: restring listing to redirect or non-redirect pages.
| + | |
− | | + | |
− | === Ordering ===
| + | |
− | | + | |
− | ;order|ordermethod = Y1 [asc|desc],Y2 [asc|desc],…: Sort pages by Y1,Y2,…, asc|desc can be specified right after Yi, each Yi is one of:
| + | |
− | :* title|fullpagename
| + | |
− | :* titlewithoutnamespace|pagename
| + | |
− | :* lastedit
| + | |
− | :* user
| + | |
− | :* creation|firstedit
| + | |
− | :* length|size
| + | |
− | :* popularity|pagecounter
| + | |
− | ; order = ASC or DESC: Ascending or descending sort order for all Yi (compatibility)
| + | |
− | ; count|limit = N: Show at most N pages
| + | |
− | ; offset = M: Skip first M pages
| + | |
− | | + | |
− | === Output ===
| + | |
− | | + | |
− | ;showtotal = yes|no: Show (or not) total count of found pages. Don't show by default.
| + | |
− | ;output = simple|column|template: Select output method.
| + | |
− | :* Simple is just a bullet-list with page titles and links.
| + | |
− | :* Column is a 3-column grouped view, just as on MediaWiki category pages.
| + | |
− | :* Templated view uses template for display. See 'template' option.
| + | |
− | ;template = X: Use template:X for output. The template will be preprocessed just like when included into listed article. I.e. all standard MediaWiki magic variables (<nowiki>{{PAGENAME}} {{REVISIONDAY}}</nowiki> etc) will generate values corresponding to listed articles. Additionally, the following parameters are passed to this template:
| + | |
− | :; <nowiki>{{{</nowiki>index}}} : list index, beginning at 0
| + | |
− | :; <nowiki>{{{</nowiki>number}}} : list index, beginning at 1
| + | |
− | :; <nowiki>{{{</nowiki>odd}}} : is <nowiki>{{{</nowiki>number}}} odd? (1 or 0)
| + | |
− | :; <nowiki>{{{</nowiki>ns_N}}} : N is namespace index, value is 1
| + | |
− | :; <nowiki>{{{</nowiki>title}}} : full title
| + | |
− | :; <nowiki>{{{</nowiki>title_rel}}} : title relative to parent specified in options
| + | |
− | ; suppresserrors|noerrors|silent = true: Suppress errors.
| + | |
− | | + | |
− | === Close tag / PF ===
| + | |
− | | + | |
− | '''<tt></templatedpagelist></tt>'''
| + | |
− | | + | |
− | or
| + | |
− | | + | |
− | '''<tt><nowiki>}}</nowiki></tt>'''
| + | |
− | | + | |
− | == Installation ==
| + | |
− | | + | |
− | You just need to add the following to LocalSettings.php:
| + | |
− | | + | |
− | <code-php>
| + | |
− | require_once "$IP/extensions/TemplatedPageList/TemplatedPageList.php";
| + | |
− | </code-php>
| + | |