Classe multiPages - Paginação com arrays
Classe usada para selecionar elementos de um array considerando tanto a página exibida em GET quanto o máximo de objetos a serem exibidos por página.
Output HTML para os links de navegação. Configurável.
Leia o README para + info.
Output HTML para os links de navegação. Configurável.
Leia o README para + info.
Data | Autor | Changelog | Download |
---|---|---|---|
31/07/2004 4:43pm | Eduardo Vaz de Mello | - | Versão 0.0.1 |
03/08/2004 11:08pm | Eduardo Vaz de Mello | Versão 0.0.2 | Versão 0.0.2 |
Aew ") resolvi escrever pois mostrei isso pra umas pessoas e muitas perguntaram que raio de utilidade teria essa classe. O README já provou como tenho um certo problemeenha em me expressar heh então vou dar um exemplo mais prático do que está lá.
Suponha um script que mostre os thumbnails das fotos disponíveis em um desses Fotologs. Certo momento é possível que haja tantas imagens e thumbnails que fica impraticável mostrar todos em apenas uma página, seja por recursos de servidor ou conexão do usuário. Aí que a classe entra, ela vai determinar quais thumbnails devem ser exibidos de acordo com a quantidade máxima configurada na criação do objeto, e da respectiva página na URL como por exemplo "&page=2" (a string usada, nesse caso "page", pode ser passada como argumento opcional na criação do objeto - PADRAO:"mpage").
Isto só é possível quando, nesse caso, o sistema de exibição dos thumbnails utiliza de uma array contendo os elementos a serem exibidos.
Exemplo:
<?php
// uma função retorna uma array com todos os IDs
// de thumbnails disponíveis para exibição
$thumbnails = getThumbnails();
// Crie o objeto multiPages com base nessa array
// definindo o número máximo de thumbnails por página
$mp = new multiPages($thumbnails, 6);
// agora o membro $mp->elements é uma array contendo no
// máximo 6 IDs de thumbnails. Se for a primeira página,
// os primeiros 6, a segunda página com os seis seguintes,
// etc.. então prossiga com o código comum, agora usando
// $mp->elements ao invés de usar $thumbnails:
for ($i = 0; $i < count($mp->elements); $i++) {
// uma função qqr que exiba o thumbnail
exibirThumbnail($mp->elements[$i]);
}
// para exibir os links de navegação, e configurá-los,
// leia o README, é bem simples. Seria nesse caso:
echo $mp->navFooter($linksConfig, 5, false);
// onde:
// '$linksConfig' -> array contendo config
// CSS dos links (leia README)
// '5' -> número de links diretos para cada
// página (ex.: [..2 3 4 5 6..]) - PADRAO 7
// 'false' -> centraliza ou não o texto do
// footer - PADRAO TRUE
?>
Importante: ainda não fiz um error handling no caso de um mané digitar manualmente na url "mpage=X", onde X não exista. Como a classe funciona com detecção da string na URL, ela retornará uma array vazia. Só percebi isso agora hehe nesse exato momento "D como foi
de um dia pro outro passou lotado. Conserto e mando de novo logo. Na verdade é bem simples, quem quiser fazer aí, só checa se existe, senão redireciona pra page 1 ou melhor remova a string da URL.
Qqr crítica, dúvida etc tamoae
Suponha um script que mostre os thumbnails das fotos disponíveis em um desses Fotologs. Certo momento é possível que haja tantas imagens e thumbnails que fica impraticável mostrar todos em apenas uma página, seja por recursos de servidor ou conexão do usuário. Aí que a classe entra, ela vai determinar quais thumbnails devem ser exibidos de acordo com a quantidade máxima configurada na criação do objeto, e da respectiva página na URL como por exemplo "&page=2" (a string usada, nesse caso "page", pode ser passada como argumento opcional na criação do objeto - PADRAO:"mpage").
Isto só é possível quando, nesse caso, o sistema de exibição dos thumbnails utiliza de uma array contendo os elementos a serem exibidos.
Exemplo:
<?php
// uma função retorna uma array com todos os IDs
// de thumbnails disponíveis para exibição
$thumbnails = getThumbnails();
// Crie o objeto multiPages com base nessa array
// definindo o número máximo de thumbnails por página
$mp = new multiPages($thumbnails, 6);
// agora o membro $mp->elements é uma array contendo no
// máximo 6 IDs de thumbnails. Se for a primeira página,
// os primeiros 6, a segunda página com os seis seguintes,
// etc.. então prossiga com o código comum, agora usando
// $mp->elements ao invés de usar $thumbnails:
for ($i = 0; $i < count($mp->elements); $i++) {
// uma função qqr que exiba o thumbnail
exibirThumbnail($mp->elements[$i]);
}
// para exibir os links de navegação, e configurá-los,
// leia o README, é bem simples. Seria nesse caso:
echo $mp->navFooter($linksConfig, 5, false);
// onde:
// '$linksConfig' -> array contendo config
// CSS dos links (leia README)
// '5' -> número de links diretos para cada
// página (ex.: [..2 3 4 5 6..]) - PADRAO 7
// 'false' -> centraliza ou não o texto do
// footer - PADRAO TRUE
?>
Importante: ainda não fiz um error handling no caso de um mané digitar manualmente na url "mpage=X", onde X não exista. Como a classe funciona com detecção da string na URL, ela retornará uma array vazia. Só percebi isso agora hehe nesse exato momento "D como foi
de um dia pro outro passou lotado. Conserto e mando de novo logo. Na verdade é bem simples, quem quiser fazer aí, só checa se existe, senão redireciona pra page 1 ou melhor remova a string da URL.
Qqr crítica, dúvida etc tamoae
01/08/2004 9:29pm
(~20 anos atrás)
Strings de links como "Próxima página" / "Última" / "Primeira" agora são modificáveis.
Atualizado README e adicionado Exemplo.php para uma simples demonstração.
espero que seja útil "D flwz