Dynamic Facebook Open Graph tags possible?

前端 未结 3 1094
北恋
北恋 2020-11-30 10:15

I\'m dynamically changing my and tags using jQuer

相关标签:
3条回答
  • 2020-11-30 10:32

    Facebook does not parse JavaScript at all, you can´t use dynamic Open Graph tags. It does not really make sense to change them on the fly anyway.

    You can only change the OG tags dynamically on the server - obviously. For example: https://yourdomain.com/dynamicogtags.php?title=xxx&description=xxx

    <meta property="og:title" content="<?php echo $_GET['title'];?>">
    

    Not sure if that´s what you want to do though, the URL looks pretty ugly that way. Rewrite would be nice, of course.

    You also may want to try something like prerender.io, but i am not sure if it will handle dynamic og tags.

    0 讨论(0)
  • 2020-11-30 10:41

    Try this it worked for me.

    <?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://URL/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://URL/img/<?php echo $params['image']; ?>.png"/>
            <meta property="og:description" content="<?php echo $params['description']; ?>"/>
    
        </head>
    </html>
    
    0 讨论(0)
  • 2020-11-30 10:53

    As said previously, Facebook doesn't parse JavaScript at all.

    One way of doing it (the way I do it) is to use a prerendering service like prerender.io to prerender your pages and redirect requests coming from web crawlers to that prerendering server based on the user-agent (you can easily find how to do that with your Nginx/Apache server on google).

    Prerendering services produce an HTML/CSS render of your page, but they wait until the page is fully loaded and the JavaScript is executed before doing so. That way, Facebook gets a render of your website where the JavaScript has been executed and the OpenGraph tags are set correctly!

    Prerender is open-source so you can run your own prerender server for free!

    0 讨论(0)
提交回复
热议问题