Manual:Pager.php
Appearance
Esta página está desatualizada. |
| Arquivo do MediaWiki: Pager.php | |
|---|---|
| Localização: | includes/pager/ (includes/Pager/ in 1.46 or later) |
| Código-fonte: | master • 1.44.2 • 1.43.5 • 1.39.15 |
| Classes: | MediaWiki\Pager\Pager |
A classe IndexPager fornece funções úteis para resultados de paginação dos resultados do 'query fieldset', para o MySQL. A classe IndexPager é utilizada, por exemplo, na página especial Special:Categories.
Exemplo de uso
O primeiro passo para usar o IndexPager em suas extensões especiais página está em criar uma classe chamada, por exemplo MyExtensionsPager que estende uma destas três classes:
AlphabeticPageré usado quando você deseja listar os itens em ordem alfabéticaReverseChronologicalPageré usada quando você deseja listar os itens em uma ordem cronológica inversaTablePageré usada quando você deseja exibir itens em linhas da tabela
Cada uma destas três classes (AlphabeticPager, ReverseChronologicalPager e TablePager) estende a classe IndexPager.
Normalmente, você só deve ter que substituir alguns métodos em sua classe:
getQueryInfo()deixar o pager conhecer a consulta SQL que você deseja executar. Ele deve retornar um array associativo com os seguintes elementos:"tables" =>tabela(s) usada(s) na consulta"fields" =>campo(s) a passar para Database::select(), pode ser * (todos os campos na tabela)"conds" =>um array que contém as condições para a cláusula WHERE"options" =>um array que contém outras opções (tais como GROUP BY)
formatRow( $row )obtém um argumento,$row, que é um objeto de linha do fieldset de resultado. A função deve retornar uma string que contém o item formatado como você precisa.getIndexField()deve retornar o nome do campo da tabela usada para indexar e ordenar resultados.
Por exemplo, se você deseja listar todas as páginas do NS0 utilizando um pager, você deve fazer algo assim:
class AllPagesPager extends AlphabeticPager {
function getQueryInfo() {
return array(
'tables' => 'page',
'fields' => 'page_title',
'conds' => array( 'page_is_redirect' => '0', 'page_namespace' => '0' )
);
}
function getIndexField() {
return 'page_title';
}
function formatRow( $row ) {
$title = Title::newFromDBkey( $row->page_title );
$s = '<li><a href="' . $title->getFullURL() . '">' . $title->getText() . '</a></li>';
return $s;
}
}
No corpo de sua página especial, então você tem que:
- criar uma nova classe
AllPagesPager() - usar o método
getNavigationBar()para colocar a barra de navegação na parte superior e na parte inferior da página - usar o método
getBody()para colocar a lista dos itens
Por exemplo:
$pager = new AllPagesPager();
$wgOut->addHTML(
$pager->getNavigationBar() . '<ol>' .
$pager->getBody() . '</ol>' .
$pager->getNavigationBar()
);