7

一部の逆関連エントリのソートで問題が発生しました。EE にはいくつかの制限があり、簡単な解決策を探しています。あなたが提供できるどんな助けも高く評価されます。

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

生徒チャネルには、成績 (グループ #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) のカテゴリのカスタム オーダーによって逆関連エントリを並べることです。現在行っていること (3 つのテーブルを表示し、それぞれがグループ #1 の特定のカテゴリのエントリを表示する) を実行し、それらをグループ #2 のカテゴリのカスタム順序に配置する方法がわかりませんでした。

繰り返しますが、グループ #2 のカテゴリはカスタム オーダーであり、関連するエントリをそのカスタム オーダーで表示する必要があります。これは重要。

何か案は?これはカスタム クエリで実行できますか? 可能であれば、コード例をいただければ幸いです。これは私のEEとSQLのチョップをそのまま伸ばしています。

ありがとうございました。

4

2 に答える 2

2

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

于 2012-11-04T08:04:56.803 に答える
1

正直なところ、私の第一印象は、これはこれを構成する方法が間違っているということです。複雑すぎる。しかし、それは常に外から来ると言うのは簡単ですよね? :)

第二に、この登録チャネルが何のために必要なのかわかりません。なぜなら、そこからのデータを使用していないように見えるからです (明確にするためにコードの一部を切り取っていない限り)。

ただし、テストされていないコードがいくつかあります。要点は、タグを使用し、新しいタグchannel:categoriesに渡すことによってのみカテゴリ別に注文できるということです。すべての entry_ids のリストを各タグに渡すと、渡した特定のものに属さないものはすべて除外されます。{category_id}channel:entries{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}

そこにあるこのPHP変数が何であるかはわかりませんが$count、現在は埋め込み内にあるため、変更が必要になる場合があります.

これが実を結ぶかどうか教えてください。

于 2012-10-16T13:05:39.627 に答える