CMS DataLife Engine - Система управления сайтами

Sign in to follow this  
odys

Своя картинка в og:image в полной новости для версии 13

Recommended Posts

Ребят, у кого есть познания, доработайте пожалуйста этот плагин, чтобы можно было добавить дополнительное поле "Галерея изображений". Например, чтобы он также выводил в og:image первую полную картинку из галереи изображений.

  • Upvote 1

Share this post


Link to post
Share on other sites

@odys, можно немного изменить плагин, чтобы картинки из новости брались не уменьшенные, а оригинальные? Имеется ввиду картинки из текста новости {fullimage-x}, а не из доп. поля.

Edited by Spyhog

Share this post


Link to post
Share on other sites

@odys, почему такой странный адрес картинки прописывается?

<meta property="og:image" content="https://site.ru/uploads/posts/Фильм про Пластичного человека|2018-12/1544533313_film-plastichnyj-chelovek.jpg">

Share this post


Link to post
Share on other sites
1 час назад, Spyhog сказал:

@odys, почему такой странный адрес картинки прописывается?

 


<meta property="og:image" content="https://site.ru/uploads/posts/Фильм про Пластичного человека|2018-12/1544533313_film-plastichnyj-chelovek.jpg">

 

а что в доп. поле пишешь?

Share this post


Link to post
Share on other sites
13 минут назад, odys сказал:

а что в доп. поле пишешь?

доп поле типа Изображение. Просто загружаю картинку и прописываю ей alt, который в dle 13.1 появился.

Share this post


Link to post
Share on other sites
6 минут назад, Spyhog сказал:

доп поле типа Изображение. Просто загружаю картинку и прописываю ей alt, который в dle 13.1 появился.

тогда вообще не понятно, зачем главной картинке alt отличный от title? Ну да ладно, я ещё не смотрел версию 31.1, пока нет времени поправить

Share this post


Link to post
Share on other sites
2 минуты назад, odys сказал:

тогда вообще не понятно, зачем главной картинке alt отличный от title? Ну да ладно, я ещё не смотрел версию 31.1, пока нет времени поправить

А разве хорошо, когда alt с title одинаковый? Я читал, что он должен быть свой.

Share this post


Link to post
Share on other sites
9 минут назад, Spyhog сказал:

А разве хорошо, когда alt с title одинаковый?

нет, не хорошо, когда у тебя 5-10 картинок с одинаковым alt, а вот одна, главная, тут уже другой вопрос.

Share this post


Link to post
Share on other sites
В 16.05.2018 в 00:24, odys сказал:

По умолчанию в DLE в полной новости картинка в meta og:image выводится первая картинка загруженная к новости. Плагин «og:image» позволит выбрать источник картинки доп. поле (загружаемое изображение).

Получаю такую строку в og после установки плагина.

 

<meta property="og:image" content="http://dev.xn--80ady2a0c.xn--p1ai/uploads/posts/<!--dle_image_begin:http://dev.xn--80ady2a0c.xn--p1ai/uploads/posts/2018-12/1545424321_lida.jpg|--><img src="/uploads/posts/2018-12/1545424321_lida.jpg" style="max-width:100%;" alt="Тест 2"><!--dle_image_end-->">

 

В настройках Прописано доп поле с типом: Несколько строк

Share this post


Link to post
Share on other sites
В 29.12.2018 в 14:11, blagoy_vip сказал:

Получаю такую строку в og после установки плагина.

 

<meta property="og:image" content="http://dev.xn--80ady2a0c.xn--p1ai/uploads/posts/<!--dle_image_begin:http://dev.xn--80ady2a0c.xn--p1ai/uploads/posts/2018-12/1545424321_lida.jpg|--><img src="/uploads/posts/2018-12/1545424321_lida.jpg" style="max-width:100%;" alt="Тест 2"><!--dle_image_end-->">

 

В настройках Прописано доп поле с типом: Несколько строк

Потому что нужно уметь читать описание плагина, и как не странно, там окажется что нет ни слова про доп.поле может быть несколько строк...

