2012-12-22 2 views
1

나는 joomla를 처음 사용합니다. 내 데이터베이스에서 데이터를 보여주는 웹 페이지를 만들려고합니다 (저는 Sourcerer 플러그인으로 PHP를 사용하고 있습니다). 데이터는 이미지가있는 사용자의 프로필을 포함합니다. 이제 페이지 당 5 개의 사용자 프로필을 표시하려고합니다 (페이지 매김 사용). 페이지 매김을 원하는 단 하나의 메뉴 (페이지)입니다. 많은 링크를 통해이 문제를 해결했지만 정확한 해결책을 찾지 못했습니다. Plz 도와주세요.Joomla에서 페이징

감사

생성자 위하고 사용중인 모델의 생성자에서이 코드

class ComUserModel extends JModel 
{ 

    var $_pagination = null; 

    function __construct() 
    { 

를 넣어 클래스 정의 아래

+0

페이지 넘김이 코어 전체에 사용되며 예제를 살펴 보았습니다. fr 거기에? 예를 들어 카테고리 목록 레이아웃을 살펴보고 핵심 페이지 매김을 사용하는 방법을 살펴보십시오. – Elin

답변

0

,의는 사용자 모델

function __construct() 
{ 
    $this->_app =& JFactory::getApplication(); 
    parent::__construct(); 

    // Get pagination request variables 
    $limit = $this->_app->getUserStateFromRequest(OPTIOIN_NAME.'.user.limit', 'limit', $this->_app->getCfg('list_limit'), 'int'); 
    $limitstart = $this->_app->getUserStateFromRequest(OPTIOIN_NAME.'.user.limitstart', 'limitstart', 0, 'int'); 

    // In case limit has been changed, adjust it 
    $limitstart = ($limit != 0 ? (floor($limitstart/$limit) * $limit) : 0); 

    // Set States 
    $this->setState(OPTIOIN_NAME.'.user.limit', $limit); 
    $this->setState(OPTIOIN_NAME.'.user.limitstart', $limitstart); 
} 

있다고 가정하자 아래 기능을 모델에 추가하십시오.

function pagination() 
{ 
    if($this->_pagination == NULL) 
     $this->_pagination = new JPagination(20, $this->getState(OPTIOIN_NAME.'.user.limitstart'), $this->getState(OPTIOIN_NAME.'.user.limit')); 
    return $this->_pagination; 
} 

데이터를 가져 오지 뷰에서

function getalluser() 
{ 

    $model  = $this->getModel('user');   
    $data  = $model->getUsers(); 
    $pagination = $model->pagination(); 

    $view = $this->getView('userlist', 'html'); 
    $view->assignRef('data',$data); 
    $view->assignRef('pagination', $pagination);   
    $view->display(); 
} 

당신이 매김

<?php echo $this->pagination->getListFooter(); ?> 

원하는 코드를 넣어 컨트롤러에서

function getUsers() 
{ 
    // Set the Limits and Filters 
    $limit = $this->getState(OPTIOIN_NAME.'.user.limit'); 
    $limitstart = $this->getState(OPTIOIN_NAME.'.user.limitstart'); 

    //get db    
    $db = JFactory::getDBO(); 
    $count_query = 'count(*)'; 
    $select_query = '*'; 
    $from_query = $db->nameQuote(TABLE_PREFIX.'user_table');    


    //build the query 
    $query = $db->getQuery(true); 
    $query->select($select_query); 
    $query->from($from_query); 
    $query->order($db->nameQuote('id').' desc');  
    $db->setQuery($query);    


    //build count query 
    $cquery = $db->getQuery(true); 
    $cquery->select($count_query); 
    $cquery->from($from_query); 
    $cquery->order($db->nameQuote('id').' desc');  
    $db->setQuery($cquery);    
    $total = $db->loadResult(); 


    if ($db->getErrorNum()) 
    { 
     $this->_app->enqueueMessage($db->stderr(), 'error'); 
     return false; 
    }   
    //setup the pagination 
    $this->_pagination = new JPagination($total, $limitstart, $limit);  

    //get the data within limits 
    $data  = $this->_getList($query, $limitstart, $limit);   

    if ($db->getErrorNum()) 
    { 
     $this->_app->enqueueMessage($db->stderr(), 'error'); 
     return false; 
    } 

    return $data; 
} 

당신이 어떤 문제가 있으면 저를 보자 알아