Count_Raven » 13 июл 2013, 12:26
, » Сообщение:#5
Нет, изначально неверный подход.
1. Идя в вашем направлении, вы убиваете возможность поисковикам индексировать ваш сайт. Поисковик по JavaScript-событиям шариться не будет.
2. Где-то на просторах интернета пару лет назад валялся простенький пример.
3. Что вам нужно (приблизительно):
- Все страницы являются обычными страницами, чтобы поисковые системы или пользователи с отключенным JavaScript нормально совершали навигацию по сайту.
- Ссылки в навигации являются обычными ссылками, ничего тут не меняем. Только добавляем к ним событие JavaScript onclick в котором отправляем AJAX-запрос к специальному tool (нам его надо написать), а в AJAX-запросе передаем href этой ссылки.
- Tool получает href ссылки, парсит его и получает объект страницы, которую нужно загрузить:
$page = Page::getByPath("/тут/будет/переменная/содержащая/путь/к/странице/из ссылки");
Получаем и отображаем area:
$a = new Area('Main');
$a->disableControls();
$a->display($page);
Area Main отправляется ответом AJAX и там у ссылки наш обработчик определяет место, где на странице этот контент должен отобразиться.
Можно также грузить не только Main, но и множество других Area, но тогда ответ нужно отдавать в JSON.
Еще можно сделать специальные атрибуты для страниц, в которых задавать параметры, что грузится через AJAX, а что нет или может быть для некоторых страниц нужно запретить загрузку через AJAX, к примеру, там будут сложные блоки, которые нельзя через AJAX, так как они добавляют в head контент, загружают еще какие-то скрипты, что-то инициализируют и не могут быть загружены через AJAX. И такие ссылки автоматически будут грузиться без AJAX.
Можно много чего прикрепить.
Ничего сложного в этом в принципе нет. Довольно элементарно.
P.S. Описанный пример я не тестировал, а сочинил прямо тут на форуме. Возможно в tool понадобится загрузить модели, может вам понадобится подключить какие-нибудь хелперы. Loader::model('collection'); Loader::model('page'); Loader::model('area'); ну и типа того. Надо на практике смотреть как будет.
Country Amiant - Regno All Rianto