Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Nascondere pulsante like di Facebook a chi è già fan.
#1
Ho la necessità di inserire in una scheda FBML alcuni pulsanti like relativi alle mie pagine.
Il mio problema è quello di non far visualizzare i pulsanti se già son fan delle pagine.

Esempio
Nella scheda della pagina "A" ci sono i pulsanti della pagina "B" e "C".
Tizio è fan della pagina "B" e quindi dovrebbe visualizzare solamente il like della pagina "C".
Come faccio a nascondere il pulsante della pagina "B"?
Cita messaggio
#2
Leggendo la documentazione di Facebook ho trovato solo il metodo per nascondere o visualizzare un contenuto per chi è fan della pagina stessa e non di chi è fan di un'altra pagina.
Basta utilizzare il tag fb:visible-to-connection in questo modo:
Codice:
<fb:visible-to-connection>
Contenuto visibile ai fan.
<fb:else>
Contenuto visibile solo a chi non è fan.
</fb:else>
</fb:visible-to-connection>
Mattia!
Cita messaggio
#3
Conosco il tag fb:visible-to-connection ma non è ciò che cerco. Quello che voglio io è nascondere completamente il pulsante a chi è già fan della pagina "B".

Comunque fbml legge anche css ecco perché dicevo che mi serviva un js che facesse questa operazione.
Cita messaggio
#4
Ho visto che non sarà più possibile utilizzare l'FBML dal 1° gennaio 2012, mentre si potranno usare gli iframe includendo pagine esterne. In questo modo dovrebbe essere possibile fare quello che mi chiedi, ma si avrà bisogno di un hosting dove caricare le proprie pagine.
La soluzione non è immediata, quindi farò un po' di prove e quando arriverò alla conclusione aggiornerò questa discussione.
Mattia!
Cita messaggio
#5
Il tag fb:visible-to-connection potrebbe anche tornare utile SOLO SE fosse possibile personalizzarlo inserendo l'ID della pagina. Sarebbe a dire:

nascondi pulsante se sei fan della pagina ''ID''
mostra pulsante se non sei fan della pagina ''ID''

Così facendo si potrebbero mostrare dei contenuti a chi è connesso a determinate pagine.
Cita messaggio
#6
Purtroppo quello non è possibile, inoltre dal 1° gennaio non si potrà più utilizzare come il resto dell'FBML.
Intanto, nei pochi minuti liberi che ho, sto facendo un po' di prove. Per ora sono riuscito ad emulare tramite iframe quello che fa fb:visible-to-connection. Spero nei prossimi giorni di riuscire a completare lo script in modo che faccia tutto quello che ti serve.
Mattia!
Cita messaggio
#7
(22/11/2011 19:41)Mattia Ha scritto: Ho visto che non sarà più possibile utilizzare l'FBML dal 1° gennaio 2012, mentre si potranno usare gli iframe includendo pagine esterne.

Potresti dirmi dove hai trovato questa news importantissima? E come mai? Mi spieghi dettagliatamente che cosa ha portato facebook a non utilizzare l'FBML?
Cita messaggio
#8
Nella documentazione di Facebook dedicata all'FBML c'è un riquadro in alto con scritto che dal 1° gennaio 2012 l'FBML non sarù più supportato da Facebook e che da 1° giugno 2012 le applicazione create tramite FBML non funzioneranno più.
Non so che cosa ha portato Facebook a questa decisione, ma credo che il motivo sia che utilizzando HTML, CSS e JavaScript si possono fare le stesse cose che si possono fare con l'FBML e si ha l'opportunità di farne molte altre con più libertà.

EDIT: Ho appena creato la guida per Creare un tab IFrame per una pagina Facebook. Nei prossimi giorni completerò altre guide che spiegheranno come creare delle applicazioni dinamiche.

