Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » DLE 10 разметка Open Graph

DLE 10 разметка Open Graph


     23.06.2013    DLE 10, разметка, Open Graph    Все вопросы » Общие вопросы    17743

вопрос
В DLE 10 добавлена специальная разметка в метатегах согласно протоколу Open Graph. Так вот в новостях эта разметка берет не правильное изображение для новости. У меня такая структура новости:
1. Одно строчное доп поле в которое вставляется ссылка на постер
2. Еще куча доп полей
3. Много строчное доп поле в которое вставляются 4 скриншота

Так вот Open Graph берет первый скриншот из этого много строчного доп поля, а надо что бы брал постер.
Как можно указать какое изображение должно браться для метатега?

Ответил: maestron


Формирование содержимого данных тегов происходит в файле engine/modules/show.full.php.

По умолчанию скрипт вставляет первую найденную картинку.
Для того, чтобы это изменить, найдите в данном файле (engine/modules/show.full.php) строчку:

if ( count($images) ) $social_tags['image'] = $images[0];

Только вместо 0 надо -1

20 комментариев

Kane
Юзер

Kane - 25 июня 2013 11:03 -

<meta property="og:site_name" content="
<meta property="og:type" content="
<meta property="og:title" content="
<meta property="og:url" content="
<meta property="og:image" content="

Какой файл отвечает за вывод этих метатегов?

Nick
Юзер

Nick - 25 июня 2013 17:30 -

Как можно указать какое изображение должно браться для метатега?


Формирование содержимого данных тегов происходит в файле engine/modules/show.full.php.

По умолчанию скрипт вставляет первую найденную картинку.
Для того, чтобы это изменить, найдите в данном файле (engine/modules/show.full.php) строчку:

if ( count($images) ) $social_tags['image'] = $images[0];


Поробуйте $images[0] заменить, например, на $images[1]. По идее в теге должна появится ссылка на вторую картинку (0 -первая, 1 - вторая), найденную в посте.

---

А в Вашем случае надо смотреть конкретней, точно сказать, почему первой картинкой определяется скриншот, не могу.

Kane
Юзер

Kane - 25 июня 2013 21:50 -

В доп поле [xfvalue_poster] вставляется ссылка такого типа http://mysite.ru/uploads/posts/2013-04/1366610712_poster_123454.jpg
Картинкой она уже становится в шаблоне таким образом
<img src="[xfvalue_poster]"alt="{title}" title="{title}"/>

То есть при формирование метатег og:image постер не видит так как по сути он не является картинкой

Хм, причина проблемы ясна. Как бы теперь ее решить?

nowheremany
Эксперт

nowheremany - 26 июня 2013 13:48 -


Благодарность принимаю тут Связь

Kane
Юзер

Kane - 26 июня 2013 17:37 -

nowheremany
Эм, или я чего то не понял, в итоге получается 2 разметки.....первая стандартная, вторая та что по вашей ссылке

Kane
Юзер

Kane - 28 июня 2013 10:59 -

Какие нибудь идеи есть? Ну или как нафиг отключить эту разметку?

Kane
Юзер

Kane - 29 июня 2013 11:11 -

Паходу легче сделать откат на DLE 9.8

Nick
Юзер

Nick - 29 июня 2013 15:23 -

Цитата: Kane
Какие нибудь идеи есть?

В коде block pro есть обработка картинок в доп. полях. Как вариант, взять код оттуда, в show.full.php определять полный адрес до этой картинки в какую-нибудь переменную, в engine.php выводить 1 мета тег с этой картинкой.

Kane
Юзер

Kane - 29 июня 2013 19:56 -

Нашел попроще способ. В
fullstory.tpl прописать
<script type="text/javascript">
$(document).ready(function(){
$("head").append('<meta property="og:image" content="[xfvalue_poster]" />');
});
</script>

В engine/modules/show.full.php удалить
if ( count($images) ) $social_tags['image'] = $images[0];

Не знаю на сколько это правильно. но вроде то что нада

