Перейти к публикации

Рекомендованные сообщения

Вроде к настройках движка есть настройка по загружаемый фотографиям к новостям. + доп поля файлов

Ссылка на сообщение
Поделиться на других сайтах

Да в общем то я сделал то что мне требовалось, может кому пригодится

 

 

 

При вставке в шаблон кода [xfvalue_thumb_64x64_url_poster] будет автоматически создаваться изображение в папке

/uploads/posts/YYYY-MM/64x64/ИМЯ-КАРТИНКИ.jpg

 

poster - имя доп поля изображения

При этот размер можно вставлять любой в формате ШИРИНАxВЫСОТА

 

в файлах main, showfull, topnews, showshort, showcustom

перед

$tpl->copy_template = str_replace( "[xfvalue_thumb_url

вставляем код

$tpl->copy_template = preg_replace_callback ( "#\\[xfvalue_thumb_(.+?)_url_{$value[0]}\\]#is", 
							function($match) use($path_parts){
								return create_custom_thumb($match,$path_parts);
							}, $tpl->copy_template );	

а в файл functions вставляем

function create_custom_thumb( $matches=false,$path_parts=false ) {
	
	global $config;
	
	require_once ENGINE_DIR . '/classes/thumb.class.php';
	
	//vd($matches);
	//vd($path_parts);
	
	if( is_array($matches) AND is_array($path_parts) ) {

		$thumb = new thumbnail( $config['http_home_url'] . "uploads/posts/" . $path_parts['dirname']."/thumbs/".$path_parts['basename'] );
		
		if( $thumb->size_auto( $matches[1], 0 ) ) {
			
			$thumb->jpeg_quality( $config['jpeg_quality'] );
			
			if( !is_dir( ROOT_DIR . "/uploads/posts/" . $path_parts['dirname'] ) ) {
				@mkdir( ROOT_DIR . "/uploads/posts/" . $path_parts['dirname'] ."/". $matches['1'], 0777 );
				@chmod( ROOT_DIR . "/uploads/posts/" . $path_parts['dirname'] ."/". $matches['1'], 0777 );
			}
			$thumb->save( ROOT_DIR  . "uploads/posts/" . $path_parts['dirname']."/".$matches['1']."/".$path_parts['basename']);
			
			@chmod( ROOT_DIR  . "uploads/posts/" . $path_parts['dirname']."/".$matches['1']."/".$path_parts['basename'] );
		}
	
		$url= $config['http_home_url'] . "uploads/posts/" . $path_parts['dirname']."/".$matches['1']."/".$path_parts['basename'];	
		
	}
	else{
		$url= false;
	}
	
	return $url;
}

Единственный минус при удалении новости эти миниатюры останутся на сервере.

 

Вот такой хак от меня. До этого я изменял изображение тумбы размером 200px до 32 px средствами css и гугл меня ругал за это

 

PS Еще забыл добавить проверку, не создавать миниатюру если она уже есть на сервере

Изменено пользователем morgenshtern
Ссылка на сообщение
Поделиться на других сайтах

Немного подправил функцию, теперь куда лучше

function create_custom_thumb( $matches=false,$path_parts=false ) {
	
	global $config;
	
	require_once ENGINE_DIR . '/classes/thumb.class.php';
	
	$url= false;
	
	//vd($path_parts);
	//vd( $matches);

	if( is_array($matches) AND is_array($path_parts)) {
		
		if(file_exists( ROOT_DIR . "/uploads/posts/" . $path_parts['dirname']."/".$matches['1']."/".$path_parts['basename'] )	){
			$url= $config['http_home_url'] . "uploads/posts/" . $path_parts['dirname']."/".$matches['1']."/".$path_parts['basename'];	
		}
		else{
			$thumb = new thumbnail( $config['http_home_url'] . "uploads/posts/" . $path_parts['dirname']."/thumbs/".$path_parts['basename'] );
			
			//vd( $thumb);	
			
			if( $thumb->size_auto( $matches[1], 0 ) ) {
				
				$thumb->jpeg_quality( $config['jpeg_quality'] );
				
				if( !is_dir( ROOT_DIR . "/uploads/posts/" . $path_parts['dirname']."/". $matches['1'] ) ) {
					@mkdir( ROOT_DIR . "/uploads/posts/" . $path_parts['dirname'] ."/". $matches['1'], 0777 );
					@chmod( ROOT_DIR . "/uploads/posts/" . $path_parts['dirname'] ."/". $matches['1'], 0777 );
				}
				$thumb->save( ROOT_DIR  . "/uploads/posts/" . $path_parts['dirname']."/".$matches['1']."/".$path_parts['basename']);
				
				@chmod( ROOT_DIR  . "/uploads/posts/" . $path_parts['dirname']."/".$matches['1']."/".$path_parts['basename'], 0666 );
				
				$url= $config['http_home_url'] . "uploads/posts/" . $path_parts['dirname']."/".$matches['1']."/".$path_parts['basename'];	
			}

		}
		
	}

	return $url;
}

 

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...