Антон, сомневаюсь, что для решения этой проблемы придумывался какой-то особый паттерн. :)
Сначала вы должны разобраться с тем, каким образом у вас формируется меню. Если оно формируется на основе записей базы данных, страниц, то скорее-всего у каждой записи будет индивидуальный ID.
При отображении страницы, вы сохраняете ID страницы, которую отображаете. Проверяете соответствует ли ID страницы, на которую ведет элемент меню, ID страницы, которая открыта.
И это лишь один из вариантов, но чтобы вам подсказали подробнее, вы должны постараться лучше описать вашу "систему", на основе которой строится меню, да и сами страницы. (Роутинг)
Сначала вы должны разобраться с тем, каким образом у вас формируется меню. Если оно формируется на основе записей базы данных, страниц, то скорее-всего у каждой записи будет индивидуальный ID.
При отображении страницы, вы сохраняете ID страницы, которую отображаете.
Проверяете соответствует ли ID страницы, на которую ведет элемент меню, ID страницы, которая открыта.
И это лишь один из вариантов, но чтобы вам подсказали подробнее, вы должны постараться лучше описать вашу "систему", на основе которой строится меню, да и сами страницы. (Роутинг)