Changing the frontend sorting according to different fields I am creating a site that has a list of events that I need to be able to sort by different fields. I know how to do it statically in my templates but I want to enable it in the front end.

For the example, each event will have three different sorting fields - 'Teacher', 'Country' and 'Event Date'. The initial order will be according to date but I want that the user will be able to choose from an option button a specific value (with all the available options of this field) and to see only events from a specific teacher or specific country.

I would appreciate any help on how to start such a thing. Again, I know how to create static sorting in the templates but not live one being done in the front-end...
Use Categories for Teacher &amp; Country.  Add inputs for those categories to your Section. 

To create your select inputs:

{% set entryIds = craft.entries.section('events').ids() %}
{% set teachers = craft.categories.relatedTo({ sourceElement: entryIds }).group('teacher').find() %}
{% set countries = craft.categories.relatedTo({ sourceElement: entryIds }).group('country').find() %}
&lt;select&gt;
  {% for item in teachers %}
       &lt;option value='{{ item.title }}'&gt;{{ item.title }}&lt;/option&gt;
  {% endfor %}
&lt;/select&gt;
&lt;select&gt;
  {% for item in countries %}
       &lt;option value='{{ item.title }}'&gt;{{ item.title }}&lt;/option&gt;
  {% endfor %}
&lt;/select&gt;


Then when you submit these as a form or via javascript on your filtered page you would do something like this.

{% set filterId = craft.request.getParam('id') %}
{% set events = craft.entries.section('events').relatedTo({targetElement:filterId}).startDate('and', '&gt;= ' ~ now) %}


If you needed to filter for more than one category group:

{% set entries = craft.entries({
    section: 'events',
    relatedTo: [
        'and',
        { targetElement: craft.request.getParam('teacherId') },
        { targetElement: craft.request.getParam('countryId') }
    ]
}) %}