Manual:Pager.php
Esta página está desatualizada. |
Arquivo MediaWiki: Pager.php | |
---|---|
Local: | includes/pager/ |
Código fonte: | master • 1.42.3 • 1.41.4 • 1.39.10 |
Classes: | 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()
);