Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Аватар автора в новостях

Аватар автора в новостях


     25.08.2011    аватарка, новости    Все вопросы » Хаки    13567

вопрос
Видел когда то хак, который выводит аватарку автора в полной новости, кто подскажет как вывести аватар и в краткую новость...

Ответил: ПафНутиЙ


Сразу хочу сказать, что это плюс 1 запрос в новость, если не смущает, то:
  1. Открываем файлы:
    /engine/modules/show.short.php
    /engine/modules/show.full.php
    /engine/modules/show.custom.php
    во всех файлах находим:
    $tpl->set( '{login}', $row['autor'] );

    и ниже добавляем:
    $avatar = $db->get_row($db->query("SELECT foto FROM ".PREFIX."_users WHERE name='".$row['autor']."'"));
                if($avatar['foto'])
                    $tpl->set('{avatar}', $config['http_home_url']."uploads/fotos/".$avatar['foto']);
                else
                    $tpl->set('{avatar}', "{THEME}/images/noavatar.png");

  2. В шаблоны краткой, полной и custom новостей вставляем:
    <img src="{avatar}" alt="{login}"/>

  3. В CSS дописываем нужный свойства.
  4. Всё.

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

Sander
PHP-developer

Sander - 25 августа 2011 13:25 -

Лучше не:
$avatar = $db->get_row($db->query("SELECT foto FROM ".PREFIX."_users WHERE name='".$row['autor']."'"));
А:
$avatar = $db->super_query("SELECT foto FROM ".PREFIX."_users WHERE name='{$row['autor']}'");

Но! Для каждой новости будет делаться отдельный запрос!

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

ПафНутиЙ
Админ

ПафНутиЙ - 25 августа 2011 13:54 -

А почему лучше?

Каков вопрос - таков и ответ. Просто помните об этом.

DatiX
Юзер

DatiX - 25 августа 2011 20:16 -

спасибо парни!!

maxbeat
Местный

maxbeat - 20 октября 2011 04:37 -

А около аватара возможно вставить тег О себе из профиля пользователя? fullstory.tpl

Yurets
Юзер

Yurets - 6 ноября 2012 12:59 -

У меня тоже возникла потребности вывести Инфо с поля автора "О себе", исходя из того тчо в php я полный 0, случайно нашел этот запрос от ПафНутия и немного подправил:

/engine/modules/show.full.php

после - $tpl->set( '{login}', $row['autor'] );

вставляем:

$avtor_info = $db->get_row($db->query("SELECT info FROM ".PREFIX."_users WHERE name='".$row['autor']."'"));
if($avtor_info['info'])
$tpl->set('{avtor_info}', $avtor_info['info']);
else
$tpl->set('{avtor_info}', "Информация отсутствует");

В шаблоне fullstory.tpl выводим в нужном месте тегом:
{avtor_info}

p. s. надеюсь мне когда-то тоже тупо напишут несколько строк кода, вместо того чтобы отправлять в поиск по сайтам ))

vipartem
Юзер

vipartem - 8 июня 2015 20:14 -

У меня вопрос: Как выводить не логин, а полное имя. Вставки одного {fullname} в код шаблона не достаточно. Подскажите?

sanderart
Юзер

sanderart - 12 октября 2015 14:23 -

Заметил, что в DLE 10.5 актуально уже так
$tpl->set('{avatar}', .$avatar['foto']);

sanderart
Юзер

sanderart - 12 октября 2015 15:55 -

Вернее, так:
$tpl->set('{avatar}', $avatar['foto']);

(Предыдущий коммент удалить можно)

zikwal
Юзер

zikwal - 23 октября 2015 02:44 -

По началу не понял о чем ты, но пока сам не допедрил не сделал :-)
Вот такой код, нужно вставлять!

$avatar = $db->get_row($db->query("SELECT foto FROM ".PREFIX."_users WHERE name='".$row['autor']."'"));
            if($avatar['foto'])
                $tpl->set('{avatar}', $avatar['foto']);
            else
                $tpl->set('{avatar}', "{THEME}/dleimages/noavatar.png");

rytis.arkusauskas
Юзер

rytis.arkusauskas - 12 ноября 2015 11:23 -

a кaк Gravatar?

wearnings
Юзер

wearnings - 23 ноября 2018 03:47 -

Привет, сделать можно так! В файлах show.short.php и show.full.php добавить после
$tpl->set( '{login}', $row['autor'] );

Добавить следующее

// Фото профиля webtimes.org
if($member_id["foto"]){
if ( count(explode("@", $member_id["foto"])) == 2 ) {
$tpl->set( '{foto}', '//www.gravatar.com/avatar/' . md5(trim($member_id["foto"])) . '?s=' . intval($user_group[$member_id['user_group']]['max_foto']) );
} else {
if( $member_id["foto"] ) {
if (strpos($member_id["foto"], "//") === 0) $avatar = "http:".$member_id['foto']; else $avatar = $member_id['foto'];$avatar = @parse_url ( $avatar );
if( $avatar['host'] ) {$tpl->set( '{foto}', $member_id["foto"] ); } else $tpl->set( '{foto}', $config['http_home_url'] . "uploads/fotos/" . $member_id['foto'] );
} else $tpl->set( '{foto}', "{THEME}/dleimages/noavatar.png" );}}else $tpl->set( '{foto}', "{THEME}/dleimages/noavatar.png" );

Тогда будет работать 2 способа. Код взят с моего файла Анкеты, Пример гляньте на моем сайте. https://webtimes.org/

banbanan
Юзер

banbanan - 18 декабря 2015 11:36 -

а как сделать так чтоб был виден статус пользователя?
когда вставляю этот код то ничего не пишет и не показывает


if (($row['lastdate'] + 1200) > $_TIME) {
        
        $tpl->set('[online]', "");
        $tpl->set('[/online]', "");
        $tpl->set_block("'\\[offline\\](.*?)\\[/offline\\]'si", "");
        
    } else {
        $tpl->set('[offline]', "");
        $tpl->set('[/offline]', "");
        $tpl->set_block("'\\[online\\](.*?)\\[/online\\]'si", "");
    }

stasex11
Юзер

stasex11 - 7 ноября 2016 12:44 -

на dle 11.1 не работает

atola
Юзер

atola - 18 мая 2017 16:36 -

В DE 11.3

$tpl->set('{avatar}', $avatar['foto']); - уже не работает.

Кто-нибудь, знает решение?

bek_790
Юзер

bek_790 - 18 января 2018 01:16 -

Вот: $tpl->set('{avatar}', .$avatar['foto']);

wearnings
Юзер

wearnings - 23 ноября 2018 03:52 -

Читай пост #69987

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

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

наверх