Разметка OG для двойки

#1 10 ноября 2014 в 11:53
хай!
хочу добавить разметку опен граф
но не получается сделать эти 2 тега
  1. <meta property="og:description" content="" /> //seo_desc описание
  2. <meta property="og:image" content="" /> // основная картинка
как это сделать?
#2 10 ноября 2014 в 14:54
Появилась идея о создании компонента/плагина, позволяющего каждому типу контента задавать свои OG-теги по шаблонам...
К примеру, в магазине это может быть тег "Я думаю приобрести %Kategoriya_Tovara% %Tovar% всего за %Cena%! $Скидка %Sale%руб — только сегодня!$" (Я хочу приобрести телевизор Samsung xx-50 всего за 2999руб! Скидка 999руб — только сегодня!)
где %переменная% и $условие$ (в данном случае, проверка, есть ли скидка на товар).
#3 10 ноября 2014 в 16:48
В двойке есть метод addHead() в классе cmsTemplate. В него можно добавить любой тег например
  1. [code=php]cmsTemplate::getInstance()->addHead('<meta property="og:description" content="" />')[/code]
и добавить в файл шаблона.
Если мета-тег один для всех, то вставить его можно в main.tpl.php, либо в конкретный файл шаблона.
#4 10 ноября 2014 в 17:03
не, мне немного другое нужно
я теги в шаблон вставил и мне теперь нужно вывести описание и url картинки там где *** стоят
  1. <meta property="og:description" content="****" />
  2. <meta property="og:image" content="****" />
#5 10 ноября 2014 в 17:17
тогда в файле \templates\default\controllers\content\item_view.tpl.php после 11-12 строки добавьте
  1. $this->addHead("<meta property='og:description' content=" . $item['seo_desc'] . "' />");
с картинкой примерно также
  1. $this->addHead("<meta property='og:image' content=" . html_image_src($item['название поля для картинки'], 'normal') . "' />");
#6 10 ноября 2014 в 17:37


тогда в файле \templates\default\controllers\content\item_view.tpl.php после 11-12 строки добавьте

  1. $this->addHead("");

Loadырь

Спасибо!
не сочтите за наглость…
но еще нужно у картинки указать полный путь с доменом
и еще, URL данной страницы
#7 10 ноября 2014 в 18:11

нужно у картинки указать полный путь с доменом

Timmy
для этого укажите третий параметр в html_image_src($item['название поля для картинки'], 'normal', true)
#8 10 ноября 2014 в 18:19

URL данной страницы

Loadырь
не уверен, но попробуйте это вместо самого урл:
  1. cmsCore::getInstance()->uri
#9 11 ноября 2014 в 14:30
не получается :(

вставляю вот так
  1. $this->addHead("<meta property='og:description' content=" . $item['seo_desc'] . "' />");
  2. $this->addHead("<meta property='og:image' content=" . html_image_src($item['photo'], 'normal', true) . "' />");
  3. $this->addHead("<meta property='og:url' content=" . cmsCore::getInstance()->uri . "' />");

получается так
  1. <meta property='og:description' content=текст' />
  2. <meta property='og:image' content=/upload/000/u7/003/7da86c86.jpg' />
  3. <meta property='og:url' content=news/139-test.html' />
должно быть вот так
  1. <meta property="og:description" content="текст" />
  2. <meta property="og:image" content="http://site.ru/upload/000/u7/003/7da86c86.jpg" />
  3. <meta property="og:url" content="http://site.ru/news/139-test.html" />
нужно вывести полные адреса картинки и url и валидатор ругается
#10 11 ноября 2014 в 16:20
Timmy, тогда всё просто:
  1.  
  2. $config = cmsConfig::getInstance();
  3. $inCore = cmsCore::getInstance();
  4. $this->addHead("<meta property='og:description' content=" . $item['seo_desc'] . "' />");
  5. $this->addHead("<meta property='og:image' content=" . $config->host . $config->upload_root . html_image_src($item['photo'], 'normal') . "' />");
  6. $this->addHead("<meta property='og:url' content=" . $config->host . "/" . $inCore->uri . "' />");
  7.  
проверьте количество слэшей ("/") в выводимых путях.
#11 11 ноября 2014 в 16:23
Loadырь, Спасибо!
Пути правильные, лишних слешей нет, Но все равно осталась ошибка с кавычками

получается вот так
  1. <meta property='og:description' content=текст' />
а нужно вот так
  1. <meta property="og:description" content="текст" />
#12 11 ноября 2014 в 16:44
Есть такое, измените эту строку на
  1. $this->addHead("<meta property='og:description' content='" . $item['seo_desc'] . "' />");
#13 11 ноября 2014 в 17:02
частично помогло, но все равно получаются одинарные кавычки ', а нужно двойные "
#14 11 ноября 2014 в 17:17
тогда так
  1.  
  2. $config = cmsConfig::getInstance();
  3. $inCore = cmsCore::getInstance();
  4. $this->addHead('<meta property="og:description" content="' . $item["seo_desc"] . '" />');
  5. $this->addHead('<meta property="og:image" content="' . $config->host . $config->upload_root . html_image_src($item["photo"], "normal") . '" />');
  6. $this->addHead('<meta property="og:url" content="' . $config->host . '/' . $inCore->uri . '" />');
  7.  
#15 11 ноября 2014 в 18:24
Loadырь, Спасибо еще раз. Теперь все отлично!
Подытожу для тех, кто соберется делать
в файл \templates\default\controllers\content\item_view.tpl.php после
  1. $base_url = $ctype['name'];
добавил следующий код:
  1. $config = cmsConfig::getInstance();
  2. $inCore = cmsCore::getInstance();
  3. $this->addHead('<meta property="og:title" content="' . $item["title"] . '" />');
  4. $this->addHead('<meta property="og:type" content="website" />');
  5. $this->addHead('<meta property="og:url" content="' . $config->host . '/' . $inCore->uri . '" />');
  6. $this->addHead('<meta property="og:image" content="' . $config->host . $config->upload_root . html_image_src($item["photo"], "normal") . '" />');
  7. $this->addHead('<meta property="og:description" content="' . $item["seo_desc"] . '" />');
  8. $this->addHead('<meta property="og:locale" content="ru_RU" />');
обратите внимание, что в строке
  1. $this->addHead('<meta property="og:image" content="' . $config->host . $config->upload_root . html_image_src($item["photo"], "normal") . '" />');
если нужно вы можете указать размер изображения и название поля (если отличается от стандартного)
и также следует указать вашу локализацию, если сайт на другом языке

а также в файле /templates/default/main.tpl.php
заменил
  1. <html>
на
  1. <html lang="ru" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://ogp.me/ns#" prefix="og: http://ogp.me/ns#" >
как того требует стандарт
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.