2

因此,我一直在关注有关JPagination的本教程以及有关JDatabase$option的部分,它在第 2 行有一个变量"$option.limit"。(页面上的其他任何地方都没有引用它,我不确定这个值在哪里被声明/初始化)。

$db =& JFactory::getDBO();
$lim    = $mainframe->getUserStateFromRequest("$option.limit", 'limit', 14, 'int'); //I guess getUserStateFromRequest is for session or different reasons
$lim0   = JRequest::getVar('limitstart', 0, '', 'int');
$db->setQuery('SELECT SQL_CALC_FOUND_ROWS x, y, z FROM jos_content WHERE x',$lim0, $lim);
$rL=&$db->loadAssocList();
if (empty($rL)) {$jAp->enqueueMessage($db->getErrorMsg(),'error'); return;} 
else {
////Here the beauty starts
$db->setQuery('SELECT FOUND_ROWS();');  //no reloading the query! Just asking for total without limit
jimport('joomla.html.pagination');
$pageNav = new JPagination( $db->loadResult(), $lim0, $lim );
foreach($rL as $r) {
//your display code here
}
echo $pageNav->getListFooter(  ); //Displays a nice footer

我在诸如此类的页面上查看了 joomla 文档,以查看变量是否与 相关,因为是设置要显示的内容的数量。但我没有多少运气。$optionlimitBoxlimitbox 展示盒

因此,我想知道您打算如何从JPagination 中的变量$option和/或当前选择中获取信息。LimitBox

Pastebin 链接到我的实现[24 小时后过期]

4

1 回答 1

3

这篇文章在某些方面已经过时了,它最初是为 J1.5 编写的,并且假设了很多关于内部工作的知识。我不会推荐它用于 J2.5。

如果您遵循 J2.5 MVC 并使用它的内置(大部分)部分用户状态机制,那么今天分页基本上是自动的。JModelList首先,在 J2.5 中,如果您要显示内容项列表,您的模型应该可以扩展。通过添加处理列表的有用功能进行JModelList扩展。JModel

这些功能之一是populateState()方法,在它的基本状态下,如果您使用<select>命名的limit. 它通过为您管理基本用户状态来做到这一点,我建议您通读/administrator/com_contact/libraries/joomla/application/component/modellist.phpJoomla API JModelList)。

populateState()用于帮助模型以半自动方式跟踪组件的基础知识。除了列表限制外,它还将跟踪搜索字段和排序列及其方向。如果您的扩展需要跟踪其他用户状态或覆盖设置,您可以populateState()在模型文件中创建一个 - 只需记住事先调用父级,这样您仍然可以获得内置的好处。例如

protected function populateState()
{
    parent::populateState();
    $app = JFactory::getApplication('site');

    /* Do some groovy stuff here
     * like adding our own form variables to the state to use later
     */
    $srid = $this->getUserStateFromRequest($this->context.'.project.srid','srid');
    $this->setState('project.srid', $srid);

}

对于用户状态,您可以在这篇文章中阅读更多内容(其中还简要介绍了分页)“如何使用用户状态变量”

于 2012-07-01T23:41:09.297 回答