ExpressionEngine:帮助w /订购反向相关条目

时间:2012-10-16 05:54:13

标签: expressionengine

我遇到了一些反向相关条目的排序问题。 EE只有一些限制,我正在寻找快速解决方案。您将提供任何帮助,我们将不胜感激。

我有两个渠道:注册和学生。学生有一个关系字段,将每个条目链接到注册渠道中的条目。 (我需要继续使用EE关系字段。)

学生频道分配了两个类别组:成绩(组#1)和乐器(组#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)中类别的CUSTOM ORDER命令反向相关条目。我只是不知道如何去做我目前正在做的事情(显示三个表 - 每个表显示来自组#1中特定类别的条目)并将它们放入组#2中类别的自定义顺序。

再次 - 组#2中的类别是自定义顺序,我需要在该自定义顺序中显示相关条目。这很重要。

有什么想法吗?这可以通过自定义查询完成吗?我真的很感谢代码示例 - 如果可能的话。这正在扩展我的EE和SQL chops。

非常感谢你的时间。

2 个答案:

答案 0 :(得分:2)

我真的不再使用原生关系,对我来说太麻烦了。所以playa会更好。但是,我发现了这个错误,可能与您的问题有关: http://expressionengine.com/bug_tracker/bug/16373

答案 1 :(得分:1)

老实说,我的第一印象是,这是构建这个的错误方法。太复杂了。但从外面来看,总是很容易说出来吗? :)

其次,我不确定你需要这个注册频道,因为它看起来好像你没有使用它的任何数据(除非为了清楚你已经删除了一些代码)?

但无论如何,这里有一些未经测试的代码。要点是,您只能使用channel:categories标记按类别排序,然后将{category_id}传递给新的channel:entries标记。如果我们将所有entry_ids的列表传递给其中的每个标记,它应该过滤掉所有不属于您传递的特定{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变量是什么,但是可能需要修改,因为它现在在嵌入中。

如果这有结果,请告诉我?