Share this post


Link to post
Share on other sites
В 30.12.2018 в 15:34, SSID сказал:

Потому что нужно уметь читать описание плагина, и как не странно, там окажется что нет ни слова про доп.поле может быть несколько строк...

Я понимаю, подскажите, как поправить этот баг.

Share this post


Link to post
Share on other sites

В версии 13.2 показывает ошибку. Не может найти эту строчку

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

 

Вроде как всё работает если вставить после этого

        if ( count($images) ) {
            $social_tags['image'] = str_replace("/thumbs/","/",$images[0]);
            $social_tags['image'] = str_replace("/medium/","/",$social_tags['image']);
        }

 

Так правильно будет?

Share this post


Link to post
Share on other sites
Только что, radrigo сказал:

Так правильно будет?

я не знаю, не смотрел ещё, пока на работе. Вечером обновлюсь и плагин обновлю.

  • Like 1

Share this post


Link to post
Share on other sites
4 минуты назад, odys сказал:

я не знаю, не смотрел ещё, пока на работе. Вечером обновлюсь и плагин обновлю.

Спасибо. Буду ждать. Вроде работает, однако если дополнительное поле не загружено, а просто вставлена картинка в текст новости, то в og:image выводит ссылку на миниатюру. Стоит плагин отключить, сразу ссылка на полную картинку, как и описано в нововведениях к версии 13.2

Share this post


Link to post
Share on other sites
9 часов назад, radrigo сказал:

Спасибо. Буду ждать. Вроде работает, однако если дополнительное поле не загружено, а просто вставлена картинка в текст новости, то в og:image выводит ссылку на миниатюру. Стоит плагин отключить, сразу ссылка на полную картинку, как и описано в нововведениях к версии 13.2

только не забудь img заменить на своё значение и путь до картинки заглушки

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>og:image</name>
	<description>Картинка в meta из доп. поля</description>
	<icon></icon>
	<version>1.6</version>
	<dleversion>13.2</dleversion>
	<versioncompare>greater</versioncompare>
	<upgradeurl></upgradeurl>
	<filedelete>0</filedelete>
	<needplugin></needplugin>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<phpinstall><![CDATA[]]></phpinstall>
	<phpupgrade><![CDATA[]]></phpupgrade>
	<phpenable><![CDATA[]]></phpenable>
	<phpdisable><![CDATA[]]></phpdisable>
	<phpdelete><![CDATA[]]></phpdelete>
	<file name="engine/modules/show.full.php">
		<operation action="replace">
			<searchcode><![CDATA[if ( count($images) ) {
			$social_tags['image'] = str_replace("/thumbs/","/",$images[0]);
			$social_tags['image'] = str_replace("/medium/","/",$social_tags['image']);
		}]]></searchcode>
			<replacecode><![CDATA[$xfieldsdata = xfieldsdataload( $row['xfields'] );
if (isset($xfieldsdata['img'])) {
	$socimgarticle = $config['http_home_url'].'uploads/posts/'.$xfieldsdata['img'];
} else {
	$socimgarticle = $images;
	
	if ( count($socimgarticle) ) {
		$socimgarticle = str_replace("/thumbs/","/",$socimgarticle[0]);
		$socimgarticle = str_replace("/medium/","/",$socimgarticle);
	} else {
		$socimgarticle = $config['http_home_url'].'uploads/kanaspo.jpg';
	}
}
$social_tags['image'] = $socimgarticle;]]></replacecode>
		</operation>
	</file>
</dleplugin>

 

  • Like 1

Share this post


Link to post
Share on other sites
7 часов назад, odys сказал:

только не забудь img заменить на своё значение и путь до картинки заглушки

Спасибо за обновление.

Подскажите, если у меня два дополнительных полей, так будет правильно?

