Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Стол заказов » Модификация аватарок DLE 16.1

Модификация аватарок DLE 16.1


 qwerty    10.09.2023    Стол заказов    1128    27 комментариев

Существует проблема при которой после смены фото в профиле DLE остается кэш старой фотки и при обычном обновлении страниц все равно продолжает показываться старая фотка. Эта мелочь сильно напрягает пользователей.

Необходима модификация, которая бы:
1. Решила данную проблему, и чтобы при смене нового аватара или сохранения профиля, фото автоматически бы обновлялось у пользователя, а не отображалось старое, а также чтобы в комментариях отображалось тоже свежее фото.

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

Способ с {cache-id} не предлагать, он бесполезен, так как обновляется в админке в ручную, а не пользователем.

Кто сможет взяться, пишите цену вопроса)

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

TeraMoune
Эксперт

TeraMoune - 10 сентября 2023 16:06 -

10$(980р) Принимаю только на Юмани \ Карта мир

Тестовый репозиторий установки плагинов: teramoune

qwerty
Юзер

qwerty - 11 сентября 2023 08:36 -

Заказ закрыт. TeraMoune выполнил удовлетворительно

raimikmb
Юзер

raimikmb - 11 сентября 2023 11:10 -

Тоже интересует решение данной проблемы

LazyDev
PHP-developer

LazyDev - 11 сентября 2023 12:34 -

