morgenshtern 5 Опубликовано: 13 августа 2016 Рассказать Опубликовано: 13 августа 2016 А чего не запилили такой тег? очень нужен Цитата Ссылка на сообщение Поделиться на других сайтах
morgenshtern 5 Опубликовано: 13 августа 2016 Рассказать Опубликовано: 13 августа 2016 Автор Еще бы не помешали такие теги [xfvalue_thumb_url_X_SIZE] где SIZE это размер например 32x32 или 64x64 Цитата Ссылка на сообщение Поделиться на других сайтах
malcov 4 Опубликовано: 13 августа 2016 Рассказать Опубликовано: 13 августа 2016 Вроде к настройках движка есть настройка по загружаемый фотографиям к новостям. + доп поля файлов Цитата Ссылка на сообщение Поделиться на других сайтах
morgenshtern 5 Опубликовано: 13 августа 2016 Рассказать Опубликовано: 13 августа 2016 (изменено) Автор Да в общем то я сделал то что мне требовалось, может кому пригодится При вставке в шаблон кода [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 Еще забыл добавить проверку, не создавать миниатюру если она уже есть на сервере Изменено 13 августа 2016 пользователем morgenshtern Цитата Ссылка на сообщение Поделиться на других сайтах
morgenshtern 5 Опубликовано: 13 августа 2016 Рассказать Опубликовано: 13 августа 2016 Автор Немного подправил функцию, теперь куда лучше 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; } Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.