4

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

有点像这个例子,但没有使用 Genesis 框架。

4

4 回答 4

5

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

<?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);
?>

现在我们只需在按钮链接中回显该新 URL。

<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>
于 2012-03-12T19:18:56.577 回答
1

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

注意包含 php 标签。将您自己的 php 代码放入其中以填充 url、媒体和描述参数。完毕。

<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>

于 2012-03-06T16:34:27.790 回答
1

查看http://pinterest.com/about/goodies/似乎他们正在对 URL 进行编码,或者至少将 '://' 替换为 '%3A%2F%2F' 但上面的示例都没有遵循这种模式,也不是使用 urlencode。

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

于 2012-03-30T22:46:43.743 回答
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 添加到你的应用。

于 2013-11-04T01:18:50.720 回答