видимо инфоман сессию провалил...

нет началась новая.... курсовой прожект на 55 листов ещё 4 практических решить надо... это вам не шутки совсем
некогда...
отдельным модулем неумесно решать это комплексный подход
кароче принцип таков:
делаем модуль выборки из базы (пофик какой) этим модулем выбираем город итп.... и формируем массив $sids....
далее так или иначе этот модуль кладёт массив sids в сессию
далее в самом движке соби перехватываем sids и подменяем его на наш из сессий
параметр $sids работает только при выключенном кеше
$sids массив записей в той категории в каторой мы щас находимся....
$sids это тонкое место которое определяет (количество записей в данной категории)
таком образом
зайдя в категорию например : ТАНКИ ГРЯЗИ НЕБОЯТСЯ по идеи соби сформирует нам массив $sids типа - (танк т80, танк-т90,.....) ну вот а мы знаем что первый танк продаётся только в городе Москва а остальные в городе Брянск

а наш созданный модуль по полю (город) отобрал все танки в Москве и сформировал свой $sids состоящий из ида этого танка
таквот соби только сформирует свой апупенно толстый $sids мы его перехватываем и меняем на свой который нам сформировал модуль.... в итоге
сайт выведет нам в этой категории только один танк лежащий на складе в москве

кроме того от параметра $sids начинает прыгать всё остальное а именно (постраничный вывод, подсчёт записей в категории (подкатегории) и прочие сервисные штучки движка....)
вот такой алгоритм
где в соби встречается $sids
ищите фаром (полнотекстовый поиск...)