使用PHP填充Pinterest Pin It按钮

时间:2012-03-01 02:02:37

标签: php url pinterest

我正在尝试使用Pin It按钮,但它不会自动从页面获取URL和图像。如何使用PHP动态填充按钮?

有点像example,但没有使用Genesis框架。

4 个答案:

答案 0 :(得分:5)

我还想构建一个动态填充的Pinterest按钮,所以我把它放在一起。它利用simpleHTMLDom parser来抓取页面上的第一个图像(对于图像)和页面上的第一个段落(对于描述)。可以修改这些选择器以获取正确的图像/文本。有关详细信息,请参阅simpleHTMLDom documentation

<?php
// Include our dom parser
include('simple_html_dom.php');

// Get the current page URL
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

$thispage = curPageURL();

// Grab our data
$html = file_get_html($thispage);
$imgtag = $html->find('img', 0)->src;
$desc = $html->find('p', 0)->plaintext;

// Build the URL
$pinURL = 'http://pinterest.com/pin/create/button/?url=' . $thispage . '&media=' . $imgtag . '&description=' . $desc . '';

$html->clear(); 
unset($html);
?>

现在我们只是在按钮链接中回显新网址。

<a href="<?php echo $pinURL ?>" class="pin-it-button" count-layout="horizontal">Pin It</a>
<script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script>

答案 1 :(得分:1)

这是从Pinterest为Pin It按钮创建的代码。

请注意包含php标记。将您自己的PHP代码放在那里以填充url,media和description参数。完成。

<a href="http://pinterest.com/pin/create/button/?url=<?php echo url_php_function(); ?>&media=<?php echo media_php_function(); ?>&description=<?php echo description_php_function(); ?>" class="pin-it-button" count-layout="horizontal">Pin It</a>

答案 2 :(得分:1)

http://pinterest.com/about/goodies/它们似乎是在编码网址,或者至少用“%3A%2F%2F”代替'://',但上面的示例都没有遵循此模式或使用urlencode。 / p>

我想一些试验和错误是为了我。

答案 3 :(得分:0)

以下是新闻聚合器中功能方法的代码片段。如果我可以使用simpleHTMLDom找到图像,那么推荐的帖子会获得Pin It按钮。

            // Pinterest
        /*
        Pinterest requires two bits of code, something like this:
        <a href="http://pinterest.com/pin/create/button/?url=http%3A%2F%2Fwww.muschamp.ca%2F&media=http%3A%2F%2Fwww.muschamp.ca%2Fimage.jpg&description=whatever" class="pin-it-button" count-layout="horizontal"><img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a>
        Where you want the button ie here, and 
        <script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"></script>
        directly after the body tag just like Facebook's new style button 
        */
        // I definitely miss how I did things in my previous code base, if there is no image should not be able to pin...
        if(($image != NULL) && ( ! strpos($image->src, '+')) && ( ! strpos($image->src, '%'))
            && (preg_match('|^http?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $image->src)))
        {
            // If I don't display a valid image, no sense in showing a Pin It button 
            $html .= '<li>'; // Opening <li>
            // May want a more elaborate description...
            $html .= '<a href="http://pinterest.com/pin/create/button/?url=' . $item->get_permalink() . '&media=' . $image->src . '&description=' . $item->get_title() . '" class="pin-it-button" count-layout="horizontal"><img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a></li>';
        }

如果证明有必要在测试中证明某些有效的URL可能不被Pinterest的JavaScript认为是有效的,至少这是我在测试中发现的。似乎'%'和'+'字符特别麻烦。 Pinterest不会让你固定小图片甚至是非常大的图像,但是因为我也使用PHP来调整我的新闻聚合器中的图像大小,所以我不在这里测试它,但是当我向你的Pinterest添加Pinterest时,它仍然存在。应用