И так. Стояла задача заставить сервис twitterfeed.com/ (сервис парсит RSS и постит в твиттер и в facebook) правильно размещать картинку в фейсбуке. Так как в нем используется протокол The Open Graph protocol, то необходимо к записи добавить информацию след вида:
Тогда при постинге фейсбук берет именно тот тайтл, имено нужную картинку и правильный url.
Вы спросите ну и в чем загвоздка. Дело в том что в документации я не нашел как добавлять свой хедер, пришлось покапаться. Выяснилось, что есть замечательная функция $inPage->addHead.
С помощью нее сеошники могут творить чудеса, а фейсбук поймет нас.
Пример универсален, вставлять можно во многие компоненты, единственное переменные тайтлов и картинком будут разными.
Открываем теймплейт свой. Ищем файл template.php
в нем ищем:
меняем на:
тем самым даем понять обработчикам, что у нас есть теги.
Кстати пока писал статью, понял что и для многих других вещей можно также генерировать все что угодно=) первым яндекс на ум пришел)
Не будет отвлекаться, сохраняем темплейт, закрываем файл. Идем далее
Файл \components\content\frontend.php
Ищем строкупримерно 170.
Ниже Вставляем :
Сохраняем и радуемся, теперь добавляем задание в twitterfeed.com/ и в перед.
Да у фейсбуковцев есть страничка теста ваших манипуляций, пригодится:
developers.facebook.com/tools/debug/
Для версий 1.10.xxx
<html prefix="og: http://ogp.me/ns#"> <head> <title>The Rock (1996)</title> <meta property="og:title" content="The Rock" /> <meta property="og:type" content="video.movie" /> <meta property="og:url" content="http://www.imdb.com/title/tt0117500/" /> <meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" /> ... </head> ... </html>
Вы спросите ну и в чем загвоздка. Дело в том что в документации я не нашел как добавлять свой хедер, пришлось покапаться. Выяснилось, что есть замечательная функция $inPage->addHead.
С помощью нее сеошники могут творить чудеса, а фейсбук поймет нас.
Пример универсален, вставлять можно во многие компоненты, единственное переменные тайтлов и картинком будут разными.
Открываем теймплейт свой. Ищем файл template.php
в нем ищем:
<html xmlns="http://www.w3.org/1999/xhtml">
<html xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
Кстати пока писал статью, понял что и для многих других вещей можно также генерировать все что угодно=) первым яндекс на ум пришел)
Не будет отвлекаться, сохраняем темплейт, закрываем файл. Идем далее
Файл \components\content\frontend.php
Ищем строку
// Картинка статьи $article['image'] = (file_exists(PATH.'/images/photos/medium/article'.$article['id'].'.jpg') ? 'article'.$article['id'].'.jpg' : '');
Ниже Вставляем :
$inPage->addHead('<meta property="og:type" content="website" />'); $inPage->addHead('<meta property="og:description" content="'.htmlspecialchars(strip_tags($article['description'])).'"/>'); $inPage->addHead('<meta property="og:url" content="'.HOST.'/'.$model->getArticleURL(null, $article['seolink']).'" />'); $inPage->addHead('<meta property="og:image" content="'.HOST.'/images/photos/medium/'.$article['image'].'"/>');
Да у фейсбуковцев есть страничка теста ваших манипуляций, пригодится:
developers.facebook.com/tools/debug/
Для версий 1.10.xxx
Реклама #
Fuze 11 лет назад #
$inPage->addHead('<meta property="og:url" content="'.HOST.'/'.$model->getArticleURL(null, $article['seolink']).'" />');
kirkr 11 лет назад #
AndroS 11 лет назад #
Бергал 11 лет назад #
Ruchechnik 11 лет назад #
Def 11 лет назад #
kirkr 11 лет назад #
Ruchechnik 11 лет назад #
Endroid 11 лет назад #
wportal 11 лет назад #
wportal 11 лет назад #
Автору +
Fuze 11 лет назад #
wportal 11 лет назад #
то у меня
Meta Tag: <meta property="og:title" content="Чи шкідливий оральний секс?" />
Meta Tag: <meta property="og:description" content="О&#x.........
Это правильно?
kirkr 11 лет назад #
По блогам сделал, на модерации пост сейчас, позже будет. Там картинку берем первую с поста.
wportal 11 лет назад #
densvi 11 лет назад #
kirkr 11 лет назад #
densvi 11 лет назад #
под og:image: выдает просто путь: сайт/images/photos/medium/ т.е. самой картинки нет как бы.
kirkr 11 лет назад #
Freddie 7 лет назад #
ICMS 1.10.3 та же проблема:
og:image: выдает просто путь: сайт/images/photos/medium/
подозреваю здесь $article['image'] = (file_exists(PATH.'/images/photos/medium/article'.$article['id'].'.jpg') ? 'article'.$article['id'].'.jpg' : '');
срабатывает, что файла картинки ещё нет на сервере, срабатывает второе ''.
У меня в плагине p_ping встроен код автоматического постинга в ФБ через API. Все нормально работало до начала июля. Теперь не скрапер ФБ не может с первого раза правильно определить нужную картинку, только со второго раза.
В их отладчике перепостов https://developers.facebook.com/tools/debug/ так и указан путь без файла сайт/images/photos/medium/
Выполняешь "повторить скрапинг" - всё нормально. Есть какая-то асинхронность.
Подскажите, как это грамотно исправить?
kirkr 7 лет назад #
Если бы скинули сайт я бы подсказал.
Какой компонент используете?
Freddie 7 лет назад #
Всё это в components\content\frontend.php
Подозреваю это из-за того, что код постинга в ФБ в плагине прописал, а не в этом компоненте.
kirkr 7 лет назад #
Думаю просто не видит переменной PATH, поэтому проверку и не проходит.
Петр 11 лет назад #
Mademaster 11 лет назад #
Dorimen 11 лет назад #
под og:image: выдает просто путь: сайт/images/photos/medium/ т.е. самой картинки нет как бы.
Я сделал так: if ($article_image) { $inPage->addHead('<meta property="og:image" content="'.HOST.'/images/photos/medium/'.$article_image.'"/>'); }
(P.S. InstantCMS 1.9)