Заполните Pinterest Pin It Button с помощью PHP - PullRequest
4 голосов
/ 01 марта 2012

Я пытаюсь использовать кнопку «Прикрепить», но она не получает автоматически URL-адрес и изображение со страницы.Как динамически заполнить кнопку с помощью PHP?

Вроде как пример , но без с использованием фреймворка Genesis.

Ответы [ 4 ]

5 голосов
/ 12 марта 2012

Я также хотел создать динамически заполняемую кнопку 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 в ссылке на кнопку.

1 голос
/ 31 марта 2012

Глядя на http://pinterest.com/about/goodies/, кажется, что они кодируют URL или по крайней мере заменяют что-то вроде ': //' на '% 3A% 2F% 2F', но ни один из приведенных выше примеров не следует этому шаблону или не использует urlencode.

Полагаю, мне нужно несколько проб и ошибок.

1 голос
/ 06 марта 2012

Это код, созданный из 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>

0 голосов
/ 04 ноября 2013

Вот фрагмент кода из функционального метода в агрегаторе новостей. Для постов, на которые добавлены ссылки, отображается кнопка «Прикрепить», если я могу найти изображение с помощью простого HTML.

            // 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-адреса могут быть не приняты как допустимые JavaScript в Pinterest, по крайней мере, это было то, что я обнаружил при тестировании. Похоже, что символы «%» и «+» особенно неприятны. Pinterest не позволит вам прикреплять маленькие изображения или даже действительно большие изображения, но так как я также использовал PHP для изменения размера изображений в своем новостном агрегаторе, я не проверяю это здесь, но это то, что нужно учитывать при добавлении Pinterest применение.

...