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

Как вывести аватар автора в новостях без нагрузки на базу DLE 11.2?


     16.01.2017    Все вопросы » Хаки    1377

вопрос
Есть множество различных методов, которые позволяют вывести аватар автора в новости, но они все сильно нагружают базу (если новостей много). Есть ли метод, при котором база не будет нагружена? Заранее спасибо!
P.S. В данный момент модуль от Пафнутия не работает на новых версиях...

Ответа пока нет


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

lutskboy
Эксперт

lutskboy - 16 января 2017 16:04 -

но они все сильно нагружают базу (если новостей много)

че за бред. причем тут кол-во новостей. или вы хотите вывести в краткой новости? тогда да. будет столько запросов сколько новостей на странице. но можно в таблице сделать поле. и никакой нагрузки

Railway_Academy
Юзер

Railway_Academy - 16 января 2017 16:11 -

Мне нужно в краткой новости вывести... а какое поле нужно создать и какой метод лучше использовать? А то их много тут)))

UsurpatorVaticana
Юзер

UsurpatorVaticana - 16 января 2017 18:02 -

Один запрос это не большая нагрузка, добавьте кэширование если возможно
Без нагрузки на бд это без аватара, как вариант логин пользователя каким нибудь jquery плагином оформить так, чтоб походил на аватар

Stasiq
Юзер

Stasiq - 16 января 2017 18:45 -


vitnet
PHP-developer

vitnet - 16 января 2017 19:26 -

Есть ли метод, при котором база не будет нагружена?

Ваш вариант полная хрень без кеша.

DomiTori
Юзер

DomiTori - 17 января 2017 06:57 -

***Комментарий удален***

LazyDev
PHP-developer

LazyDev - 17 января 2017 08:12 -

Цитата: DomiTori
Еще вариант

Цитата: vitnet
Ваш вариант полная хрень без кеша.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

Railway_Academy
Юзер

Railway_Academy - 17 января 2017 11:35 -

vitnet,
А как тогда организовать такое? Кеширование выставлено хостером.

vitnet
PHP-developer

vitnet - 17 января 2017 13:18 -

Вечером скину.

Railway_Academy
Юзер

Railway_Academy - 17 января 2017 14:06 -

vitnet,
спасибо)

dj-avtosh
PHP-developer

dj-avtosh - 17 января 2017 15:44 -

Простите, я не в теме.
LEFT JOIN

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

vitnet
PHP-developer

vitnet - 17 января 2017 16:51 -

Совершенно верно!

Пример SQL запроса для новостей на главной
					$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason, u.foto FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) LEFT JOIN " . USERPREFIX . "_users u ON (u.name=e.editor) WHERE {$stop_list}approve=1 AND allow_main=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

В show.short.php

Найти
		$tpl->set( '', $news_find );

Добавить ниже
		if( count(explode("@", $row['foto'])) == 2 ) {
			$tpl->set( '{gravatar}', $row['foto'] );	

			$tpl->set( '{foto}', '//www.gravatar.com/avatar/' . md5(trim($row['foto'])) . '?s=' . intval($user_group[$row['user_group']]['max_foto']) );
		} else {
			if( $row['foto'] ) {
				if( strpos($row['foto'], "//") === 0) $avatar = "http:" . $row['foto'];
				else $avatar = $row['foto'];

				$avatar = @parse_url($avatar);

				if( $avatar['host'] ) {
					$tpl->set( '{foto}', $row['foto'] );
				} else $tpl->set( '{foto}', $config['http_home_url'] . "uploads/fotos/" . $row['foto'] );
			} else $tpl->set( '{foto}', "{THEME}/dleimages/noavatar.png" );

			$tpl->set( '{gravatar}', '' );
		}

Готово!

souz21
Юзер

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

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

наверх