0

ご存知かもしれませんが、Googleは現在AJAXをクロールしています。実装ははるかにエレガントなものですが、少なくともYahooとBingAFAIKにも適用されます。

コンテキスト:私のサイトはWordpressとHTML5によって運営されています。カスタム投稿タイプにはツリータイプのコンテンツがあり、これらのコンテンツはAJAXによって駆動されます。ハッシュバン(#!)を実装する方法を完全に理解するまで、ハッシュバン(#!)を使用しないために私が得た解決策は、かなり「リスク」です。* site.com/article-one/?tab=first_tab *にリンクするHREFとしてのすべてのリンク。これは、選択したタブのコンテンツのみを表示します(<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/ではなく* http://site.com/article-one/?tab =first_tab*を取得することがわかります。タブコンテンツが自動的に選択されたホームページを表示する代わりに、ユーザーがそのURLにアクセスできるようにします。

ここでの問題は、それを回避するための実装です。

Hashbang:私が学んだことから、私はこれをすべきです。

  1. HREFはsite.com/article-one/#!first-tab
  2. JSは、hrefの「first-tab」を抽出して$ _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がリクエストしているため、コンテンツのみが表示されます。それは正しいはずですか?

4

1 に答える 1

2

第三者の話をします。

これには応答がないため、これを行うべきではない理由がわかりました。はい、Twitterが彼らを叩いたのと同じ理由です:

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

ハッシュバングを行う代わりに、通常の URI を作成する必要があります。たとえば、概要タブがオンになっている記事は「site.com/article/summary」である必要があり、それがデフォルトで表示される (または既に要求されている) 場合は、pushState() を使用してその URI に変更する必要があります。

ユーザーが「exercises」タブを選択した場合、サイトが AJAX を介してコンテンツをロードしている間、元の href を「site.com」に維持している間に、pushState() を使用して URL を「site.com/article/exercises」に変更する必要があります。 /article/exercises". JavaScript がなくても、ユーザーにはコンテンツが表示されます。コンテンツだけでなく、タブが選択されたページ全体が表示されます。

これを機能させるには、.htaccess を編集して URL の /[tab] を処理する必要があります。

于 2012-06-28T22:49:21.603 に答える