Joomla K2 内容按票数排序
Posted
技术标签:
【中文标题】Joomla K2 内容按票数排序【英文标题】:Joomla K2 content sort by number of votes 【发布时间】:2012-09-05 22:51:42 【问题描述】:我正在使用 Joomla 2.5 和 K2 2.5.7。我有一个类别,其中包含不同票数的帖子。在前端,我需要按票数对这个类别的项目进行排序。
我将标准星级评分系统重新配置为简单的“给一票”系统。
我需要这个用于排名顺序页面,所以它会在顶部有最多票数的项目。
我有什么
我有用于 K2 类别的 MVC 模板。我想知道,如果在 category.php 中排序 $this->leading
是正确的选择。
如果是,我该怎么做?对于var_dump
,有变量numOfVotes
,它带有实际的票数。如何通过这个 var 对这个对象进行排序?
非常感谢!
【问题讨论】:
【参考方案1】:This K2 forum post 似乎回答了你的问题。您需要使用 mod_content k2 模块并使用“排序依据”参数并选择最高评分。
如果你在 ftp 中转到“modules/mod_k2_content/helper.php”,你会在第 98 行看到它说的
$query .= ", (r.rating_sum/r.rating_count) AS rating";
这会按最高评级对数据进行排序。现在通常这将按投票数除以投票的人数进行排序,结果在 1 到 5 之间。但是,由于您的案例中的每个人都获得 5 票 - 那么您的平均结果将始终为 5计算!,我认为您必须将该行替换为:
$query .= ", r.rating_count AS rating";
即只是按投票的人数排序(注意,这假设你也没有使用投票系统!你没有提到它,所以我假设没有)
那么您应该能够使用该模块(正常选择您想要的参数)
对于使用组件类别选项等。然后可以在第 39 行的“components/com_k2/models/itemlist.php”中找到相同的代码行,这又需要进行编辑。然后你可以像往常一样使用内置参数!
【讨论】:
这不是一个解决方案,因为我目前不了解选项“最高评级”中的排序条件。我所做的改变是我用按钮替换了星星。每次点击次数最高的是 5。当我查看脚本 /models/item.php 第 758 行及以下时,评级是简单的数学 SUM。我不知道,为什么高评级的排序不起作用。 --- 重新配置标准评分系统几乎用 css 和很少的模板工作完成 --- @Marek Tesař 更新了答案。现在我更好地理解了你的问题 - 希望这个答案能提供更多帮助! 谢谢。它的答案很好,根据 phpmyadmin 的 SQL 控制台,这会以正确的顺序给出很好的结果。我有完整的 sql 查询,但我不能在这里粘贴 - 它太长了。页面没有变化! mod_K2_content 中的提议更改似乎以正确的顺序给出了结果,但在模型的组件视图中更改了相同的内容 - 没有更改。我试图在 //prepare items FOR 循环(大约第 345 行)之后在线对 views/itemlist/view.html.php 中的对象数组 Items 进行排序,但没有运气。组件视图很奇怪,请各位大神指教一下,脚本是怎么一步步走的? @MarekTesař 我不太清楚你的意思。你是什么意思脚本按步骤进行?会尝试回答你的问题 - 但如果我把它弄得一团糟,请澄清!通常在加载页面时,“视图”(组件中的类别)向控制器发送请求以显示信息。然后控制器向模型发送一个请求以获取在这种情况下的信息到模型 getData() 中的函数。在 k2 中,模型在第 290 行的 k2 模板 (views/itemlist) 中将信息直接提供给 view.html.php。这样就可以将数据显示在前端。 感谢您的帮助。最后我在一个 K2 项目中加载了模块位置,这个 k2 项目链接到菜单。您的编辑适用于模块视图,但不适用于组件视图。我不知道为什么,但这就是我将模块位置加载到 k2 项中的主要原因。以上是关于Joomla K2 内容按票数排序的主要内容,如果未能解决你的问题,请参考以下文章
如果 Joomla K2 项目或 Joomla 文章在模板索引文件上检测