ブログの投稿に簡単な並べ替えオプションを作成しようとしています。問題は、私が最後に使用したいのは 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>
また、2 つの並べ替えオプションがあります。
//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'
別の例: 現在、最後のコメントはアクティブです (
<a class="active">Last comments</a>
)。ユーザーがカテゴリ選択で Computes をクリックすると、にリダイレクトされます。
'/?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
});
});
更新:まあまあの解決策を見つけました。別のカテゴリについては、異なる投稿リストを持つ 2 つの div をレンダリングします。1 つは「最終投稿」、2 番目は「最終コメント」です。並べ替えセレクターは 1 つの div を非表示にし、別の div を表示します。問題は、クライアント側に転送されるデータ サイズが 2 倍になることです。少し JS が必要になることはわかっていますが、メイン カテゴリへのリンクは「#」-href がなくても明確です。並べ替えオプション - これは単なるツールであり、実際のリンクが含まれていない可能性があります。