2012-10-16 8 views
7

Wystąpiły problemy z sortowaniem niektórych powiązanych ze sobą pozycji. Jest tylko kilka ograniczeń z EE i szukam szybkiego rozwiązania. Każda pomoc, którą możesz zapewnić, zostanie doceniona.ExpressionEngine: Pomoc w/Kolejność odwrotnych powiązanych wpisów

Mam dwa kanały: rejestracje i studentów. Uczniowie mają pole relacji, które łączy każdy wpis z wpisem w kanale rejestracji. (Muszę nadal używać pola relacji EE.)

Kanał studentów ma przypisane dwie grupy kategorii: stopnie (grupa nr 1) i instrument (grupa nr 2). Identyfikatory kategorii 1-6 należą do kategorii ocen.

Poniższy kod osiąga połowę tego, co muszę go zrobić:

{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} 

Oto embed 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} 

Teraz - co muszę to zrobić, to kolejność odwrotna pokrewne wpisy według ZAMÓWIENIA NIESTANDARDOWEGO kategorii w kategorii kategorii instrumentów (grupa nr 2). Po prostu nie wiedziałem, jak zrobić to, co aktualnie robię (wyświetlając trzy tabele - każda wyświetla wpisy z określonych kategorii w grupie # 1) i umieszczając je w niestandardowej kolejności kategorii w grupie # 2.

Znowu - kategorie w grupie # 2 są w niestandardowej kolejności i muszę wyświetlić powiązane wpisy w tej kolejności niestandardowej. To jest ważne.

Wszelkie pomysły? Czy można to zrobić za pomocą niestandardowego zapytania? Byłbym wdzięczny za przykład kodu - jeśli to możliwe. To jest rozciąganie moich kotów EE i SQL, jak to jest.

Dziękuję za poświęcony czas.

Odpowiedz

1

Szczerze mówiąc, moim pierwszym wrażeniem jest to, że jest to niewłaściwy sposób, aby to ukształtować. Zbyt skomplikowane. Ale zawsze łatwo jest powiedzieć, że pochodzi z zewnątrz, prawda? :)

Po drugie, nie jestem pewien, czego potrzebujesz do tego kanału rejestracji, ponieważ wygląda na to, że nie używasz z niego żadnych danych (chyba, że ​​wycięto niektóre fragmenty kodu dla jasności)?

Ale niezależnie od tego, tutaj jest jakiś nietestowany kod. Istotą jest to, że możesz sortować tylko według kategorii, używając znacznika channel:categories, a następnie przekazując {category_id} do nowego znacznika channel:entries. Jeśli prześlemy listę wszystkich entry_ids do każdego tagu w środku, powinien on odfiltrować wszystkie te, które nie należą do określonego {category_id}, które zdałeś.

{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} 

Wtedy twój embed wygląda następująco:

{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} 

nie wiem co to $count PHP zmienna masz tam jest, ale że może być konieczne modyfikacje, ponieważ jest to w ramach ankiety teraz.

Daj mi znać, jeśli to przynosi jakiekolwiek owoce?

+0

To się nie zmieniło bardzo.Kwestia nadal próbuje uzyskać wyniki w każdej z trzech grup, które mają być uporządkowane według kategorii nr 2. Teraz: {kategorie show_group = "2"} {CATEGORY_NAME} {/ kategorie} {kategorie show_group = "1" } {category_name} {/ categories} Oba wyprowadzają nazwę kategorii dla grupy nr 1. Jakieś inne myśli? –

Powiązane problemy