raimikmb,
<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Rand tag for avatar</name>
	<description></description>
	<icon></icon>
	<version></version>
	<dleversion></dleversion>
	<versioncompare>==</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/profile.php">
		<operation action="after">
			<searchcode><![CDATA[$user_found = TRUE;]]></searchcode>
			<replacecode><![CDATA[$tpl->set('{rand-mt}', mt_rand(1, mt_getrandmax()));]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
</dleplugin>

-->
{foto}?v{rand-mt}

Мой блог: LazyDev.pro

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

lutskboy
Эксперт

lutskboy - 11 сентября 2023 12:46 -

решение никуда. автору не только в профиле а и в комментах нужно
?v{rand-mt} будет грузить с сервера каждый раз при просмотре профиля картинку

LazyDev
PHP-developer

LazyDev - 11 сентября 2023 13:56 -

lutskboy, ого, я не знал что картинка в ~100кб будет нагружать сервер

Мой блог: LazyDev.pro

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

raimikmb
Юзер

raimikmb - 11 сентября 2023 22:44 -

По сути тоже хороший вариант... а в идеале ?v{rand-mt} добавлялся бы только когда пользователь меняет аватарку и + кеш...

Реализовано как то на vgtimes ru...

web102
Юзер

web102 - 11 сентября 2023 16:07 -

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Актуальный аватар</name>
	<description></description>
	<icon></icon>
	<version></version>
	<dleversion></dleversion>
	<versioncompare>==</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/functions.php">
		<operation action="before">
			<searchcode><![CDATA[?>]]></searchcode>
			<replacecode><![CDATA[function getactualfoto($url){
	if($url) {
		$path = explode('/uploads/', $url);
		$foto = '/uploads/'.$path[1];
		return $foto.'?v'.filemtime(ROOT_DIR.$foto);
    } else return '';
}]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
	<file name="engine/modules/profile.php">
		<operation action="before">
			<searchcode><![CDATA[if( $allow_userinfo and $doaction == "adduserinfo" ) {]]></searchcode>
			<replacecode><![CDATA[$row['foto'] = getactualfoto($row['foto']);]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
	<file name="engine/modules/profile_innews.php">
		<operation action="before">
			<searchcode><![CDATA[if ( count(explode("@", $row['foto'])) == 2 ) {]]></searchcode>
			<replacecode><![CDATA[$row['foto'] = getactualfoto($row['foto']);]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
	<file name="engine/classes/templates.class.php">
		<operation action="before">
			<searchcode><![CDATA[if( isset($member_id['user_group']) AND $member_id['user_group'] != 5 ) {]]></searchcode>
			<replacecode><![CDATA[$member_id['foto'] = getactualfoto($member_id['foto']);]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
</dleplugin>

raimikmb
Юзер

raimikmb - 11 сентября 2023 20:31 -

Кстати прикольное решение, только где то тут ошибка:

function getactualfoto($url){
	if($url) {
		$path = explode('/uploads/', $url);
		$foto = '/uploads/'.$path[1];
		return $foto.'?v'.filemtime(ROOT_DIR.$foto);
    } else return '';
}


Создает не верный путь:

/uploads/fotos/uploads/fotos/

lutskboy
Эксперт

lutskboy - 11 сентября 2023 20:58 -

нету там ничего хорошего. будут грузится картинки каждый раз новые. браузер их не кеширует

web102
Юзер

web102 - 12 сентября 2023 07:55 -

Замените на
function getactualfoto($url){
    return ($url) ? $url.'?v'.filemtime(ROOT_DIR.parse_url($url)['path']) : '';
}

raimikmb
Юзер

raimikmb - 12 сентября 2023 20:02 -

Увы не работает... в логах пусто ((

raimikmb
Юзер

raimikmb - 11 сентября 2023 22:04 -

Не чего хорошего когда пользователь меняет аватарку а она не меняется. А потом по 10х одни и те же вопросы что да почему… и объяснять как сбросить им кеш браузера …

p.s. вариант выше да и если кеш прикрутить решил бы проблему. Брать дату файла и все…

Вообще считаю не доработкой DLE , какое то мистическое решение экономить место на диске…

lutskboy
Эксперт

lutskboy - 12 сентября 2023 12:53 -

а в чем економие?

raimikmb
Юзер

raimikmb - 12 сентября 2023 19:47 -

Ну это вопрос разработчикам DLE , почему аватарки загружаются одним и тем же именем… по хорошему каждая новая аватарка должна была иметь уникальное название… и проблем бы не было…

deadluk
Юзер

deadluk - 14 сентября 2023 14:44 -

ну так купи лицензию, напиши на форум dle о этой проблеме (можно конечно и без покупки попробоваь). пользователи поддержат твоё негодовние и они выкатят обновление. как-то так. а этот сайт они вряд ли читают.

dj-avtosh
PHP-developer

dj-avtosh - 12 сентября 2023 14:22 -

с filemtime самый верный вариант конечно, будет показывать всегда верную и кешироваться верно на диске.

По заказам пишем сюда: @Rud00y

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

raimikmb
Юзер

raimikmb - 13 сентября 2023 10:40 -

Цитата: web102
function getactualfoto($url){
return ($url) ? $url.'?v'.filemtime(ROOT_DIR.parse_url($url)['path']) : '';
}


Не пойму что в этой части не работает... логи пустые ...

web102
Юзер

web102 - 14 сентября 2023 07:36 -

Что значит "не работает"? не добавляется время изменения файла к пути фото? Где именно не работает? В профиле, в новостях?
Возможно, где-то еще есть урл фото, который не обрабатывается функцией.

web102
Юзер

web102 - 14 сентября 2023 10:47 -

Цитата: raimikmb
по хорошему каждая новая аватарка должна была иметь уникальное название… и проблем бы не было…

В файле engine/modules/profile.php найти
$foto_name = $thumb->save( "fotos/foto_" . $row['user_id'] . "." . $file_parts['extension'] );
и заменить на
$foto_name = $thumb->save( "fotos/" . $file_parts['filename'] . $row['user_id'] . "." . $file_parts['extension'] );

raimikmb
Юзер

raimikmb - 19 сентября 2023 13:36 -

Не работает... изменений к фото нет... ((

deadluk
Юзер

deadluk - 14 сентября 2023 14:50 -

Был ещё хороший плагин Avacrop от TeraMoune

TeraMoune
Эксперт

TeraMoune - 14 сентября 2023 16:10 -

Только он ничего из обсуждаемого тут не делает. Имена файлам он не меняет, и не добавляет никаких данных к выводу изображения (это делается только для редактирования)

Тестовый репозиторий установки плагинов: teramoune

deadluk
Юзер

deadluk - 14 сентября 2023 16:26 -

Он реализует нормальное добавление аватарки, а это даже лучше

raimikmb
Юзер

raimikmb - 30 сентября 2023 10:03 -

Цитата: dj-avtosh
с filemtime самый верный вариант конечно, будет показывать всегда верную и кешироваться верно на диске.


Лично я остался на таком варианте.

qwerty
Юзер

qwerty - 3 октября 2023 16:01 -

Можете больше не обсуждать, в DLE 17 разработчики сами исправили этот дурацкий недуг

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