Фильтр объявлений по городу в скрипте доски сужает ленту до нужного региона. Без него локальная площадка превращается в свалку «со всей страны», а пользователь из Твери видит лоты из Владивостока и закрывает сайт. Для сценария «как Авито» город — must-have, не второстепенная опция.
Старт доски — мануал, обзор движка — скрипт доски.
Справочник, а не строка «введите город»
Свободный ввод даёт «Москва», «москва», «г. Москва», «Мск» — и фильтр ломается. Нужен справочник:
- регион / область;
- город;
- опционально район или метро для крупных городов;
- синонимы для поиска в админке при добавлении.
На старте региональной доски хватает 1 области и 10–30 населённых пунктов. Не импортируйте всю страну «на вырост» — авторы будут путаться, SEO размажется по пустым страницам.
Где хранится выбор пользователя
Обычно город пишут в cookie/сессию и показывают в шапке. Поведение, которое ожидаю:
- Выбрал город → лента и рубрики фильтруются.
- Обновил страницу → выбор сохранился.
- Открыл прямую ссылку рубрики с городом в URL → фильтр совпадает с URL.
- «Все города» — осознанная опция, не дефолт для локального проекта.
Если ЧПУ вида /city/tver/nedvizhimost/ — следите, чтобы пустые комбинации отдавали нормальную заглушку и noindex, а не тысячи тонких страниц.
Поле города в объявлении
При подаче город обязателен. Автоподстановка из профиля автора экономит время, но должна переопределяться — человек продаёт дачу в области, а живёт в центре. На карточке город виден сразу под ценой или в параметрах; в списке — в мета-строке превью.
Смена города у уже одобренного объявления: либо лёгкая правка, либо снова модерация — решите заранее. Для недвижимости смена локации критична, для «продам диван» менее.
Админка: как не утонуть в справочнике
- Включайте/выключайте города без удаления (чтобы не бить старые карточки).
- Счётчик активных объявлений по городу — видно, куда звать авторов.
- Массовая замена «город удалён → соседний» при чистке справочника.
- Запрет подачи в выключенный город.
Модератору в очереди город должен быть виден без открытия карточки — часть спама отсекается по несоответствию «рубрика Работа + город курорт в другом часовом поясе» на локальной доске.
Типичные баги, которые я ловлю на приёмке
- Фильтр есть в UI, но SQL не учитывает city_id — «для галочки».
- VIP-блок на главной игнорирует выбранный город.
- Поиск по строке ищет глобально, а рубрика — локально; пользователь теряется.
- После логина город сбрасывается на дефолт из профиля.
- Мобильное меню города обрезает длинные названия и нельзя выбрать.
Прогон: два города, по два объявления, переключение в шапке, проверка главной, рубрики, поиска и VIP. Пока VIP чужого города торчит в витрине — к приёмке не подписываюсь. VIP — здесь.
Связь с «аналогом Авито»
Привычка выбирать город — из крупных классифайдов. На своём сайте это же ожидание: аналог Авито. Площадка под ключ должна отдавать справочник уже заполненным под регион заказчика — площадка.
Фильтр по городу — маленькая сущность с большим влиянием на доверие. Справочник, стабильная сессия, честные ЧПУ и VIP в том же городе. Сделайте это до рекламы — локальный трафик перестанет отваливаться на первом клике.
Мультигород и «вся область»
Когда площадка растёт на область, появляется запрос «показывать соседние города». Делаю это явно: переключатель «только мой город» / «+50 км» / «область», а не тихая подмешка чужих лотов в выдачу. Иначе житель райцентра видит объявления областного центра и думает, что фильтр сломан. Для VIP правило жёсткое: слот городской витрины только своего city_id. Областной VIP — отдельный тариф и отдельный блок, если вообще нужен.
- Не смешивать city_id в одном SQL без метки в UI.
- В карточке всегда писать город текстом, даже если фильтр уже выбран.
- В sitemap городские ленты — только с контентом.
Импорт справочника и опечатки
Импорт «всех городов РФ» ради галочки я больше не делаю на старте. Тянем область из нормального справочника, вычищаем дубли, проверяем склонения в шаблонах («в Твери» vs «в Тверь»), если скрипт это умеет. Опечатки вроде двух «Калининградов» ловят по счётчику объявлений и по жалобам авторов «меня не находят». Слияние городов — операция с бэкапом: у карточек меняется city_id, ЧПУ старого города закрываете редиректом или 410 по ситуации.
В админке подачи модератор должен иметь быструю смену города, если автор ошибся. Без этого очередь копится из мелочи. И да: геолокация браузера как подсказка — ок, как единственный способ выбрать город — нет; люди с VPN и «определились не там» будут злиться. Всегда оставляйте ручной выбор списком.
Реклама и посадочные по городам
Для контекста удобны посадочные /city/... с живой лентой. Не ведите платный трафик на город, где три объявления — будет дорогой отказ. Сначала наполнение, потом кампания. В метрике смотрите не только визиты, а подачу объявлений и клики по контактам в разрезе города. Так видно, где фильтр реально работает на бизнес, а где справочник мёртвый груз.
Если города два-три, иногда проще поддомены или явный выбор на входе без иллюзии «вся страна». Фильтр объявлений по городу в скрипте доски — базовая гигиена классифайда. Сделайте справочник узким, сессию стабильной, VIP городским, ЧПУ честными — и локальный пользователь перестанет уходить на первом экране из-за чужих регионов в ленте.
Связка фильтра с кабинетом автора
В кабинете список объявлений тоже фильтруйте по городу, если автор ведёт несколько точек. При подаче подставляйте последний выбранный город, но давайте сменить. В статистике админки «объявления по городам» помогает решать, куда ехать за авторами лично. Фильтр объявлений по городу — не только UX шапки, а управленческая ось локальной площадки.
Если закрываете город на паузу, не удаляйте его из справочника: переведите в inactive, карточки спрячьте из публички, ЧПУ отдайте понятную заглушку. Жёсткое удаление ломает старые ссылки из Telegram и рекламы. Аккуратная деактивация сохраняет историю и нервы. Так справочник остаётся живым инструментом, а не свалкой мёртвых id.
Частые вопросы
Фильтр объявлений по городу скрипт?
Фильтр по городу — базовый сценарий классифайда вроде Авито.
Сколько времени занимает «Фильтр объявлений по городу»?
Ориентир по тексту мануала — около 6 мин. На практике зависит от хостинга и подготовки базы.
Нужен ли отдельный сервер?
Для большинства скриптов достаточно хостинга или VDS с PHP и MySQL. Подбор сервера — в разделе VDS и требованиях к PHP/MySQL.
Скрипт доски объявлений php?
Разбор рядом в мануале по этому запросу. скрипт доски объявлений php
Купить скрипт классифайда под ключ?
Разбор рядом в мануале по этому запросу. купить скрипт классифайда под ключ