nowheremany
Эксперт

nowheremany - 26 февраля 2016 11:41 -

Вряд ли VK или другие сервисы запускают JS при чтении вашей страницы, а без этого в HEAD они не увидят эту разметку

Благодарность принимаю тут Связь

elgreco
Юзер

elgreco - 29 октября 2014 21:36 -

To : engine.php search :
<meta name="keywords" content="{$metatags['keywords']}" />{$disable_index}


Add :
 {$s_meta}


To : engine/module/show.full.php search :
$social_tags['url'] = $full_link;


Below :
if ( ! isset( $xfieldsdata ) ) $xfieldsdata = xfieldsdataload( $row['xfields'] );
     $social_tags['image'] = $xfieldsdata['poster'];

dimavdv
Юзер

dimavdv - 23 июля 2015 20:07 -


revived
Юзер

revived - 10 ноября 2015 16:46 -

Ребята, а как сделать, чтобы оно брало первую фотку из краткого описания?

mastodontoff
Юзер

mastodontoff - 5 декабря 2015 10:44 -

revived,
Тоже интересует данный вопрос

Tappo4eK
Юзер

Tappo4eK - 26 февраля 2016 07:27 -

Тема баян но тоже надо было это сделать, а main.tpl не дает возможности ставить доп. поля.
Я решил проблему так:
Создал файл шаблона og.tpl, кинул туда код
[xfgiven_image]<meta property="og:image" content="[xfvalue_image]"/>[/xfgiven_image]

а в файле main.tpl после <head> добавил:
{custom template="og" aviable="global" from="0" limit="1" cache="no"}

Учитывая возможности тегов DLE - можно настроить Open Graph под разные категории.

Tappo4eK
Юзер

Tappo4eK - 26 февраля 2016 08:25 -

А нет. Рано обрадовался.. оно так просо берет последнее изображение из поля. если добавить сразу несколько новостей и кинуть предыдущую - картинка будет последней :С

nowheremany
Эксперт

nowheremany - 26 февраля 2016 11:42 -

Что вы хотите то? Зачем к коротких новостях эта разметка? Достаточно её разместить в полной новости.

Благодарность принимаю тут Связь

UsurpatorVaticana
Юзер

UsurpatorVaticana - 7 января 2017 00:05 -

Ребятули, для новых доп полей DLE 11.2 типа изображение:
$needle1 = 'href';
$start1 = mb_strpos($xfieldsdata['imgnews'], $needle1, 0); //позиция 'href'
$needle2 = 'class';
$end1 = mb_strpos($xfieldsdata['imgnews'], $needle2, 0); //позиция 'class'
$img_link1 = substr($xfieldsdata['imgnews'], $start1 + 6, $end1 - 11);
$social_tags['image'] = $img_link1;

UsurpatorVaticana
Юзер

UsurpatorVaticana - 7 января 2017 01:51 -

$needle1 = 'imgnews';
$start1 = mb_strpos($row['xfields'], $needle1, 0); //позиция 'href'
$needle2 = 'imgdesc';
$end1 = mb_strpos($row['xfields'], $needle2, 0); //позиция 'class'
$img_link1 = substr($row['xfields'], $start1 + 8, $end1 - 10);
$social_tags['image'] = "https://dota2.expert/uploads/posts/" . $img_link1;

UsurpatorVaticana
Юзер

UsurpatorVaticana - 7 января 2017 01:52 -

Почему-то не работает, вот рабочий кусок
$needle1 = 'imgnews';
$start1 = mb_strpos($row['xfields'], $needle1, 0); //позиция 'href'
$needle2 = 'imgdesc';
$end1 = mb_strpos($row['xfields'], $needle2, 0); //позиция 'class'
$img_link1 = substr($row['xfields'], $start1 + 8, $end1 - 10);
$social_tags['image'] = "https://site.ru/uploads/posts/" . $img_link1;
Кто не разобрался skype:suwka.cyc

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 11.10.2013 Prime-torrent.ru  Общие вопросы
наверх