BigThink

Creare il layout di un’applicazione Facebook con FBML

Costruire un'applicazione FacebookOggi vedremo la terza parte della guida alla creazione di applicazioni Facebook, concentrandoci in particolar modo sul codice FBML.

Se vi siete persi le prime due parti, rimediate subito:

Il codice FBML è un’estensione dell’HTML che permette di costruire il layout della nostra applicazione e di inserire elementi che sono propri dell’interfaccia di Facebook, come pulsanti, form, foto, elementi multimediali, popup e molto altro.

Le pagine, infatti, sono un misto di HTML e d FBML che verrà poi parsato da Facebook, il quale si occuperà di sostituire i tag speciali con l’HTML e gli stili necessari.

Per un elenco di tutti i tag a disposizione vi rimando a questa pagina della wiki, mentre in questo articolo vedremo più nello specifico come organizzare gli elementi di layout.

Prima di iniziare, vi consiglio di ripassare come abbiamo strutturato i file dell’applicazione la volta scorsa, in particolare andremo ad agire su index.php e config.php.

Creiamo ora un nuovo file, header.php, dove metteremo gli elementi di layout comuni a tutte le pagine, come l’header ed il menu.

L’header

Iniziamo la nostra pagina con l’header contenente il titolo e l’icona dell’applicazione. E’ sufficiente usare questo tag:

<fb:header>Titolo Applicazione</fb:header>

L’icona comparirà di fianco al titolo.

Il menu a tab

Nel caso avessimo più pagine, quello che non può mancare è un bel menu a tab, come ogni applicazione che si rispetti. Anche in questo caso esistono dei tag appositi che facilitano il tutto:

<fb:tabs>
    <fb:tab-item href="<?php echo $url; ?>/" title="Home" <?php echo ($page == 'index.php') ? 'selected="true"' : ''; ?> />
    <fb:tab-item href="<?php echo $url; ?>
/invite.php" title="Invita Amici" <?php echo ($page == 'invite.php') ? 'selected="true"' : ''; ?> />
    <fb:tab-item href="http://www.bigthink.it" title="BigThink.it" align="right" />
</fb:tabs>

Ricordate la variabile $url che abbiamo inserito nel file config.php della scorsa lezione? Ecco che ora ci torna utile. Aggiungete a tale file anche la variabile $page, in modo che contenga il nome della pagina corrente:

$page = basename($_SERVER['PHP_SELF']);

Come potete vedere, il codice precedente crea un menu a tre tab: i primi due sono le pagine interne e rimangono selezionate quando siamo sulla pagina relativa. Il terzo è il link al mio blog e ho deciso di separarlo, allineandolo a destra grazie all’attributo align.

Menu a tab

Menu azioni

Un altro tipo di menu che può tornarci utile è quello con le possibili azioni che possiamo compiere:

<fb:dashboard>
    <fb:action href="new.php">Crea un nuovo album</fb:action>
    <fb:action href="you.php">Le tue foto</fb:action>
</fb:dashboard>

Come potete vedere, le varie voci andranno inserite all’interno di una dashboard.

Menu azioni

Messaggi e notifiche

Altro elemento utile per interagire con l’utente sono i messaggi di errore e le notifiche a schermo, ad esempio per mostrare informazioni dopo il submit di un form. Anche qui abbiamo dei tag predefiniti:

<fb:error>
    <fb:message>Attenzione</fb:message>
    Non hai compilato tutti i campi.
</fb:error>

<fb:success>
    <fb:message>Successo!</fb:message>
    Modifiche salvate correttamente
</fb:success>

E questo è il risultato:

Messaggio di errore

Il foglio di stile

Se grazie all’FBML possiamo utilizzare l’interfaccia di Facebook, potremmo anche aver bisogno di definire dei nostri propri stili CSS. L’importazione del foglio di stile avviene nel modo classico, dobbiamo solo ricordarci che viene salvato in cache e potrebbe non aggiornarsi se facciamo delle modifiche. Ecco quindi come fare:

