2012-10-16 3 views
7

私はいくつかの逆関連エントリのソートに関するいくつかの問題に遭遇しました。 EEにはいくつかの制限があり、私は迅速な解決策を探しています。あなたが提供できるいかなる助力も感謝します。ExpressionEngine:逆順関連エントリを注文する

私は登録と学生の2つのチャンネルを持っています。生徒には、各エントリを登録チャネルのエントリにリンクする関係フィールドがあります。 (EE関係フィールドを引き続き使用する必要があります)

studentsチャネルには、グレード(グループ#1)と計測(グループ#2)という2つのカテゴリグループが割り当てられています。カテゴリID#1-6は成績カテゴリにあります。

次のコードは、私はそれが何をする必要があるかの半分を実現:

{exp:channel:entries channel="registrations" entry_id="{segment_4}" dynamic="no"} 
<table> 
{reverse_related_entries channel="students"} 
{categories show="1|2"} 
<tr> 
    <td><?php print $count; ?>.</td> 
    <td>{title}</td> 
    {embed="_includes/student_print" student_id="{entry_id}"} 
</tr> 
{/categories} 
{/reverse_related_entries} 
</table> 
<table> 
{reverse_related_entries channel="students"} 
{categories show="3|4"} 
<tr> 
    <td><?php print $count; ?>.</td> 
    <td>{title}</td> 
    {embed="_includes/student_print" student_id="{entry_id}"} 
</tr> 
{/categories} 
{/reverse_related_entries} 
</table> 
<table> 
{reverse_related_entries channel="students"} 
{categories show="5|6"} 
<tr> 
    <td><?php print $count; ?>.</td> 
    <td>{title}</td> 
    {embed="_includes/student_print" student_id="{entry_id}"} 
</tr> 
{/categories} 
{/reverse_related_entries} 
</table> 
{/exp:channel:entries} 

はここstudent_print埋め込みです:今

{exp:channel:entries channel="students" entry_id="{embed:student_id}" dynamic="no"} 
<td><font size="2">{categories show_group="2"}{category_name}{/categories}</font></td> 
<td><font size="2">{categories show_group="1"}{category_name}{/categories}</font></td> 
{/exp:channel:entries} 

- 私はそれが何をする必要があるか逆の関連順序ですインストゥルメントカテゴリグループ(グループ#2)のカテゴリのカスタムオーダーによるエントリ。私は現在行っていること(グループ#1の特定のカテゴリからのエントリをそれぞれ表示する3つのテーブルを表示して)をグループ#2のカテゴリのカスタム順に並べる方法を知りませんでした。

もう一度 - グループ#2のカテゴリはカスタムオーダーであり、関連オーダーをカスタムオーダーで表示する必要があります。これは重要。

アイデア?カスタムクエリでこれを行うことはできますか?可能であれば、コード例を本当にありがとうと思います。これは、私のEEとSQLチョップをそのまま引き伸ばしています。

ありがとうございます。

答えて

1

私の最初の印象は、これがこれを構造化する間違った方法だということです。あまりにも複雑です。しかし、それはいつも外から来ると言うのは簡単ですか? :)

第2に、明確にするためにコードのいくつかの部分を切り取っていない限り、あなたはそれから任意のデータを使用していないように見えるので、あなたはこの登録チャンネルが必要なのかよく分かりません。

ただし、ここにはテストされていないコードがあります。要点は、channel:categoriesタグを使用し、{category_id}を新しいchannel:entriesタグに渡してカテゴリ別にのみ注文できることです。すべてのentry_idのリストをその中の各タグに渡すと、指定した{category_id}に属していないものすべてが除外されます。

{exp:channel:entries channel="registrations" entry_id="{segment_4}" dynamic="no"} 
    {embed="_includes/student_print" entry_ids="{reverse_related_entries channel="students" backspace="1"}{entry_id}|{/reverse_related_entries}"} 
{/exp:channel:entries} 

次に、あなたの埋め込みは、次のようになります。

{exp:channel:categories channel="students" style="linear" show="1|2"} 
{if count == "1"}<table>{/if} 
    {exp:channel:entries channel="students" entry_id="{embed:entry_ids}" category="{category_id}" dynamic="no"} 
    <tr> 
     <td><?php print $count; ?>.</td> 
     <td>{title}</td> 
     <td><font size="2">{categories show_group="2"}{category_name}{/categories}</font></td> 
     <td><font size="2">{categories show_group="1"}{category_name}{/categories}</font></td>  
    </tr> 
    {/exp:channel:entries} 
{if count == total_results}</table>{/if} 
{/exp:channel:categories} 

{exp:channel:categories channel="students" style="linear" show="3|4"} 
{if count == "1"}<table>{/if} 
    {exp:channel:entries channel="students" entry_id="{embed:entry_ids}" category="{category_id}" dynamic="no"} 
    <tr> 
     <td><?php print $count; ?>.</td> 
     <td>{title}</td> 
     <td><font size="2">{categories show_group="2"}{category_name}{/categories}</font></td> 
     <td><font size="2">{categories show_group="1"}{category_name}{/categories}</font></td>  
    </tr> 
    {/exp:channel:entries} 
{if count == total_results}</table>{/if} 
{/exp:channel:categories} 

{exp:channel:categories channel="students" style="linear" show="5|6"} 
{if count == "1"}<table>{/if} 
    {exp:channel:entries channel="students" entry_id="{embed:entry_ids}" category="{category_id}" dynamic="no"} 
    <tr> 
     <td><?php print $count; ?>.</td> 
     <td>{title}</td> 
     <td><font size="2">{categories show_group="2"}{category_name}{/categories}</font></td> 
     <td><font size="2">{categories show_group="1"}{category_name}{/categories}</font></td>  
    </tr> 
    {/exp:channel:entries} 
{if count == total_results}</table>{/if} 
{/exp:channel:categories} 

私はあなたがそこに持っているこの$count PHP変数があるかわからないが、それは今埋め込み内なので、それは修正が必要な場合があります。

これが果物を持っているかどうか教えてください。

+0

これはあまり変更されませんでした。この問題は、3つのグループのそれぞれの結果をカテゴリグループ#2で注文することを依然として試みています。 そして今: ​​<フォントサイズ= "2"> {カテゴリshow_group = "2"} {CATEGORY_NAME} {/カテゴリ} ​​<フォントサイズ= "2"> {カテゴリshow_group = "1" } {category_name} {/ categories} 両方ともgroup#1のcategory_nameを出力します。 他の考えはありますか? –

2

私は本当にネイティブの関係を使用していません。私にとってもバグです。だから、プラヤが良いでしょう。しかし、私はあなたの問題に関連するかもしれないこのバグを発見しました: http://expressionengine.com/bug_tracker/bug/16373

関連する問題