Joobs, we’re now in the same boat. We have a table that has the exact requirements you’ve described, and even tried the jQuery Table Sorter with it’s accompanying pagination plugin (which I hacked to be filterable).
But, that answer does not work when page load times become a problem. We have a list of doctors, their related specialties (playa), and their related locations (playa), and if we were to request all 600 (or even half that), EE takes a while to render the page, which is not acceptable for such a large site.
I’ve been toying with a URL structure like so:
<a href="http://hospital.org/find_a_doctor/results/sortby/filter1/filter2/filter3/filter4/P0">http://hospital.org/find_a_doctor/results/sortby/filter1/filter2/filter3/filter4/P0</a>
And the resulting page like so:
{exp:weblog:entries
weblog="doctors"
status="Custom Status"
{if segment_5 == "orderby"}
orderby="doc_first_name|doc_last_name" sort="asc"
{if:elseif segment_5 == "title_a"}
orderby="title" sort="asc"
{if:elseif segment_5 == "title_d"}
orderby="title" sort="desc"
{if:elseif segment_5 == "doc_services_a"}
orderby="doc_services" sort="asc"
{if:elseif segment_5 == "doc_services_d"}
orderby="doc_services" sort="desc"
{if:elseif segment_5 == "doc_locations_a"}
orderby="doc_locations" sort="asc"
{if:elseif segment_5 == "doc_locations_d"}
orderby="doc_locations" sort="desc"
{/if}
{if segment_6 != "gender"} search:doc_gender="{segment_6}" {/if}
{if segment_7 != "location"} search:doc_locations="{segment_7}" {/if}
{if segment_8 != "language"} search:doc_language="{segment_8}" {/if}
{if segment_9 != "service"} search:doc_services="{segment_9}" {/if}
paginate="both"
limit="10"}
{!-- results go here --}
{!-- pagination goes here --}
{/exp:weblog:entries}
This would seem to work, as I do get results, and I have pagination working fine, but the sort and filter options seem to never work.
I could do a lot of this in PHP, but I’d rather keep a nice looking URL, and one that someone could give to their friend and it would populate results just as the original user saw it.
Am I on the right track? Should I be doing something else here?
Thanks!
Sean