Magento: добавьте кнопку Pinterest «Pin it» на страницу с описанием товара - PullRequest
3 голосов
/ 27 января 2012

Я пытаюсь добавить кнопку "Прикрепить это" из Pinterest к страницам сведений о продукте на нашем веб-сайте.

Пока я пробовал:

<a href="http://pinterest.com/pin/create/button/?url=<?php echo trim(Mage::registry('current_product')->getProductUrl()) ?>&media;=<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(265) ?>&description;=<?php echo Mage::registry('current_product')->getName(); ?>" class="pin-it-button" count-layout="none">Pin It</a>
<script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script>

и

<a href="http://pinterest.com/pin/create/button/?url=<?php echo trim(Mage::registry(\'current_product\')->getProductUrl()) ?>&media;=<?php echo Mage::helper('catalog/image')->init(Mage::registry('current_product'), 'small_image')->resize(900,900);?>&description;=<?php echo Mage::registry('current_product')->getName(); ?>" class="pin-it-button" count-layout="none">Pin It</a>
<script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script>

С помощью любого из них я могу получить URL продукта и название продукта, но не могу получить изображение продукта. Так что пост не работает (для работы нужны все 3 элемента: URL, Media и Description)

Когда я пытаюсь это сделать:

<a href="http://pinterest.com/pin/create/button/?url=http://eberjey.com&media;=<?php echo Mage::helper('catalog/image')->init(Mage::registry('current_product'), 'small_image')->resize(900,900);?>&description;=<?php echo Mage::registry('current_product')->getName(); ?>" class="pin-it-button" count-layout="none">Pin It</a>
<script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script>

Я могу опубликовать изображение продукта, но URL не является динамическим (я просто использую абсолютный URL для веб-сайта).

Есть какие-нибудь идеи о том, как можно реализовать эту кнопку на страницах сведений о моем продукте?

Ответы [ 8 ]

6 голосов
/ 13 июля 2012

Большинство ответов здесь не выполняют urlencode () строку запроса, которая была сгенерирована для ссылки на интерес, поэтому я немного удивлен, что они работают - мой подход был вариантом Эндрю, который использует http_build_query () длясделайте это для меня.

Следующий код будет работать при размещении внутри template / catalog / product / view.phtml:

<!--START PIN BUTTON-->
<?php
    $_pinlink['url'] = $_product->getProductUrl();                      
    $_pinlink['media'] = $this->helper('catalog/image')->init($_product, 'image')->__toString() ;
    $_pinlink['description'] = $_helper->productAttribute($_product, $_product->getName(), 'name') . " - " . strip_tags($_product->getDescription());                                                                                   
?>
<a href="http://pinterest.com/pin/create/button/?<?php echo http_build_query($_pinlink) ?>" class="pin-it-button" count-layout="horizontal"></a>                    
<script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"></script>
<!--END PIN BUTTON-->

Я также заметил, что Pinterest удаляет все html-теги изопубликованные описания, так что проходить их, кажется, не имеет особого смысла - отсюда и метки в описании.

1 голос
/ 01 февраля 2012

Мне кажется, это работает:

<a href="http://pinterest.com/pin/create/button/?url=<?php echo trim(Mage::registry('current_product')->getProductUrl()) ?>&media=<?php echo $this->helper('catalog/image')->init($_product, 'image') ?>&description=<?php echo Mage::registry('current_product')->getName(); ?>" class="pin-it-button" count-layout="none">Pin It</a>
<script type="text/javascript" src="http://assets.pinterest.com/js/pinit.js"></script>

Моя единственная проблема в том, что он дает URL-адрес кэшированного изображения, а не прямой.Я не знаю, насколько постоянным является этот кэшированный URL.Казалось бы, лучше обратиться к «источнику», а не кешированной версии в этом случае.Но я не уверен ....

0 голосов
/ 11 июля 2015

Это работает для меня:

<a href="//www.pinterest.com/pin/create/button/" data-pin-do="buttonPin" data-pin-config="beside" >
<img src="//assets.pinterest.com/images/pidgets/pinit_fg_en_rect_white_20.png" /></a>
   <script type="text/javascript">
   (function(d){
      var f = d.getElementsByTagName('SCRIPT')[0], p = d.createElement('SCRIPT');
      p.type = 'text/javascript';
      p.async = true;
      p.src = '//assets.pinterest.com/js/pinit.js';
      f.parentNode.insertBefore(p, f);
   }(document));
</script>

Но он использует кэшированные изображения ... Я пытаюсь использовать исходный путь изображения, но безуспешно до сих пор.

Надеюсь, это поможет

0 голосов
/ 03 мая 2012

Вот моя версия кнопки Pin It для страниц продукта magento, и она прекрасно работает. Я использую каноническую ссылку продукта. Для описания: сначала я вставляю название продукта, затем два перерыва (% 0A), а затем описание продукта. Код htmlentities для описания продукта преобразует любые ваши кавычки, чтобы Pinterest мог их прочитать.

<!--START PIN BUTTON-->
    <a href="http://pinterest.com/pin/create/button/?url=<?php echo $_product->getProductUrl() ?>&media=<?php echo trim($this->helper('catalog/image')->init($_product, 'image')); ?>&description=<?php echo trim(Mage::registry('current_product')->getName()); ?>%20%0A%0A<?php echo htmlentities($_product->getdescription(), ENT_QUOTES) ?>" class="pin-it-button" count-layout="horizontal"></a>

<script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"></script>
<!--END PIN BUTTON-->
0 голосов
/ 22 марта 2012

Вот что вам нужно сделать:

Скопируйте и вставьте этот код в файл theme.phtml тем и все готово:

<a href="http://pinterest.com/pin/create/button/?media=<?php echo $this->helper('catalog/image')->init($_product, 'small_image'); ?>&description=<?php echo $_product->getdescription() ?>&url=<?php echo $_product->getProductUrl() ?>" class="pin-it-button" count-layout="horizontal"><img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a>

<script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"></script>

Будет загружено описание продукта, изображение и ссылка

Иногда, если вы позже поместите URL-адрес в динамический URL-адрес, он зависнет при загрузке. Так что просто скопируйте / вставьте код выше и все готово. Настройка не требуется.

0 голосов
/ 21 февраля 2012

URL, который вы генерируете, имеет точку с запятой после каждого параметра. Это намеренно? (... заменяет ваши <? php ?> блоки)

<a href="http://pinterest.com/pin/create/button/?url=...&media;=...&description;=..." class="pin-it-button" count-layout="none">Pin It</a>

&media;, &description;.

Попробуйте удалить точку с запятой.

Кроме того, если ваш вывод не выполняется автоматически через HTML, амперсанды должны быть объектами HTML: &amp;media= и &amp;description=.

0 голосов
/ 01 февраля 2012

Попробуйте добавить изображение в Pinterest.Это хорошо сработало для меня.

    $this->helper('catalog/image')->init($_product, 'image')->resize(150)
0 голосов
/ 28 января 2012

Вы когда-нибудь пытались получить актуальный URL продукта в своем коде?В результате на странице просмотра продукта, URL доступного продукта, просто получите этот URL, как показано ниже:

$curProductUrl = $this->helper('core/url')->getCurrentUrl();

// or we can take product id then use in the code
$_product = $this->getProduct();  
$_id = $_product->getId();  

$_productUrl = $_product->getProductUrl();
$_smallImageUrl = $_product->getSmallImageUrl();
...