Например делать контейнер div для содержимого страниц
При старте в этот див вставляется в пхп нужный контент
При нажатии на кнопки меню, JS отправляет запрос на сервер получая только контент, который будет в div. В этот момент закрывается меню и в div после загрузки запихивается полученный html прямо в div
Для навигации можно еще менять hash и отслеживать его смену событием hashchange и вызывать загрузку нужной страницы. Тем самым нажимая назад, человек вернется на прошлую страницу.
Таким образом перезагружаться страница не будет.