繁体   English   中英

在Joomla中显示文章动态列表

[英]Display Dynamic List of Articles in Joomla

在类别列表中,我希望能够动态显示文章列表。 我正在开发的网站允许用户在阅读文章后“提交”。 当他们按下“提交”按钮时,该文章的ID将存储在数据库中名为“ completed_quests”的表中。 我需要做的是让Joomla检查以查看文章ID是否同时存在于“内容”和“ completed_quests”表中。 如果两个表中都存在商品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 />';

} 

?>

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

但是,我认为,此类模板替代项仅允许您更新模块和组件的显示文件(default.php文件),而不能更新模型,这意味着您必须将数据库查询添加到此布局文件(或添加到库),这是一种非常棘手的方法。 它应该可以工作。

更好的解决方案是使用单个视图创建定制组件,并创建一个模型来查询数据库以创建适当的清单。 甚至将整个事情变成一个定制的组件(将文章保存在该组件中),甚至完全不使用Joomla的文章管理器甚至可能是有意义的。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM