Ik ben er een tijd mee bezig geweest om dit uit te vogelen, maar heb nu een oplossing. Nog niet perfect, maar wel al veel beter dan domweg het facebook script plaatsen.
Facebook gebruikt de URL en de <title>-tag van de pagina waar de vind-ik-leuk-button op staat. Het gebruikt ook de <meta name="description">-tag, indien beschikbaar. Wanneer die <meta>-tag niet beschikbaar is, lijkt het (soms) de content van de pagina te gebruiken.
1) De facebook vind-ik-leuk-button code
Zet de facebook code in je nieuws-sjabloon, bijv. direct achter de titel in het artikelsjabloon.
Code: Select all
<h3 id="NewsPostDetailTitle">{$entry->title|cms_escape:htmlall}</h3>
{* start FACEBOOK CODE *}
<__iframe src="http://www.facebook.com/plugins/like.php?href={$entry->canonical}&layout=standard&show_faces=true&width=450&action=like&font&colorscheme=dark&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden;width:450px; height:70px;" allowTransparency="true"></__iframe>
{* end FACEBOOK CODE *}
2) De juiste URL
Merk op hoe de link in de code eruit ziet: href={$entry->canonical}& etc. Op je facebook pagina genereert die link de juiste URL, die direct naar het betreffende nieuws-item verwijst.
De parameters kan je uiteraard naar eigen wens aanpassen.
3) De juiste titel
verbeterde methode, 11-9-2011
Als titel toont Facebook de content van de <title>-tag van de pagina waarop het nieuws-item staat, maar je wilt liever dat Facebook de titel van je nieuwsartikel toont. Daarom laten we de nieuwsmodule de <title>-tag overschrijven.
Onderin het artikelsjabloon zet je de volgende regels, om een alternatieve titel door te geven:
Code: Select all
{* maak alternatieve titel aan *}
{assign var='alt_title' value=$entry->title}
Code: Select all
{* geef nieuwsbericht titel mee in paginatitel *}
{if isset($alt_title)}
<title>{sitename} - {$alt_title}</title>
{else}
<title>{sitename} - {title}</title>
{/if}
Facebook gebruikt de <meta name="description">-tag als beschrijving. Dus als je die tag instelt voor je hele website, ook voor je-nieuws-detailpagina, dan toont facebook altijd de algemene beschrijving van je site en niet de beschrijving van het nieuws-item dat je leuk vindt.
De oplossing hiervoor is nauwelijks elegant te noemen, maar werkt wel (grotendeels). Om te beginnen heb ik de <meta name="description">-tag verwijderd uit de Algemene metadata (Websitebeheer > Algemene instellingen).
Daarna heb ik hem toegevoegd aan de algemene pagina sjabloon:
Code: Select all
{metadata}
{* Don't remove this! Metadata is entered in Site Admin/Global settings. *}
<meta name="description" content="dit is de algemene beschrijving van mijn site" />
Het resultaat is dat alle pagina’s een <meta name="description">-tag hebben, behalve de nieuws detail pagina. Dit is het zwakste deel van mijn oplossing: facebook toont soms de eerste regels van het nieuws-item, soms helemaal niets. Ik kan niet verklaren waarom. Maar in elk geval wordt niet meer de algemene beschrijving van de site getoond, wat toch vooruitgang is.
5) De juiste afbeelding
Hier heb ik niet naar gekeken.
Voor verbeteringen van deze methode houd ik me ten zeerste aanbevolen!!
Frank