Используй библиотеку SxGeo - на данный момент самая быстрая. Ну или у яндекса есть API, определяет до дома!!
Вот алгоритм по SxGeo:
1. Получаем город (а это целый массив, id, регион, страна, ОКАТО и еще куча полезного)
2. Пишем id в сессию, чтобы не дергать библиотеку на каждой странице (или по вкусу пишем в localstorage)
3. В обработчике вывода контента используем полученный id по своим правилам
Далее развитие событий развивается по миллиарду сценариев - все зависит от вашей CMS!