2013-06-12 62 views
-2

我知道,這通過PHP supervars是不可能的,但是看到這個網站:獲取實際的URL HASH在PHP

當我們瀏覽的網頁,標題和meta只是變化,這會影響Facebook的太多,看:

他是怎麼做到的?我也有一個ajax導航系統,需要設置og,但我不知道如何做dinamically。

只是一個評論,他已經隱藏的輸入與元值:

但我仍然不知道他怎麼可以在這個網站正在呈現之前解析此。

回答

0

URL片段永遠不會發送到服務器。它被瀏覽器用作參考。 「傳統上」用於滾動到帶有片段引用的ID的元素,但最近它已被賦予一些更具特殊用途的用途。

特別是,#!是一個shebang,它的含義是「這個頁面正在被AJAX加載,但是如果你加載了以下相對於域名,你將會得到完整的頁面」 - 這個特別有用爲搜索引擎。

基本上,使用AJAX與location.hash結合起來使用它。

+0

我已經有了這方面的工作,我的問題是與OG: *和標題標籤是dinamyc。 –

+0

我不確定你的意思。 Facebook正在認識shebang並檢索包含相關元標記的適當URL,可能通過PHP的echo回覆函數。 –

+0

http://www.novomp3.com.br/?_escaped_fragment_=show&id=60我也有一個aproppiate網址,谷歌模擬器得到完美的網址,但Facebook並沒有像這樣讀取。看到這個網頁的代碼,看看那裏:http://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fwww.novomp3.com.br%2F%3F_escaped_fragment_%3Dshow% 26id%3D60 –

0

這只是一些JS(jQuery的)

<script type="text/javascript"> 
    var current_page = ''; 
    $("a").live("click", function(){ 
     return change_hash(this,1); 
    }); 
    function change_hash(el,type) { 
     if(type==1) { 
      var link = $(el).attr("href"); 
     } 
     else 
     { 
      var link = el; 
     } 
     var link_ar = link.split('/#!'); 
     if(link_ar[1]!=undefined) { 
      if((link_ar[1].length>3)&&(link_ar[1].substr(0,1)=='/')) { 
       window.location.hash = '#!'+link_ar[1]; 
       return false; 
      } 
      else 
      { 
       return true; 
      } 
     } 
     else 
     { 
      return true; 
     } 
     return false; 
    } 
    $(function(){ 
     $(window).hashchange(function(){ 
      address = location.hash.replace("#!",""); 
      var skip=false; 
      if((address.substr(0,1)=='/')&&(address!=current_page)) { 
       $("#content").html('<div class="content-box"><div class="ajax-loading">carregando...</div></div>'); 
       $("html, body").animate({ scrollTop: 0 }, "slow"); 
       if (address.indexOf(".php") == -1) { 
        var newaddress = address.replace(/[^a-zA-Z0-9_\.]+/g,""); 
        if('/'+newaddress!=address) { change_hash('/#!/'+newaddress,2);skip=true; } 
        address='/PerfilDetalhe.php?user='+newaddress; 
       } 
       if(skip==false) { 
        $.get('http://www.suamusica.com.br'+address, function(htmldata) { 
         $("#content").html(htmldata); 
         document.title = $('#metaTitle').val(); 
         $('meta[name=description]').attr('content', $('#metaDescr').val()); 
         $('meta[name=keywords]').attr('content', $('#metaKeywords').val()); 
         $('meta[property="og\\:description"]').attr('content', $('#metaDescr').val()); 
         $('meta[property=og\\:title]').attr('content', $('#metaTitle').val()); 
         $('meta[property=og\\:url]').attr('content', $('#metaURL').val()); 
         $('meta[property=og\\:image]').attr('content', $('#metaImage').val()); 
         $('meta[property=og\\:type]').attr('content', $('#metaType').val()); 
         $('meta[name=DC\\.title]').attr('content', $('#metaTitle').val()); 
         $('meta[name=DC\\.description]').attr('content', $('#metaDescr').val()); 
         $('meta[name=DC\\.subject]').attr('content', $('#metaKeywords').val()); 
        }).fail(function() { $("#content").html('<div class="content-box error-box"><h1>Ooops!</h1><p>A página acessada não existe ou não foi encontrada.</p></div>'); }); 
        current_page = address; 
       } 
       $.get('http://www.suamusica.com.br/msg_check.php', function(resp) { 
        if(resp==1) { 
         $('#msg-notify').show(); 
        } 
        else $('#msg-notify').hide(); 
       }) 

       $('.tipsy-s').remove(); 
      } 
     }); 
     var loc_h_n = window.location.hash.replace("#", "").replace("!", "").replace(".do", ".php") 
     if(window.location.hash!='#!'+loc_h_n&&window.location.hash!='') { 
      window.location.hash = '#!'+loc_h_n; 
     } 
     $(window).hashchange(); 
    }); 
</script> 

,你可以看到他在點擊返回false和行爲基礎上的#標籤值