Как динамично генерировать мета-теги протокола Open Graph


<meta property="og:url" content="<?php echo "http://". $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];?>"/>
<meta property="og:description" content=""/> 
<meta property="og:title" content=""/>
<meta property="og:image" content=""/>

Я протестировал файл head.phtml, но я не знаю, как получить атрибуты продукта, такие как sku, color и images.

Я протестировал с помощью $this->helper('catalog/image')->init($_product, 'image'), найденного в media.phtml в мета-теге и получите пустую страницу, но изображения в представлении продукта работают нормально.

Это меня очень смущает.

Author: Marius, 2014-03-06

1 answers

Вам нужно добавить это в один из ваших файлов макета:

<catalog_product_view>
    <reference name="head">
        <block type="core/template" name="open-graph" as="open-graph" template="opengraph/product.phtml" />
    </reference>
</catalog_product_view>

Теперь вам нужно создать файл opengraph/product.phtml внутри вашей темы (app/design/frontend/{package}/{theme}/template/) со следующим содержимым:

<?php $_product = Mage::registry('current_product'); ?>
<?php if ($_product) : ?>
    <meta property="og:url" content="<?php echo "http://". $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];?>"/>
    <meta property="og:description" content="<?php echo htmlspecialchars($_product->getDescription())?>"/> 
    <meta property="og:title" content="<?php echo htmlspecialchars($_product->getName())?>"/>
    <meta property="og:image" content="<?php echo $this->helper('catalog/image')->init($_product, 'image')?>"/>
<?php endif;?>

Если вам нужно включить sku или color туда, вы можете получить их следующим образом:

$sku = $_product->getSku();
$color = $_product->getAttributeText('color');

Очистите кэш, когда закончите.

 12
Author: Marius, 2014-03-06 09:17:03