<?php $ts = filemtime("style.css"); ?>
<link rel="stylesheet" type="text/css" media="screen" href="<?php echo $myurl; ?>/style.css?ts=<?php echo $ts; ?>" />

Al nome del file viene aggiunto il timestamp dell’ultima modifica, in modo che la cache sia sempre sincronizzata.

Vi rimando invece a questa pagina per una spiegazione dettagliata degli stili predefiniti di Facebook.

Si conclude così questa terza lezione alle applicazioni Facebook. Nella prossima parte vedremo come creare dei form ed esploreremo nel dettaglio altre funzionlità che il framework ci mette a disposizione.

Stay Tuned!

Articolo scritto da Ghido

Fondatore di BigThink.it, si occupa dello sviluppo e del coordinamento dei progetti tecnologici. Specializzato nel Marketing su Facebook e nello sviluppo di Applicazioni Social, fa consulenza e formazione ad aziende ed agenzie.

Leggi anche...

BigThink allo Young Digital Lab di Roma!

BigThink allo Young Digital Lab di Roma!

Michele Polico mi ha invitato a partecipare come relatore al corso di Web Marketing a Roma organizzato da Young Digitals. Lo Young Digital Lab si terrà il 24 e 25 Febbraio, due intense giornate di formazione dove verranno affrontati i temi caldi del web: dal Social Web alle strategie e tattiche sui Social Media, ...
Trovare domini scaduti usando Google

Trovare domini scaduti usando Google

Nell'articolo Comprare e vendere domini vi avevo spiegato i trucchi base per trovare buoni domini e rivenderli. Segnalavo anche degli ottimi tools online che, giornalmente, mettono a disposizione una lista di domini in pending delete. Oggi vedremo passo-passo come utilizzare Google a questo scopo. 1. Google. Decidiamo, ad esempio, che ci interessa trovare i ...
Ebook gratis in italiano su Facebook e Twitter

Ebook gratis in italiano su Facebook e Twitter

Per la gioia degli amanti dei libri virtuali, ho stilato una nuova lista di ebook gratuiti in italiano. Oggi tocca agli ebook su Facebook e Twitter, dalle guide base a quelle più avanzate. Potrai scoprire come utilizzare i due Social Network a livello utente, oppure a livello esperto, per promuovere la tua attività o il ...
Come lanciare un Contest su Facebook

Come lanciare un Contest su Facebook

Tempo fa avevo parlato di quanto fosse difficile farsi autorizzare un contest da Facebook. A meno che non si volesse spendere 10.ooo$, la soluzione finale era quella di lanciare comunque il concorso, a patto che seguissero le Linee Guida. UPDATE 02-12-10: Facebook ha finalmente cambiato la sua Policy e ora non richiede più l'autorizzazione ...
Video Tutorial: Installare Facebook Connect su WordPress

Video Tutorial: Installare Facebook Connect su WordPress

Vi ricordate la mia guida per installare Facebook Connect su WordPress? Ha avuto ed ha ancora parecchio successo: è stata segnalata da moltissimi siti ed ha superato i 200 commenti. L'ho continuamente aggiornata alle nuove versioni del plugin ed ottimizzata per le vostre esigenze. Ora Stefan Des ha pubblicato un video tutorial, basato sui primi ...

