Joomla - 在MODULE中逐个加载数据库结果

时间:2014-06-07 05:28:03

标签: jquery joomla module pagination

我创建了一个自定义模块,该模块使用查询从第三方组件返回用户的匹配结果。这样的模块工作正常并按预期加载结果。但是,我无法限制每页显示的结果。在某些情况下,有100多个结果,所以我想要

  1. 显示分页并将每页的结果限制为5)或
  2. 使用jQuery类型滑块一次显示一个带有下一个和上一个箭头的结果
  3. 使用5结果底部的加载更多按钮显示接下来的5个结果,依此类推。
  4. 我对这些容易/最简单的任何一个都持开放态度。

    我没有自定义组件,否则我可以使用Joomla的Jpagination我认为但问题是URL中没有任何内容可用于限制每页结果,因为这只是一个模块。

    这就是helper.php的样子

    // Obtain a database connection
    $db = JFactory::getDbo();
    
    // Query database to find matches for the logged 
    $query = $db->getQuery(true)
                ->select($db->quoteName(array('a.user_id','a.field_52','a.field_16','b.filename')))
                ->from($db->quoteName('#__thirdpartycomponent_profiles','a'))
                ->join('INNER', $db->quoteName('#__thirdpartycomponent_photos', 'b').' ON (' . $db->quoteName('a.main_photo'). ' = ' . $db->quoteName('b.id') . ')')
                ->where('field_16!='.$table->field_16);
    
    // Prepare the query
    $db->setQuery($query);
    
    // Load the row.
    $matches = $db->loadObjectList();
    

    这就是模块的default.php看起来像

    .....
    foreach ( $matches as $matches) {
    
    ?>
    
    <div style="margin-bottom: 8px; margin-top: 12px;"> <b><?php echo  "Rating".$matches->field_52;?></b>
    .....
    

    请注意,上述foreach逻辑会立即返回所有结果。我希望限制它以减少服务器负载,而不是显示100的结果。我的查询比我上面发布的要简单得多(为了便于阅读)所以是的,它只显示非常相关的结果我也计划将结果限制为50.我仍然不想一次加载50个结果

    就像你们所有的智能程序员一样,我是轻量级编码的忠实粉丝,更少的请求和查询。任何帮助实现这一点将不胜感激。非常感谢您的参与。 !

1 个答案:

答案 0 :(得分:0)

假设您正在使用Joomla 3.x,您可以使用以下内容来限制查询:

$query->setLimit(5);

当然,您可以将值5更改为您想要的任何值。如果您使用的是比Joomla 3.x更早的版本,那么您可以使用以下内容:

$db->setQuery($query,0,5);  

在这个例子中,第一个参数(0)是开始,第二个参数(5)是限制。

希望这有帮助