$xfieldsdata = xfieldsdataload( $row['xfields'] );
if (isset($xfieldsdata['glavfoto'])) {
    $socimgarticle = $config['http_home_url'].'uploads/posts/'.$xfieldsdata['glavfoto'];
} elseif (isset($xfieldsdata['photoalbom'])) {
    $socimgarticle = $config['http_home_url'].'uploads/posts/'.$xfieldsdata['photoalbom'];
} else {
    $socimgarticle = $images;
    
    if ( count($socimgarticle) ) {
        $socimgarticle = str_replace("/thumbs/","/",$socimgarticle[0]);
        $socimgarticle = str_replace("/medium/","/",$socimgarticle);
    } else {
        $socimgarticle = $config['http_home_url'].'uploads/gusev.png';
    }
}
$social_tags['image'] = $socimgarticle;

 

Edited by radrigo

Share this post


Link to post
Share on other sites
1 час назад, radrigo сказал:

так будет правильно?

да

  • Like 1

Share this post


Link to post
Share on other sites

@odys, не смотрели, как решить проблему, если прописываешь alt картинке? https://forum.dle-news.ru/topic/72594-своя-картинка-в-ogimage-в-полной-новости-для-версии-13/?do=findComment&comment=368617

 

Я тут смотрел showfull.php и там есть такой код:

if($thumb_url) {
	$xfieldsdata[$value[0]] = "<a href=\"$img_url\" class=\"highslide\" target=\"_blank\"><img class=\"xfieldimage {$value[0]}\" src=\"$thumb_url\" alt=\"{$temp_alt}\"></a>";
} else $xfieldsdata[$value[0]] = "<img class=\"xfieldimage {$value[0]}\" src=\"{$img_url}\" alt=\"{$temp_alt}\">";

Нельзя ли как-то в ваш плагин вставить типа {$img_url}, чтобы выводилась только ссылка на картинку, а alt нет?

Edited by Spyhog

Share this post


Link to post
Share on other sites

Я сделал всё намного проще:

Нашел это

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

и заменил на это

 

$xfieldsdata = xfieldsdataload( $row['xfields'] );
if (isset($xfieldsdata['img'])) {
$socimgarticle = $config['http_home_url'].'uploads/posts/'.$xfieldsdata['img'];
} else {
$socimgarticle = $images;
if ( count($socimgarticle) ) {$socimgarticle = $socimgarticle[0];}
else {$socimgarticle = $config['http_home_url'].'/uploads/kanaspo.jpg';}
}
$social_tags['image'] = $socimgarticle;

Всё это делается в show.full.php

Share this post


Link to post
Share on other sites

Разметка Open Graph позволяет подстраховаться, указав, например, альтернативную картинку. Если первый URL будет недоступен, то в предпросмотр подгрузится вторая картинка. Очередь (приоритет) — сверху вниз.

Поэтому достаточно в main.tpl, вместо {headers} заменить:

[available=showfull][xfgiven_cover]<meta property="og:image" content="/uploads/posts/[xfvalue_cover]" />[/xfgiven_cover][/available]
{headers}
<meta property="og:image" content="{THEME}/images/logo-256x256.png" />

 

Share this post


Link to post
Share on other sites

Отличный плагин, автору спасибо за труд!

 

Хочу обратить внимание тех, кто, как и я, подгружает картинки со стороннего хостинга или сайта, то есть в дополнительном поле ставит ссылку. Находим 30 строку: 

$socimgarticle = $config['http_home_url'].'uploads/posts/'.$xfieldsdata['img'];

и меняем ее следующим образом:

$socimgarticle = $xfieldsdata['img'];

Таким образом, в og:image будет выводиться не ссылка вида http://yoursite.com/uploads/posts/https://hosting.com/example.jpg ,а нормальная ссылка на картинку, которую вы вставили в дополнительное поле.

 

Ваш КО =) Просто неочевидная особенность, новичка может поставить в тупик.

Share this post


Link to post
Share on other sites

Подскажите, а как сделать чтобы работало.?

Краткая новость содержит ее начало с картинкой.

Полная новость содержит ее продолжение с картинками и состоит из конструкции типа

 {short-story}
 {full-story}

Нужно чтобы в полной новости в теге <meta property="og:image" картинка выводилась из краткой

Edited by Oxigen

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this