Что нового

og:image из дополнительного поля типа "Загружаемое изображение" [DLE14.x] (1 Viewer)

леший

леший

Модератор
SkripTers TEAM
OLD SkripTers
Регистрация
18 Дек 2019
Сообщения
5,490
Реакции
817
Всем снова здравствуйте! Как известно, когда люди постят ссылки на интересные статьи в соц.сетях и делятся ссылками в мессенджерах, то соц. сети и мессенджеры берут картинку для оформления ссылки из meta тега og:image. А как известно DLE для данного тега берёт всегда первую картинку из текста, которая загружена через редактор, поэтому очень многие интересуются на тематических форумах/сайтах, как сделать так, чтобы DLE использовал картинки из определённого доп.поля типа "Загружаемое изображение". Поэтому я решил с Вами поделится плагином для данных целей, который есть на оф.форуме, но его там не всегда можно быстро найти.
Сам плагин
XML:
<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
    <name>og:image</name>
    <description></description>
    <icon></icon>
    <version>2.0</version>
    <dleversion>14</dleversion>
    <versioncompare>greater</versioncompare>
    <upgradeurl></upgradeurl>
    <filedelete>0</filedelete>
    <needplugin></needplugin>
    <mnotice>0</mnotice>
    <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>
    <notice><![CDATA[]]></notice>
    <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['название_доп.поля_на_латинице'])) {
    $soctimage = explode('|', $xfieldsdata['название_доп.поля_на_латинице']);
    if (count($soctimage) > 1) {$socimgarticle = $config['http_home_url'].'uploads/posts/'.$soctimage[1];}
    else {$socimgarticle = $config['http_home_url'].'uploads/posts/'.$soctimage[0];}
} else {
    $socimgarticle = $images;
   
    if ( count($socimgarticle) ) {
        $socimgarticle = str_replace("/thumbs/","/",$socimgarticle[0]);
        $socimgarticle = str_replace("/medium/","/",$socimgarticle);
    } else {
        $socimgarticle = $config['http_home_url'].'uploads/noimg.jpg';
    }
}
$social_tags['image'] = $socimgarticle;]]></replacecode>
        </operation>
    </file>
</dleplugin>
В плагине дважды меняем "название_доп.поля_на_латинице" на нужное значение и uploads/noimg.jpg меняем на своё (если доп.поле не заполнино, то будет браться заглужка).

Так же к теме прикрепил файл. С автором плагина можно связаться здесь
 

Вложения

  • ogimage.zip
    840 байт · Просмотры: 12
Последнее редактирование:
Так же есть вот такой вариант для тех, кому нужно вывести первую картинку из "Галерея изображений" (стандартно все изображения выводятся через запятую).

Код:
<?xml version="1.0" encoding="utf-8"?>

<dleplugin>

    <name>og:image</name>

    <description>Картинка в meta из доп. поля</description>

    <icon></icon>

    <version></version>

    <dleversion>14</dleversion>

    <versioncompare>greater</versioncompare>

    <upgradeurl></upgradeurl>

    <filedelete>0</filedelete>

    <needplugin></needplugin>

    <mnotice>0</mnotice>

    <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>

    <notice><![CDATA[]]></notice>

    <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'])) {
    $soctimage = explode(',', $xfieldsdata['img']);
    $soctimage = explode('|', $soctimage[0]);
    if (count($soctimage) > 1) {
        $socimgarticle = $config['http_home_url'] . 'uploads/posts/' . $soctimage[1];
    } else {
        $socimgarticle = $config['http_home_url'] . 'uploads/posts/' . $soctimage[0];
    }
} 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.png';
    }
}
$social_tags['image'] = $socimgarticle;]]></replacecode>

        </operation>

    </file>

</dleplugin>
 

Пользователи, просматривающие данную тему

Верх