4

私は多くのユーザーがいて、それぞれが独自のミニサイトを持っているサイトを持っています。この「ミニサイト」の一部はブログです。著者ごとにタグクラウドを表示したいと思います。タグとタガーの基本的なクラウド機能がこれを行いますが、すべての作成者が対象です。author_idの追加は機能しません。

チャネルエントリループを使用して、作成者ごとにすべてのエントリを取得し、これらのエントリに関連付けられているタグを表示しようとしました。

{exp:channel:entries author_id="1" channel="blog"}
{exp:tag:tags entry_id="{entry_id}"}
<li>{title}<a href="#">{tag_name}</a><span>{total_entries}</span></li>
{/exp:tag:tags} 
{/exp:channel:entries}

これにより、その作成者だけが使用したタグのリストが得られました(Tagでは、Taggerでは機能しませんでした)。ただし、タグが複数回使用された場合は、タグが複数回リストされます。

ネイティブEEおよびタグ機能では、やりたいことができません。これを行うには、おそらくphp(プラグイン)を使用する必要があります。作成者が使用したすべてのタグを取得し、それらを配列に入れ、重複を削除してから、これをテンプレートに出力します。私はSolspaceに投稿しましたが、PHPを使用する必要があると言われました。

それをする前に、これを行うことができるより簡単な方法や他のアドオンがあるかどうかを確認したかったのです。それが進むべき道であるならば、私はそのようなプラグインでのアプローチに関するどんなヒントも歓迎します。

4

2 に答える 2

1

TaggerとQueryModuleを使用すると、必要なものを取得できるはずです(おそらく、Solspaceタグも、私はそれを使用したことがないので、はっきりとは言えません)。

このようなクエリ

SELECT tag_name  
FROM exp_tagger
WHERE author_id = 7

その作成者にタグのセットを提供します。

author_id現在のエントリをクエリの動的な部分として使用して、このようなクエリモジュールで使用できます。

{exp:query sql= "SELECT tag_name FROM exp_tagger WHERE author_id = {author_id}"}
    {tag_name}
{/exp:query}
于 2012-10-27T17:53:09.690 に答える
1

残念ながら、ここでの唯一のオプションは、重複を削除するためのカスタム PHP だと思います。

于 2012-10-27T17:30:01.860 に答える