Организация навигации по сайтуВсем передвижением по сайту управляет два GET – параметра, передаем мы их в адресной строке, как известно. Первый параметр “do” управляет страницами и хранится он в суперглобальном массиве $_SESSION под индексом “langsys_page”. Второй параметр “lang“ управляет используемым языком на сайте, хранится он в куки (суперглобальный массив $_COOKIE) под индексом “langsys_lang”.
Как происходит перенаправление по страницам и языкам? В этом, кстати, был основной интерес. Проблема заключалась в том, что как только пользователь решал изменить язык сайта, то ему показывалась стартовая страница, а не просто изменялась на другой язык та, которую он просматривал. Это хорошо, если сайт маленький, а если в нем бесчисленное количество статей – потом попробуй найти ту, которую читал. Проблему решил вариант добавления текущей страницы в сессию, то есть наша функция getContentByLang($page, $lang); смотрела в массив сессий, чтобы знать какую страницу показывать, но никак напрямую не общалась с изменение GET – параметра.
Размещение текущей страницы в массиве сессий решило первую проблему, но привлекло другую – теперь если мы находились на странице http://site. ru/?do=about и вдруг решили перейти на заглавную страницу http://site. ru/, то мы останемся и никуда не перейдем. Почему? – мы не передали никакого значения $_GET[‘do’], соответственно текущая страница не изменилась в сессии и сайт никак не отреагировал. Делать главную страницу под ссылкой, например http://site. ru/?do=main глупо, поэтому существует еще одно условие в управлении навигацией:
То есть, в случае, когда у нас не установлены GET – параметры page и lang, мы присваиваем элементу массива сессий “langsys_page” значение startPage, которое заранее мы объявили в конструкторе наше класса langSys, но об этом уже далее.
Основные конструкции для хранения данных.В этой системе я воспользовался двумя методами хранения данных:
1. Ассоциативный массив, где ключ это идентификатор слова, а значение это переведенное слово. Кстати, ключом может быть как целочисленное значение, так и слово, например на русском. Использую я первый вариант, так как пожелания при разработке были таковыми. Выглядит это так:
Если вы обратите внимание на шаблон, то можете увидеть, что мы вызывали функцию translate($id). Эта функция как раз и выводит нужное слово, обращаясь в куку за значением текущего языка:
Функции так же можно передавать напрямую значение текущего языка, а не брать его из куки. Нужно для того, чтобы программист мог вручную выбирать, на каком языке показывать то или иное слово/фразу.
2. Второй вариант хранения информации на сайте предназначен для больших блоков информации, а не отдельных фраз или же слов. По этому методу мы создаем отдельные страницы, например about. php, faq. php и т. д. с обычной html версткой (параграфы, форматирование текста, гиперссылки) и нужным содержимым, которое мы бы хотели видеть на странице. Его можно брать как из этого же файла, так и подгружать из базы. Взял я первое, потому что в моем случае – чем меньше обращений к базе данных, тем лучше. На самом деле, если вы будете использовать подобную структуру на сайте с небольшой нагрузкой, то можно грузить и из базы, если же у вас на сайте до десятков тысяч посещений в день, то соответственно понимаете, что лишняя нагрузка на базу неуместна.
Сама функция, подгружающая нужную страницу:
Ничего замысловатого.
Смена языка. В начале этой статьи я рассказывал о том, как организуется навигация по сайту и про то, как меняется язык. Еще раз напоминая, текущий язык записывается в куки под индексом “langsys_lang”, после чего им могут воспользоваться функции, выводящие содержимое сайта, чтобы показать информацию на нужном языке.
Для того чтобы изменить язык мы используем простое условие, реагирующее на изменение GET – параметра “lang”:
Которое, при получении такового вызывает функцию changeLang($lang) (смена текущего языка):
С языками на этом все, теперь можно перейти к конструктору класса langSys.
Конструктор класса langSys.Когда все вышесказанное было прочитано, можно перейти и к настройкам нашей системы. Для этого используется конструктор, в котором мы можем перечислить все настройки, используемые потом в системе и на сайте в целом, например root – директория или же язык по умолчанию.
Выглядит это так:
Я думаю, в этом случае комментарии не нужны. Но скажу, что это все упрощает модификацию, и использование класса в дальнейшем. Вернутся Вам будет интересно:
|
- Публикации
Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.
Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.
Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...
Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...
Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...
Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.