2013-05-12 11 views
2

pagination J'ai changé une fonction dans pagination.php de base dans le dossier des bibliothèques/html commeJoomla 2.5 override

protected function _list_render($list) 
    { 
$stranky = JPagination::getPagesCounter(); 

     $html = '<ul>'; 
     $html .= '<li class="pagination-prev">' . $list['previous']['data'] . '</li>'; 


    $html .= '<li> &nbsp; | '. $stranky .' |&nbsp; </li>'; 

     $html .= '<li class="pagination-next">' . $list['next']['data'] . '</li>'; 
     $html .= '</ul>'; 

     return $html; 
    } 

Ce changement fonctionne très bien, mais ce que je suis en train de réaliser est d'avoir ce code override. donc je mets le même code dans pagination.php dans le dossier html dans mon dossier de modèle et changer le nom de la fonction à pagination_list_render (liste $)

function pagination_list_render($list) 
    { 

$stranky = JPagination::getPagesCounter(); 


     $html = '<ul>'; 
     $html .= '<li class="pagination-prev">' . $list['previous']['data'] . '</li>'; 

     $html .= '<li> &nbsp; | '. $stranky .' |&nbsp; </li>'; 

     $html .= '<li class="pagination-next">' . $list['next']['data'] . '</li>'; 
     $html .= '</ul>'; 

     return $html; 
    } 

Mais maintenant, il ne fonctionne plus et page entière est cassée. Il semble que $ stranky = JPagination :: getPagesCounter(); est le problème .. dans le fichier de base, il fonctionne, dans le fichier remplacé non. Des idées?

Répondre

2

Votre fichier chrome (remplacement de modèle de pagination) n'a pas accès à l'objet JPagination, vous devez donc calculer vous-même les valeurs.

public function pagination_list_render($list) 
{ 
    $total = count($list['pages']); 
    $current = 0; 
    foreach ($list['pages'] as $i => $page) { 
     if (!$page['active']) { 
      $current = $i; 
      break; 
     } 
    } 
    $counter = JText::sprintf('JLIB_HTML_PAGE_CURRENT_OF_TOTAL', $current, $total); 

    $html .= '<ul>'; 
    $html .= '<li class="pagination-prev">' . $list['previous']['data'] . '</li>'; 
    $html .= '<li> &nbsp; | '. $counter .' | &nbsp; </li>'; 
    $html .= '<li class="pagination-next">' . $list['next']['data'] . '</li>'; 
    $html .= '</ul>'; 

    return $html; 
} 

Vous souhaitez peut-être ajouter un test s'il y a plus d'une page.

+0

Si j'appelle getPagesCounter() statiquement ou avec votre sugested $ ce, le changement dans le fichier de base produira de bons résultats. Mais si je mets le même code (statiquement ou avec $ this) dans le fichier chrome, le résultat est toujours le même, les pages brisées. Nibra, pourriez-vous s'il vous plaît confirmer que vous avez essayé de passer outre et que cela a fonctionné pour vous? Si vous essayez, peut-être vous trouvez où est le problème avec ce remplacement. Merci – Matop79

+0

Désolé, je ne l'ai pas testé. Vous avez raison, l'objet JPagination n'est pas disponible dans le remplacement. Corrigé (et testé) la réponse. – nibra

+0

Votre solution fonctionne! Merci. J'accepte ta réponse Mais une autre question. Il n'y a vraiment aucun moyen d'inclure (appeler) objet JPagination dans cette méthode de remplacement? Je préférerais utiliser une manière élégante d'utiliser l'objet JPagination au lieu de le calculer. – Matop79

1

J'ai changé le défaut dans pagination mon modèle comme celui-ci:

Son très simple si vous utilisez jQuery

$(document).ready(function() { 
     $('.pagenav').removeClass('pagenav').addClass('pagination'); 
    }); 

Vous pouvez mettre quelque chose en place de "pagination". De même, vous pouvez changer pour ses enfants li

espoir qui aide