2010-10-22 19 views
0

Je voudrais pouvoir faire une boucle par les événements passés dans un modèle:Comment parcourez-vous les éléments passés lors d'une recherche dans un modèle Zotonic?

{% for page in m.search[{past cat='event'}] %} 
    {% if forloop.first %}<ul>{% endif %} 
     <h2>{{ m.rsc[page].date_start|date:"M j, Y" }} {{ m.rsc[page].title }}</h2> 
     <p>{{ m.rsc[page].body|show_media }}</p> 
     <p><a href="{{ m.rsc[page].website }}">Register to attend this event.</a></p> 
    {% if forloop.last %}</ul>{% endif %} 
{% endfor %} 

Fondamentalement, je suis à la recherche d'un type de recherche passé qui agit comme le contraire du type de recherche à venir .

Je peux déjà obtenir des événements à venir comme suit:

{% for page in m.search[{upcoming cat='event'}] %} 
    {% if forloop.first %}<ul>{% endif %} 
     <h2>{{ m.rsc[page].date_start|date:"M j, Y" }} {{ m.rsc[page].title }}</h2> 
     <p>{{ m.rsc[page].body|show_media }}</p> 
     <p><a href="{{ m.rsc[page].website }}">Register to attend this event.</a></p> 
    {% if forloop.last %}</ul>{% endif %} 
{% endfor %} 

Je n'ai pas état d'âme de codage ce si je suis pointé dans la bonne direction et je contribuerai le résultat à la base de code maître.

Comment parcourir les éléments passés lors d'une recherche dans un modèle Zotonic?

Répondre

1

Vous pouvez utiliser le terme date_start_before du modèle de recherche Query, qui est apparemment non documenté, bien que je l'ai trouvé en regardant le code source dans search_query.erl (ligne 293).

Bien que je pense que votre requête doit vérifier le pivot_date_end et non le pivot_date_start.

Pour rendre plus accessible, vous pouvez ajouter un gestionnaire (un peu comme upcoming) au module de mod_search.erl, éventuellement modifier également

Le module mod_search implémente la plupart des recherches.

Voir aussi http://zotonic.com/documentation/761/the-query-search-model

:-) Les patchs sont les bienvenus

+0

date_start_before a besoin d'un argument. J'ai utilisé m.search [{query cat = 'événement' sort = "rsc.pivot_date_start" date_start_before = maintenant}] –

+0

Bizarrement, il semble que ça ne marche pas pour moi. Il se peut que je n'ai pas défini date_end sur mes événements. –

+0

Je ne comprends pas pourquoi ça ne marche pas parce que ça ressemble à "date_start_after = now", mais ça fonctionne d'une manière ou d'une autre. –