我创建了一个自定义模块,该模块使用查询从第三方组件返回用户的匹配结果。这样的模块工作正常并按预期加载结果。但是,我无法限制每页显示的结果。在某些情况下,有100多个结果,所以我想要
我对这些容易/最简单的任何一个都持开放态度。
我没有自定义组件,否则我可以使用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个结果
就像你们所有的智能程序员一样,我是轻量级编码的忠实粉丝,更少的请求和查询。任何帮助实现这一点将不胜感激。非常感谢您的参与。 !
答案 0 :(得分:0)
假设您正在使用Joomla 3.x,您可以使用以下内容来限制查询:
$query->setLimit(5);
当然,您可以将值5
更改为您想要的任何值。如果您使用的是比Joomla 3.x更早的版本,那么您可以使用以下内容:
$db->setQuery($query,0,5);
在这个例子中,第一个参数(0
)是开始,第二个参数(5
)是限制。
希望这有帮助