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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now