Как следует реализовать Hashbang (AJAX) на вкладках страницы контента?

Как некоторые из вас могут знать, Google сейчас сканирует AJAX. Реализация, безусловно, является чем-то элегантным, но, по крайней мере, она применима к Yahoo и Bing AFAIK.

Контекст: мой сайт работает на Wordpress и HTML5. Пользовательский тип поста имеет древовидные типы контента, и их содержимое управляется AJAX. Решение, которое я пришел для того, чтобы не использовать hashbangs (#!), Пока полностью не понял, как их реализовать, довольно "рискованно". Каждая ссылка в виде HREF ссылается на *site.com/article-one/? Tab=first_tab*, которая показывает только содержимое выбранной вкладки (<div>Content...</div>). Как это:

<a href="http://site.com/article-one/?tab=first_tab" data-tab="first_tab">This First Tab</a>

Как вы можете заметить, data-tab - это значение, которое JavaScript отправляет с помощью AJAX Get, которое получает связанный контент и отображает его внутри контейнера. С другой стороны, сервер получает переменную и делает <?php get_template_part('tab-first-tab'); ?> доставить контент.

Что касается риска, я вижу, что Google и другие поисковые системы будут получать *http://site.com/article-one/? Tab = first_tab * вместо http://site.com/article-one/, заставить пользователей перейти по этому URL вместо того, чтобы показывать домашнюю страницу с автоматически выбранным содержимым вкладки.

Проблема сейчас заключается в реализации, чтобы избежать этого.

Хэшбанг: Из того, что я узнал, я должен сделать это.

  1. HREF должен стать site.com/article-one/#!first-tab
  2. JS должен извлечь "первую вкладку" из href и передать ее в $_GET (просто ради того, чтобы не использовать "data-tab").
  3. JS должен изменить URL-адрес на site.com/article-one/#!first-tab
  4. JS должен определить, имеет ли URL #!first-tabи показать выбранную вкладку вместо вкладки по умолчанию.

Теперь для реализации на стороне сервера, вот где я немного заблудился в лесу.

  1. Как Wordpress справится site.com/article-one/?_escaped_fragment_=first-tab?
  2. Нужно ли что-то менять в.htaccess?
  3. Что должно иметь снимок HTML? Я предполагаю, что весь сайт, но с запрошенной вкладкой показывает, а не показывает только содержание.

Я думаю, что я могу отделить то, что Wordpress будет обрабатывать, когда он обнаружит _escaped_fragment_. Если запрашивается, как в Google, он покажет весь контент плюс выбранный контент, а если нет, то это потому, что AJAX запрашивает его, и покажет только контент. Это должно быть правильно?

1 ответ

Я собираюсь поговорить с третьим лицом.

Поскольку это не имеет ответов, у меня есть хороший, почему вы не должны делать это. Да, по той же причине, по которой Твиттер их ударил:

http://danwebb.net/2011/5/28/it-is-about-the-hashbangs

Вместо того, чтобы делать hashbangs, вы должны сделать нормальные URI. Например, статья со вкладкой "Сводка" должна быть "site.com/article/summary", и, если она появляется по умолчанию (или она уже запрошена), она также должна измениться на этот URI с помощью pushState().

Если пользователь выбирает вкладку "упражнения", URL-адрес должен измениться на "site.com/article/exercises" с помощью pushState (), пока сайт загружает контент через AJAX, и пока вы сохраняете исходную ссылку на "site.com" / статьи / упражнения". Без JavaScript пользователь все равно должен видеть контент - не только контент, но и всю страницу с выбранной вкладкой.

Чтобы это работало, нужно внести некоторые изменения в.htaccess для обработки /[tab] в URL.

Другие вопросы по тегам