2016-10-10 10 views
0

Я работаю над обновлением сайта div с помощью различных статей. Я должен поставить кнопку общего доступа в Facebook для каждой статьи. Обновление производится в Ajax с помощью jQueryFacebook share button и Ajax

Что я делаю: со ссылкой на страницу article.php, я отправляю идентификатор. URL выглядит следующим образом:

http://www.website.org/index.php?page=article.php&id=892

На странице index.php, я включил:

<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script> 
<script> 
    // Facebook 
    (function(d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/fr_FR/sdk.js#xfbml=1&version=v2.7"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

</script> 

На странице article.php,

<div id="fb_container" class="fb-share-button" data-href="<?PHP 
    $url = "http://www.website.org/index.php?page=article?id=".$id; 
    echo $url; 
    ?>" data-type="button_count"> 
</div> 
<script> 
$(document).ready(function() { 
    $('meta[property=og:title]').remove(); $('head').append('<?PHP echo $titre['contenu']; ?>'); 
    // Same for the others meta tags 

    FB.XFBML.parse(document.getElementById('fb_container')); 
}); 
</script> 

Мета-теги обновляются, это нормально. Но кнопка совместного доступа не работает: - в первой загрузке она видна, но общая страница не отображает изображение и метаинформацию - когда мы читаем другую статью, кнопка общего доступа не отображается

Любое предложение?

+0

Вы не можете установить метатеги OG через JS, скребок FB не заботится о JavaScript. – CBroe

+0

Первое определение метатегов OG не задано динамически, только когда загружаю другую статью. Необходимо использовать первые значения, но здесь это не работает. Howether, это не является задачей функции FB.XFBML.parse для синтаксического анализа содержимого после динамического изменения? –

+0

Выполняет ли '$ (document) .ready' выполнение при загрузке кода через AJAX? И как вы заменяете контент - убедились ли вы, что идентификатор, который вы ищете, уникален в DOM, даже после того, как вы динамически загружаете новый материал? – CBroe

ответ

1

Я найти решение, используя другой Ajax под названием страницы, включая ссылку Facebook и функции FB.ui:

в index.php:

window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'Your id app', 
     xfbml  : true, 
     version : 'v2.8' 
    }); 
    }; 

    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

function openFbPopUp(fburl,fbimgurl,fbtitle,fbsummary) { 
FB.ui(
      { 
      method: 'feed', 
      name: fbtitle, 
      link: fburl, 
      picture: fbimgurl, 
      caption: fbtitle, 
      description: fbsummary 
      } 
     ); 
}  

в обновленном facebook.php включая ссылку на facebook:

// here the connection to the MySQL database 
// read the values of the id element 

<a onclick="openFbPopUp('<?PHP echo ($url_fb); ?>','<?PHP echo ("http://".$_SERVER['SERVER_NAME']."/".$photo['url_photo']); ?>','<?PHP echo ($titre['content']); ?>','<?PHP echo (substr(addslashes($description['content']),0,200)."..."); ?>')" value="SHARE"> 
<img src="images/fb-share.png"> 
</a>