2012-10-16 2 views
7

Ho riscontrato alcuni problemi con l'ordinamento di alcune voci relative al contrario. Ci sono solo alcune limitazioni con EE e sto cercando una soluzione rapida. Qualsiasi aiuto tu possa fornire sarà apprezzato.ExpressionEngine: Help w/Ordering Reverse Related Entries

Ho due canali: registrazioni e studenti. Gli studenti hanno un campo di relazione che collega ciascuna voce a una voce nel canale delle registrazioni. (Devo continuare a utilizzare il campo delle relazioni EE.)

Al canale studenti sono assegnati due gruppi di categorie: voti (gruppo # 1) e strumento (gruppo # 2). Gli ID di categoria n. 1-6 si trovano nella categoria dei voti.

Il codice seguente raggiunge la metà di quello che ho bisogno di fare:

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

Ecco l'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} 

ora - quello che ho bisogno di fare è ordinare il invertite voci dell'ordine CUSTOM delle categorie nel gruppo di categorie strumenti (gruppo # 2). Semplicemente non sapevo come fare ciò che sto facendo (visualizzando le tre tabelle - ognuna delle quali mostra voci di categorie specifiche nel gruppo # 1) e inserendole nell'ordine personalizzato delle categorie nel gruppo # 2.

Ancora una volta - le categorie nel gruppo # 2 sono in un ordine personalizzato e ho bisogno di visualizzare le voci correlate in tale ordine personalizzato. Questo è importante.

Qualche idea? Questo può essere fatto con una query personalizzata? Gradirei davvero un esempio di codice, se possibile. Questo sta allungando le mie braciole EE e SQL così com'è.

Grazie mille per il vostro tempo.

risposta

1

Per essere onesti, la mia prima impressione è che questo è il modo sbagliato per strutturare questo. Troppo complesso Ma è sempre facile dire che viene dall'esterno giusto? :)

In secondo luogo, non sono sicuro di ciò che ti serve per questo canale di registrazione, dal momento che sembra che tu non stia utilizzando alcun dato (a meno che non hai escisso alcuni bit del tuo codice per maggiore chiarezza)?

Ma a prescindere, ecco un codice non testato. L'essenziale è che è possibile ordinare solo per categoria utilizzando il tag channel:categories e quindi passare lo {category_id} a un nuovo tag channel:entries. Se passiamo un elenco di tutti gli entry_ids a ogni tag all'interno, dovrebbe filtrare tutto ciò che non appartiene allo specifico {category_id} che passi.

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

Allora la vostra embed assomiglia a questo:

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

Non so che cosa questa variabile $count PHP che avete in c'è, ma che può avere bisogno di modifiche dal momento che è all'interno del embed ora.

Fammi sapere se questo porta qualche frutto?

+0

Questo non è cambiato molto.Il problema sta ancora cercando di ottenere i risultati in ciascuno dei tre raggruppamenti da ordinare per gruppo di categoria # 2. E ora: {categorie show_group = "2"} {category_name} {/ categorie} {categorie show_group = "1" } {category_name} {/ categories} Entrambi restituiscono il nome della categoria per il gruppo # 1. Qualche altro pensiero? –