EDIT 2: Ho appena creato la guida per creare un'applicazione su Heroku per Facebook, in modo da evitare i problemi relativi al dover avere il supporto alle connessioni HTTPS sui propri server.
Mattia!
Cita messaggio
#9
Ecco il codice dell'applicazione che sfrutta il JavaScript SDK di Facebook per stampare solo i bottoni delle pagine di cui non si è fan (alcune precisazioni sono sotto al codice).
Codice PHP:
<?php
// Forza l'utilizzo di HTTPS
if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'http') {
    
header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    exit();
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#">
<head>
<meta property="fb:app_id" content="<?=getenv('FACEBOOK_APP_ID');?>" /><!-- ID Applicazione -->
</head>
<body>
<div id="like_buttons"></div><!-- Punto in cui includere tutti i bottoni -->
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function(){
    // Elenco degli ID delle pagine da controllare
    var page_list = [1234567890, 9876543210];

    // Stampa i bottoni per le pagine
    function printLikeButtons(pages){
        var query = FB.Data.query('SELECT page_id,page_url FROM page WHERE page_id IN('+page_list.join(',')+')');
        query.wait(function(rows){
            var o = '';
            var l = page_list.length;
            for(var i=0;i<l;i++){
                if(!checkPageList(page_list[i],pages)){
                    o += '<iframe src="//www.facebook.com/plugins/like.php?href='+encodeURIComponent(getPageUrl(page_list[i],rows))+'&amp;send=false&amp;layout=standard&amp;width=70&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=35&amp;appId=<?=getenv('FACEBOOK_APP_ID');?>" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:70px; height:35px;" allowTransparency="true"></iframe>';
                }
            }
            document.getElementById('like_buttons').innerHTML = o;
        });
    }

    // Controlla se la pagina è presente nella lista
    function checkPageList(page, pages){
        var l = pages.length;
        for(var i=0;i<l;i++){
            if(pages[i]==page) return true;
        }
        return false;
    }
    
    // Restituisce l'URL della pagina
    function getPageUrl(pid, pages){
        var l = pages.length;
        for(var i=0;i<l;i++){
            if(pages[i].page_id==pid){
                return pages[i].page_url;
            }
        }
        return '';
    }

    // Inizializzo l'applicazione
    FB.init({
        appId: '<?=getenv('FACEBOOK_APP_ID');?>', // ID Applicazione
        status: true, // Controlla il login
        cookie: true, // Abilita i cookie
        xfbml: true  // Stampa il codice XFBML
    });
    
    // Controllo se l'utente ha fatto il login a Facebook e se è collegato all'applicazione
    FB.getLoginStatus(function(response){
        if (response.status === 'connected') {
            //Se l'utente è collegato all'applicazione, stampo solo i bottoni delle pagine di cui non è fan
            var uid = response.authResponse.userID;
            var query = FB.Data.query('SELECT page_id FROM page_fan WHERE uid={0} AND page_id IN('+page_list.join(',')+')', response.authResponse.userID);
            query.wait(function(rows){
                var pages = [];
                var l = rows.length;
                for(var i=0;i<l;i++){
                    pages[pages.length] = rows[i].page_id;
                }
                printLikeButtons(pages);
            });
        } else {
            //Se l'utente non è collegato, stampo i bottoni di tutte le pagine
            printLikeButtons([]);
        }
    });
};

// Carico in modo asincrono l'SDK per JavaScript di Facebook
(function(d){
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
</body>
</html> 

Ho creato un'applicazione su Heroku per fare i test e ho inserito il codice dentro un file "index.php".
L'unica modifica da fare è quella di inserire gli ID delle pagine che si vogliono controllare dove c'è:
Codice:
var page_list = [1234567890, 9876543210];
Eventualmente si possono effettuare altre modifiche per cambiare la grafica dell'applicazione.
Mattia!
Cita messaggio


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  convertire video stream in diretta facebook Chandler 7 13.698 07/06/2017 13:00
Ultimo messaggio: Mattia
  Far aprire una nuova scheda da pulsante veeto 2 8.736 10/12/2008 00:19
Ultimo messaggio: veeto
Smile Funzione "Aggiorna" con Pulsante veeto 1 6.582 03/09/2008 17:52
Ultimo messaggio: Mattia

Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)