Facebook generieren Öffnen Sie Graph Meta-Tags dynamisch
Wie der Titel schon sagt, ich versuche zu generieren, Facebook Open Graph meta tags dynamisch, aber ich kann Sie nicht arbeiten. Ist es überhaupt möglich?
UPDATE:
Schließlich ich es geschafft habe mit Hilfe von @Saccharin. Der folgende code funktioniert für mich:
<?php
$params = array();
if(count($_GET) > 0) {
$params = $_GET;
} else {
$params = $_POST;
}
//defaults
if($params['type'] == "") $params['type'] = "restaurant";
if($params['locale'] == "") $params['locale'] = "en_US";
if($params['title'] == "") $params['title'] = "default title";
if($params['image'] == "") $params['image'] = "thumb";
if($params['description'] == "") $params['description'] = "default description";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MY_APP_NAME_SPACE: http://ogp.me/ns/fb/MY_APP_NAME_SPACE#">
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<!-- Open Graph meta tags -->
<meta property="fb:app_id" content="MY_APP_ID" />
<meta property="og:site_name" content="meta site name"/>
<meta property="og:url" content="http://mysite.com/index.php?type=<?php echo $params['type']; ?>&locale=<?php echo $params['locale']; ?>&title=<?php echo $params['title']; ?>&image=<?php echo $params['image']; ?>&description=<?php echo $params['description']; ?>"/>
<meta property="og:type" content="MY_APP_NAME_SPACE:<?php echo $params['type']; ?>"/>
<meta property="og:locale" content="<?php echo $params['locale']; ?>"/>
<meta property="og:title" content="<?php echo $params['title']; ?>"/>
<meta property="og:image" content="http://mysite.com/img/<?php echo $params['image']; ?>.png"/>
<meta property="og:description" content="<?php echo $params['description']; ?>"/>
</head>
</html>
Die url, ich Stelle in den Facebook-debugger kann jetzt enthalten die dynamischen Parameter oder gar keine, alle oder nur eine Auswahl und in beliebiger Reihenfolge etwa so aus:
http://mysite.com/index.php?type=restaurant&Titel=luigis
oder dies:
http://mysite.com/index.php?locale=de_DE&Beschreibung=hi&type=bistro
Haben, erreicht: ich kann jetzt veröffentlichen Aktionen des Benutzers stream:
function postRestaurant() {
FB.api('me/MY_APP_NAMESPACE:have_lunch?\
start_time=2000-12-12T04:00:00&\
expires_in=7200&\
restaurant=' + encodeURIComponent(getRedirectURI() + '?type=restaurant' + '&description=arnold' + '&title=stalone'), 'post', function (response) {
if (!response || response.error) {
console.log('postRestaurant: Error occured => ' + response.error.message);
} else {
console.log('postRestaurant: Post was successful! Action ID: ' + response.id);
}
});
}
Funktioniert wie ein Charme! : ]
InformationsquelleAutor der Frage borisdiakur | 2011-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, ich möchte noch einmal betonen, ich bin fast positiv, dass Ihr problem aufgrund der Tatsache, dass die url, die Sie übergeben, in der debugger wird nicht dynamisch generiert. Mit dem url-tag im wesentlichen wirkt wie ein redirector. Es sei denn, es ist die exakt gleiche (also die meta-tags auf die url, meta-Objekt-ist die gleiche, wie Sie auf die url, die Sie auf der Durchreise sind), so wie die url, die Sie testen, werden Sie nicht bekommen, die Ergebnisse, die Sie suchen.
Den meta-tag
muss dynamisch generiert werden. Der debugger wird umgeleitet, um Ihre Standard-index-Seite statt der dynamisch generierten Seite.
Ich zum Beispiel eine id zuweisen jedes Objekt das ich verwende, und so habe ich etwas wie das folgende
Ich pass auf, dass sich die genaue url in den debugger, und somit die Letzte Seite der debugger-Länder darauf, die genaue url.
Auch in den folgenden
wie ist die Eigenschaft dynamisch generiert? Haben Sie daran denken, in Ihrem code etwa wie folgt?
Sie auch zu sein scheinen, schieben sich alles in die url, die ist gefährlich und kann dazu führen, riesige Kopfschmerzen, das könnte auch das Problem hier. Stattdessen schieben sich nur für eine Sache , zB ?type=bistro und dann übertragen Sie die notwendigen Daten aus der DB.
Ich würde empfehlen, dynamisch zu generieren die meisten OG-tags basierend auf einem object_id. Speichern Sie die relevanten OG info für alle object_id, und dann propagieren Sie, wenn auf Sie zugegriffen wird. Auf diese Weise können Sie auch problemlos erweitern und Bearbeiten Sie die tags, die Sie verwenden, wenn OG ist aktualisiert.
Wenn Sie Probleme mit der OG sollten Sie nicht zögern Sie zu posten, als neue Fragen, statt Stellungnahmen, die ich garantiert auch andere Leute das gleiche problem haben.
InformationsquelleAutor der Antwort saccharine
Ich bin mir sehr sicher, dass Facebook nicht mehr krabbelt alle urls mit Parametern. Es ist immer "Umleitungen" um eine abgespeckte version der url.
In OPs Beispiel:
http://example.com/index.php?type=restaurant&Titel=luigis
wird
http://example.com/index.php
unabhängig davon, was Sie tun. Nächste Sache, die ich gesehen habe um eine Erklärung zu finden ist diese:
InformationsquelleAutor der Antwort ggwarpig
Wenn Sie auf die Get link Code in Ihre Objekt-Typen, haben Sie versucht, kopieren Sie den code gab es Sie?
Ich würde versuchen, einfügen auf Ihren web -, und dann, wenn es funktioniert, replizieren Sie die html-Ausgabe.
Versuchen Sie es ohne die DOCTYPE-tag.
Hier ein Beispiel, was ich habe, und ich sehe nicht ein, diese tags über: fb:app_id, nicht sicher, ob es einen Unterschied macht.
Auch, sollte die og:url beinhalten auch die Variablen am Ende?
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# website: http://ogp.me/ns/website#">
<meta property="fb:app_id" content="1234567888">
<meta property="og:url" content="http://mysite.com/index.php?type=MY_APP_NAMESPACE%3Abistro">
InformationsquelleAutor der Antwort Joao B
Ja, funktioniert wie ein Charme, aber man braucht Umkodierung für mich. Ich habe eine neue Seite erstellen, wie diese:
InformationsquelleAutor der Antwort Oscar Pascual
Für Joomla Opengraph Meta dynamisch:
InformationsquelleAutor der Antwort MilosK