我正在尝试使用Pin It按钮,但它不会自动从页面获取URL和图像。如何使用PHP动态填充按钮?
有点像example,但没有使用Genesis框架。
答案 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时,它仍然存在。应用