我遇到了一些反向相关条目的排序问题。 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。
非常感谢你的时间。
答案 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变量是什么,但是可能需要修改,因为它现在在嵌入中。
如果这有结果,请告诉我?