2012-02-09 5 views
6

私はPHPでWebアプリケーションを作成しています。私は、AJAXベースのリクエストを通じてコン​​テンツをロードしています。 ハイパーリンクをクリックすると、対応するページがajaxによってフェッチされ、コンテンツがフェッチされたページに置き換えられます。Ajaxページのフェッチデザインには物理アドレスが必要です

問題は、物理的なhrefが必要なので、Facebookの機能性のような実装が可能で、ブラウザの履歴プロパティも維持できるようになりました。私は現在のページが滑って新しいページがスライドするトランジションアニメーションをやっているので、古いページのPOSTBACKをPHPページに行うことはできません。

アニメーションを維持しても有効な方法はありますか物理的なhrefと歴史。

アプリケーションの設計は、次のとおりです

  1. アプリは、RSSフィードをつかみます。
  2. これらのRSSフィードのDOMを作成します。
  3. 見出しをクリックすると、ページがアニメーション化され、RSSフィードの全記事が表示されます。
  4. 私は完全なストーリーのページに "好きな"ボタンを作成する必要があります。しかし、私は有効なURLを持っていない。
+3

[ページをリロードせずにURLを変更する](URL:http://stackoverflow.com/questions/824349/modify-the-url-without-reloading-the-page) – DaveRandom

+1

重複しない可能性があります。私は固定hrefを作成する方法を理解する必要があります。一時的ではありません。 hrefはFacebookにアクセスするための場所にとどまるべきです。 – amit

+1

私が誤解していない限り、あなたが実際にここで何をしなければならないかについて考えるならそれは重複しています。私はJavascriptでページの内容を変更したいが、アドレスバーに表示されているURLを変更して、URLを再読み込みすると同じコンテンツが生成されるようにしたいと解釈した。あなたが実際にやりたいことは、まさに他の質問が求めていることです。私はこれが悪い*の質問ではないと言います - それはなぜ私がそれを落としていないのかです - しかし、私はそれが愚か者だと思います。しかし、私が誤解している場合は、正確にあなたが望むものを展開してください... – DaveRandom

答えて

2

を第一に、あなたはFacebookのためのURLが必要な場合は、そのようにあなたに1つを与える構造を、アップだと思うあなたサーバー側のコードは、そのURLが与えられたときに正しいページをロードします。これはhttp://yourdomain.com/page.php?feed=<feedname>&link=<linknumber>のようなもので、PHP $_GET配列を使用してパラメータをチェックすることができます。パラメータがない場合は、索引ページをロードします。関連する記事を読み込んでください。

第2に、HTML5 pushState()の機能をクロスブラウザでサポートするために、AJAX呼び出し時にページURLを設定できるようにブラウザをフルリロードする必要はありません。

+1

正しい。 jQuery履歴プラグインを使用します。私はここであなたが望むものとほぼ同じコードを作っています。 http://www.capriccioitaliano.com.au/site#menu。各ページは履歴プラグインを使用してjQuery.ajax(post)を介してロードされ、同様のボタンを持っています。 .htaccessファイル内 uは のRewriteRuleでこの 'オプション+ FollowSymLinksを RewriteEngineを行うことができます* - 。![E = HTTP_AUTHORIZATION:%{HTTP:認証}] するRewriteCondの%{REQUEST_URI}^/サイト\ .htmの するRewriteCond% {REQUEST_URI} /site/|(/[^.]*|\\(php|html?|htm|feed|pdf|vcf|raw))$ [NC] RewriteCond%{REQUEST_FILENAME}!-f RewriteCond% {REQUEST_FILENAME}!-d RewriteRule。* site.htm [L] ' –

0

ハッシュナビゲーションを実装する必要があります。

Hereは短いチュートリアルです。

Hereは、概念的な紹介です。

+0

これはクライアント側でうまくいくが、Facebookのリンターツールはjavascriptを実行しないので、古いコンテンツが得られる。 – DMCS

4

アレクサンダーの回答はクライアント側でうまくいくが、Facebookのリンターツールはjavascriptを実行しないため、古いコンテンツが得られる。 2つのリンクのどちらもこれに対する解決策を提供していません。

実装する必要があるのは、サーバー側でURLを解析することです。 http://www.php.net/manual/en/function.parse-url.phpを参照してください。 Fragmentは、サーバーがハッシュタグ値と見なすものです。あなたのPHPコードで、フラグメントに基づいて正しいog:タグをレンダリングしてください。あなたはjQueryのを使用している場合

0

これは実際にはかなりわかりやすいです。 あなたはいつものようにurlを持っています。ハッシュ(#)を使用すると、クライアント側とサーバー側の両方で情報を抽出できます。

コンテンツを返す前にサーバー側で欠けているものが1つだけあり、ユーザーエージェントの文字列をチェックしてfacebook botと比較してください(私が「facebookexternalhit」のように間違っていない場合)それがfacebook botであると判明した場合、like/share(開いているグラフのメタデータ)のURLを記述する必要なものを返し、それが他のユーザエージェント文字列であればいつものようにコンテンツを返します。

関連する問題