Добавление тегов Open Graph (meta property og) в Opencart

Добавление метатегов для социальных сетей (Opencart — добавление meta property og) в <head> CMS Opencart (название — og:title, описание — og:description, изображение — og:image и ссылки — og:url).

Код который представлен ниже был написан уже довольно таки давно, не самый актуальный вариант, если интересно как это можно сделать, рекомендую ознакомиться. Если просто нужно вывести теги — вот здесь есть решение (не мое) посвежее, с различными размерами изображений и ценами.

Рекомендованные Для Фейсбука, Вконтакта, Одноклассников

<meta property="og:type" content="website">
<meta property="og:site_name" content="Название сайта">
<meta property="og:title" content="Заголовок">
<meta property="og:description" content="Описание.">
<meta property="og:url" content="https://example.com/page.html">
<meta property="og:locale" content="ru_RU">
<meta property="og:image" content="https://example.com/img.jpg">
<meta property="og:image:width" content="968">
<meta property="og:image:height" content="504">

Для Твиттера и Вконтакта (ВКонтакт выберет для заголовка тот title, который в коде будет расположен ниже):

<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Заголовок">
<meta name="twitter:description" content="Описание.">
<meta name="twitter:image:src" content="https://example.com/img.jpg">
<meta name="twitter:url" content="https://example.com/page.html">
<meta name="twitter:domain" content="example.com">
<meta name="twitter:site" content="@">
<meta name="twitter:creator" content="@...">

Выбор картинки подходящего размера — основная проблема. Даже внутри одной соцсети есть сценарии, в которых изображения безбожно кропятся.

Да, 968×504 пискеля это меньше минимально рекомендованных Фейсбуком 1200×630. Зато при таком размере и ратио картинку нигде не кропят, и выглядит она отлично.

Кстати, соцсети кэширует вашу страницу, и это сводит с ума во время отладки, пока вы не научитесь сбрасывать кэш: VK pages.clearCacheFacebook Open Graph Object Debugger.

Итак приступим…..

Для начала добавим og:title и og:description — самое простое, достаточно внести изменения в header.tpl шаблона, используя текущие title и description.

Откроем /catalog/view/theme/ВАШ_ШАБЛОН/template/common/header.tpl и добавим два этих тега.

Для Opencart 1.5-2.3

Находим:

<?php if ($description) { ?>
   <meta name="description" content=" <?php echo $description; ?>" />
<?php } ?>

И добавим сюда:

<meta property="og:description" content=" <?php echo $description; ?>" />

Получим:

<?php if ($description) { ?>
   <meta name="description" content=" <?php echo $description; ?>" />
   <meta property="og:description" content=" <?php echo $description; ?>" />
<?php } ?>

Теперь аналогично для title, находим:

<title><?php echo $title; ?></title>

И после добавляем:

<meta property="og:title" content="<?php echo $title; ?>" />

Для Opencart 3.x — /catalog/view/theme/default/template/common/header.twig получим:

og:title

<meta property="og:title" content="{{ title }}" />

og:description

{% if description %}
<meta name="description" content="{{ description }}" />
<meta property="og:description" content="{{ description }}" />
{% endif %}

Дальше перейдем к добавлению двух других тегов — изображение и ссылка.

Кроме header.tpl, изменения в который будут внесены позже, необходимо так же изменить другие файлы:

Начнем с /system/library/document.php

Сразу после

private $keywords;

Добавим

private $ogimage;
private $ogurl;

Затем после

public function getKeywords() {
return $this->keywords;
}

Добавим

public function setOgimage($ogimage) {
$this->ogimage = $ogimage;
}
public function getOgimage() {
return $this->ogimage;
}
public function setOgurl($ogurl) {
$this->ogurl = $ogurl;
}
public function getOgurl() {
return $this->ogurl;
}

Теперь перейдем к файлу /catalog/controller/common/header.php и здесь нужно найти:

Для Opencart 1.5

После

$this->data['keywords'] = $this->document->getKeywords();

Добавим

$this->data['ogimage'] = $this->document->getOgimage();
$this->data['ogurl'] = $this->document->getOgurl();

Для Opencart 2 и 3 — находим:

$data['keywords'] = $this->document->getKeywords();

И добавляем после

$data['ogimage'] = $this->document->getOgimage();
$data['ogurl'] = $this->document->getOgurl();

Далее осталось вывести это в шаблон header — /catalog/view/theme/ВАШ_ШАБЛОН/template/common/header.tpl:

После

<?php if ($keywords) { ?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<?php } ?>

Для Opencart 1.5-2.3 добавим:

<?php if ($ogimage) { ?>
<meta property="og:image" content="<?php echo $ogimage; ?>" />
<?php } ?>
<?php if ($ogurl) { ?>
<meta property="og:url" content="<?php echo $ogurl; ?>" />
<?php } ?>

Для Opencart 3.x:

{% if ogimage %}
<meta property="og:image" content="{{ ogimage }}" />
{% endif %}
{% if ogurl %}
<meta property="og:url" content="{{ ogurl }}" />
{% endif %}

На этом основная часть сделана, теперь можно добавлять присвоение данных тегов в нужные контроллеры. Далее на примере контроллера товара (/catalog/controller/product/product.php). Здесь в качестве ссылки возьму урл canonical (не вижу смысла в передаче данных с неканонических страниц), а в качестве изображения — основное изображение товара.

После

$this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical');

Добавим

$this->document->setOgurl($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']));

Для opencart 1.5 — после:

$this->data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));

Для Opencart 2 — после:

$data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));

В opencart 3 этот код немного отличается, ищем по $data[‘popup’]
Добавим

$this->document->setOgimage($this->model_tool_image->resize($product_info['image'], 500, 300));

Здесь — 500 — ширина изображения в пикселях, 300 — ширина. Так же можно использовать изменение размера в соответствие с конфигом, здесь намеренно указал размеры…

Ну и самое интересное — размеры изображений для социальных сетей и проверка работы.

Facebook
Картинка к внешним ссылкам: 1200 x 630 px
Картинка для поста: 1200 x 630 px
Обложка: 820 х 312 px
Фото профиля: 170х170 px

Вконтакте
Картинка к внешним ссылкам: 537 x 240 px
Картинка для поста: 700 x 500 px
Фото профиля: 200 х 500 px

Twitter
Картинка для твита: 1024 x 512 px
Обложка: 1500 х 500 px
Фото профиля: 400 x 400 px

Instagram
Картинка для поста: 1080 x 1080 px
Фото профиля: 110 x 110 px

YouTube
Картинка поверх видео: 1280 x 720 px
Обложка канала: 2560 x 1440 px
Фото профиля: 800 x 800 px

Pinterest
Картинка для пина: 735 x 1102 px
Фото профиля: 165 x 165 px

Linkedin
Картинка к внешним ссылкам: 180 х 110 px
Картинка для поста: 350 x 230 px
Обложка: 646 x 220 px
Фото профиля: 400 х 400 px

OK.ru
Картинка для поста: 1680 х 1680 px
Обложка: 1340 x 320 px
Фото профиля: 190 х 190 px

Оптимальный размер для картинки типа og:  —  968×504
Да, 968×504 пискеля это меньше минимально рекомендованных Фейсбуком 1200×630. Зато при таком размере и ратио картинку нигде не кропят, и выглядит она отлично.

Инструмет для отладки от Facebook.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
× iOs app

To install this Web App in your iPhone/iPad press iOs sourse and then Add to Home Screen.