我正在尝试为我博客中的帖子创建一个简单的排序选项。问题是我想要使用的最后一件事是基于 JS 的重定向,因为事实上有些用户没有在他们的浏览器中启用 JS,这就是为什么他们无法对我博客中的帖子进行排序。让我给你举个例子:
我的博客中有几个类别:
//categories selection
<ul>
<li class="active"><a id="cat1" href="/?category=music">Music</a></li>
<li><a id="cat2" href="/?category=photo">Photo</a></li>
<li><a id="cat3" href="/?category=cinema">Cinema</a></li>
<li><a id="cat4" href="/?category=computers">Computes</a></li>
</ul>
另外,我有两个排序选项:
//sorting options
<div>
<a class="active">Last posts</a>
<a>Last comments</a>
</div>
根据当前的活动元素,用户会被重定向到带有此类参数的页面,例如'/?category=music&sort=posted' 或'/?category=personal&sort=commented'。
例如,让我们在类别选择中选择“CINEMA”选项卡此时处于活动状态(
<li class="actvie"><a id="cat3" href="/?category=cinema">Cinema</a></li>
)。因此,如果用户单击最后评论链接,它应该重定向到
'/?category=cinema&sort=comments'
另一个例子:当前 Last comments 处于活动状态 (
<a class="active">Last comments</a>
)。用户点击类别选择中的计算,它应该重定向到
'/?category=computers&sort=comments'.
那么,是否有任何变体可以在没有 JS 的情况下执行此类功能?如果没有,您能否建议我最优雅的解决方案,除了手动运行类别中的每个元素并使用 JS/jQuery 对选项和生成链接进行排序?
提前致谢!
服务器端:
db.collection("posts", function (err, collection) {
//getting posts dependinc on requested category
collection.find({category: req.query['category']}, {sort: [['time_added', -1]], limit:20}, function (err, posts) {
//getting posts and rendering page
});
});
更新:我找到了一个马马虎虎的解决方案。对于一个单独的类别,我使用不同的帖子列表呈现两个 div。一个用于“最后发布”,第二个 - 用于“最后评论”。排序选择器只会隐藏一个 div 并显示另一个。问题只是传输到客户端的数据大小的两倍。我知道,它需要一点 JS,但是没有'#'-hrefs 的主要类别链接会很清楚。和排序选项 - 它只是一个工具,它可能没有真正的链接。