Facebook sdk

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Salve ragazzi, è un po di tempo che sto impazzendo su una cosa.

Ho un sito web che utilizza wordpress con un plugin chiamato videolock. Questo plugin è progettato in modo tale da far condividere i video prima di vederli.

Adesso: il plugin funziona bene se non carico l'sdk di facebook all'interno del mio sito.

Mi spiego meglio. Se metto dopo il tag body questo codice:
HTML:
<div id="fb-root"></div>
<script>(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/it_IT/sdk.js#xfbml=1&version=v2.0";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

Il plugin da desktop fa comparire la pagina di facebook, invece se lo apro da mobile facebook genera un errore.

Invece se cancello il codice che ho riportato su il plugin funziona correttamente sia da mobile che da desktop.

Adesso, il problema è che se non utilizzo il plugin in un articolo non viene caricato l'sdk di facebook e quindi pulsanti e commenti non si vedono.

La parte interessata all'interno del plugin è questa, solo che non so come risolvere.

HTML:
	$(document).ready(function() {

		var lockers = $(".youtubeblocker");

		if( lockers.length == 0  ) {
			return;
		}

        var fbid = lockers.attr('data-appid');

        if( !fbid && lockers.length ) {
			lockers.append('<div style="z-index:10000; font-size:15px; position:absolute; padding:5px; left:5px; right:5px; top:5px; text-align:center; background:red;color:white;">Please set the facebook appId from admin</div>');
			return;
		}

		lockers.each(function(i, blocker){
			
			$(blocker).hover(function(){
				$(this).addClass('over');
			}, function(){
				$(this).removeClass('over');
			}).click(function(){
				$(this).addClass('sharing');				
				new CountDown($(blocker));
			});

			$('.sharebut',blocker).click( function(){
				
				var but = this;

				var save = function( share ) {

					var data = {
						action : 'video_share',
						link : document.URL,
						post : $(but).attr('data-post'),
						share : share
					};

					var admin_ajax = $(blocker).attr('data-adminurl') + 'admin-ajax.php';

					$.post( admin_ajax, data, function( r ){
						unblock( $(but).parents('.youtubeblocker') );
					});
				};

				FB.ui({
						method: isMobile() ? 'feed' : '../sharer/sharer.php?u=' +encodeURIComponent(document.URL)+ '&t=&pass=',
						link : document.URL,
						image : $('.youtubeblocker .image').attr('src')
					},
				  	function(response) {

					    if (response) {

					    	var postid = 0;
					    	
					    	if( response.post_id ) {
					    		postid = response.post_id;
					    	}

					    	if( response.object_id ) {
					    		postid = response.object_id;
					    	}

					    	save( postid );				      
					    }
				  	}
				);

				return false;
			});
		});

		var jssdk = $('#facebook-jssdk');

		if( ! jssdk.length ) {
			
			var fb = document.createElement('div');
			fb.setAttribute('id','fb-root');
			document.getElementsByTagName('body')[0].appendChild(fb);

		    (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/it_IT/all.js#xfbml=1&appId=" + fbid;
			  fjs.parentNode.insertBefore(js, fjs);
			}(document, 'script', 'facebook-jssdk'));
		}
	});

In particolare credo che le parti interessate del codice postato su siano queste:
Codice:
						method: isMobile() ? 'feed' : '../sharer/sharer.php?u=' +encodeURIComponent(document.URL)+ '&t=&pass=',


		var jssdk = $('#facebook-jssdk');

		if( ! jssdk.length ) {
			
			var fb = document.createElement('div');
			fb.setAttribute('id','fb-root');
			document.getElementsByTagName('body')[0].appendChild(fb);

		    (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/it_IT/all.js#xfbml=1&appId=" + fbid;
			  fjs.parentNode.insertBefore(js, fjs);
			}(document, 'script', 'facebook-jssdk'));
		}
 

Discussioni simili