在Joomla中显示文章的动态列表

时间:2014-06-30 06:32:43

标签: php mysql sql joomla

在类别列表中,我希望能够动态显示文章列表。我正在开发的网站允许用户在阅读后“提交”一篇文章。当他们点击提交按钮时,该文章的ID将存储在名为“completed_quests”的表中的数据库中。我需要做的是让Joomla检查文章ID是否存在于“content”和“completed_quests”表中。如果两个表中都存在文章ID,则该文章不应显示在类别列表中,因为该文章或“任务”已经提交。如果文章ID存在于“内容”表中,但不存在于“completed_quests”表中,那么文章应该显示在类别列表中,因为它已经提交了注释。

我想知道是否有一个特定的核心Joomla文件我应该覆盖以改变类别列表输出,或者我是否应该开发一个自定义模块来创建这个动态列表。任何指导都将非常感谢。如果您对如何显示此动态列表有任何其他想法,我会全力以赴。

编辑:我开始在Joomla中开发一个自定义模块,至少是为了测试。以下代码未按预期工作。当我取出以下行“WHERE arp2i_completed_quests.id IS NULL”时,它会显示两个表中存在的文章列表。但我需要它做的是显示内容表中存在但不在completed_quests表中的行。当我添加WHERE时,它会为存在的每一行显示文本“ID:”和“TABLE:”,但该行中的实际ID和标题不会回显到屏幕。请帮忙。

工作代码(见评论)。

<?php

$query = "SELECT * FROM arp2i_completed_quests RIGHT JOIN arp2i_content ON arp2i_content.id=arp2i_completed_quests.id WHERE arp2i_completed_quests.id IS NULL LIMIT 0, 30 "; // prepare query

$db = &JFactory::getDBO(); // get database object
$db->setQuery($query); // apply query
$articles = $db->loadObjectList(); // execute query, return result list

foreach($articles as $article){ // loop through articles
    echo 'ID:' . $article->id . ' Title: ' . $article->title . '<br />';

} 

?>

2 个答案:

答案 0 :(得分:1)

您可以覆盖模板中的com_content列表视图 您可以通过将default.php从/ components / com_content / views / categories / tmpl /复制到/ templates / yourtemplate / html / com_content / categories /

来实现。

但是,我相信这样的模板覆盖只允许你更新模块和组件的显示文件(default.php文件),而不是模型,这意味着你必须在这个布局文件中添加数据库查询(或进入图书馆),这感觉非常黑客的方法。不过它应该可行。

更好的解决方案是使用单个视图创建定制组件,以及查询数据库以创建相应列表的模型。甚至将整个事物定为一个定制组件(保存该组件中的文章)并且根本不使用Joomla的文章管理器甚至是有意义的。

如果您的列表页面没有分页,或者您不关心辅助页面上的SEO友好URL,那么您还可以创建一个模块来显示列表并将其插入文章区域。模块通常比组件更容易制作。您将数据库查询输入到模块的帮助文件中。

答案 1 :(得分:0)

您应该开发一个完全符合您要求的内容视图。如果您有一些编程经验,应该非常简单。您无需更改任何核心文件。