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

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

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

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

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

 

 

 

При вставке в шаблон кода [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;
}

 

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

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...