46 Commenti

  1. iris

    ma quindi io non posso prepararmi la pagina HTML con programmi tipo Nuv e poi fare copia>incolla sulla pagina?

    31 ottobre 2011, 12:04
  2. vincenzo

    Ciao,
    io vedo che mi cambia i css
    es:
    se nel css al div #ciao ho come immagine di background http://google.it/image.jpg
    in facebook controllando con firebug nella mia app il css mi segna un altra immagine vuota

    20 luglio 2010, 19:40
  3. Io vorrei inserire in un riquadro FBML
    questo codice solo che non me lo legge

    3 giugno 2010, 15:54
  4. Ciao, volevo sapere perchè la mia applicazione non interpreta i tag FBML.
    Nel senso che viene eseguito tutto il codice php(compreso quello che utilizza le API Facebook), ma ogni volta che faccio un tag del tipo mi salta tutta la parte del tag.

    Per esempio il codice è:
    echo “Ciao, !”;

    Ed il risultato che mi trovo è:
    Ciao, !

    anzichè Ciao, Matteo Rizzi!

    Spero saprai aiutarmi,grazie

    24 maggio 2010, 23:14
    • Ciao, nelle impostazioni hai settato l’applicazione come FBML invece di IFRAME?

      25 maggio 2010, 11:24
      • Grazie, ho risolto il prblema…era perche usando un localhost come apache non andava a collegarsi direttamente con facebook.
        Ora che uso uno spazio web come altervista è tutto ok.
        Un ultima cosa:
        Ci sono dei metodi come notifications_send che utilizza le API facebook che il wiki di facebook developer dice che sono deprecati e effettivamente utilizzandoli non funzionano.
        Secondo te c’è bisogno di una nuova versione della classe facebook.php e facebook platform di php5 ??
        Oppure questi metodi non sono piu utilizzabili per le applicazioni facebook?
        Grazie

        25 maggio 2010, 19:46
  5. Neifile

    ciao a tutti io ho lo stesso problema di benni!!!!vi prego aiutatemi!

    16 maggio 2010, 11:23
  6. Benni

    Allora, salve a tutti. Io parto da zero, e vorrei mettere foto/scritte ai lati della mia pagina su fb, ma non ho la più vaga idea nemmeno per cominciare! Non potreste rendere il tutto un po’ più semplice? xD
    Grazie mille (:

    14 maggio 2010, 21:42
  7. federico

    Complimenti ancora per la guida!

    Ma volendo io posso personalizzare l’idex di application builder?

    6 maggio 2010, 16:54
  8. Luca

    Grazie ancora per il chiarimento! Solo che se io imposto come modello->iframe poi i tag fb:header, fb:tabs ecc non funzionano… ho dimenticato di settare qualcosa?!

    12 aprile 2010, 11:12
    • Se imposti il modello iframe non puoi utilizzare i tag del FBML (facebookmarkup language) quindi le scelte sono due:
      o ti accontenti di includere le tue pagine senza sfuttare FBML (quindi imposti iframe) oppure devi settare FBML.

      Questo è quello che ho capito :D
      ciao e complimenenti per le guide
      Marco

      26 aprile 2010, 15:40
  9. Luca

    Ciao, queste guide sono veramente fantastiche… aiutano a capire molto meglio la documentazione ufficiale.

    Mi chiedevo come potrei includere la libreria jquery e un rispettivo plugin utilizzando il modello fbml, e non iframe. Ho provato con il classico tag ma non funziona… in rete ho trovato discussioni in cui si consiglia di usare fbjs.

    Grazie in anticipo, un saluto!

    8 aprile 2010, 14:09
    • Ciao. Se hai un’applicazione FBML, puoi usare solo un set limitato di javascript, oltre a FBJS. Se provi ad includere JQuery, non funzionerà.

      Per poter usare quello che vuoi, l’unico modo è sviluppare un’app iframe.

      8 aprile 2010, 14:15
      • Luca

        Grazie per la risposta tempestiva, veramente gentilissimo!
        Sinceramente preferivo utilizzare fbml, per mantenere l’interfaccia dell’app il più possibile simile a facebook.

        In alternativa ho visto che nella documentazione c’è un tag chiamato , usandolo non potrei includere la libreria jquery?

        Volendo potrei anche evitare di usare jquery, mi serviva perchè ho dei div affiancati con float:left e float:right, e volevo usare un plugin per mantenere la stessa altezza tra i due div (equalheight.js)… ma so che tu mi consiglierai di usare i css, dico bene? Grazie ancora e un saluto!

        8 aprile 2010, 18:21
        • Luca

          Opsss, è scomparso il nome del tag… fb:iframe

          8 aprile 2010, 18:22
          • Dunque: se crei un’app con iframe, puoi comunque utilizzare i tag FBML all’interno e anche usare FBJS.

            Il tag <fb:iframe> serve ad inserire pagine dentro all’iframe e non librerie javascript ^^

            Mi sa che ti tocca usare i css per risolvere il problema :P

            9 aprile 2010, 11:48
  10. bravo ghido qst è una bella cosa dare supporto io che sono web engineeer ti seguo perchè spesso mi rinfreschi la memoria ahah e pi ho scoperto cose su face interessanti,ma dimmi come caspita fai a creare pagine interamente colorate al posto del default di facebook azz grazie

    2 aprile 2010, 02:36
  11. mery

    ho creato il riquadro fbml ma x sbaglio l ho spostato in bacheca e mi spunta come scheda non so come rimetterlo nei riquadri.mi spieghi come si fa ke sto impazzendo.grazie

    20 dicembre 2009, 09:46
  12. ciao, complimenti per gli articoli. Ho dei problemi, sicuramente errore mio, con i menu’ a tab, mi da errore 404. la cosa strana è che se clicco sul tab il link alla pagina è giusto, mentre quando viene visualizzato l’errore mi viene riproposto il link senza ultimo slash:

    <fb:tab-item href="/invite.php” title=”Invita Amici” />

    nell’errore 404 cosi’… a video: http://apps.facebook.com/abtestapiinvite.php

    27 novembre 2009, 07:10
    • Non ti funziona perchè non hai messo l’indirizzo completo nel tab, come ho fatto io nel mio codice, usando la variabile: $url.
      Serve il percorso completo della pagina ;)

      28 novembre 2009, 14:14
  13. Hai x caso risolto? da lo stesso errore a me x il tag body
    Grazie ragazzi a chi risponderà :-D

    20 ottobre 2009, 22:07
    • risolto :-)

      24 ottobre 2009, 00:35
      • Ciwawa pawwo

        Dato che tu hai risolto con i tag body mi spiegheresti brevemente come hai risolto?

        24 ottobre 2009, 01:37
      • alberto

        ciao! come hai risolto? grazie

        30 maggio 2011, 15:49
  14. FBML Error (line 32): illegal tag “noscript” under “fb:canvas” -> questo errore a cosa è dovuto? Grazie in anticipo ragazzi!

    29 luglio 2009, 12:30
  15. Renato

    Ciao!

    la guida è ottima ho però un problema…

    ho creato un’applicazione di prova inserendo l’header, il menu e le azioni.

    Il problema è che viene visualizzato tutto come se non esistesse alcun foglio di stile (ho provato sia in facebook che nel sito dell’applicazione ).

    Bisogna forse includere qualche libreria FBML?

    Tnx

    21 luglio 2009, 15:00
    • Renato

      mh… un colpo di genio ( o scemità se vogliamo… ;)

      Giusto per segnalarlo a qualche sbadato come me:

      Ho risolto modificando in questo modo:

      impostazioni applicazione > modelli > Metodo di restituzione: FBML

      Avevo impostato come “iframe”.

      Grazie lo stesso ;)

      21 luglio 2009, 15:04
  16. Ciao, ottima guida :)

    A quando la prossima con i form? :P

    6 luglio 2009, 09:46
    • Già, hai ragione…. Mi sono un po’ fermato, in effetti.
      Vedrò di proseguire la guida appena riesco! ;)

      12 luglio 2009, 02:16
      • Isabella

        ciao Ghido, una mia amika su facebook sulla sua pagina ha creato un riuadro con delle scritte anche io voglio ma come posso fare??

        12 aprile 2010, 12:23

13 Citazioni