#1
2 июня 2015 в 01:50
В default_item вывел отдельно код вывода фото и указал размер big, в админке указал создавать большие копии фото, но тут обнаружилась проблема, ранее загруженные картинки имеют размер normal и получается что при просмотре старой записи картинка не загружается. Получается нужно определить есть ли большой размер фото, если есть то загружать этот если нет то размер по меньше.
#2
2 июня 2015 в 02:02
$img= '/upload/u1/000/foto.jpg'; echo "Картинка есть"; } else { echo "Картинки нет"; }
#3
2 июня 2015 в 02:07
У меня еще идея проверить заполнено ли поле фото в базе данных
--- original: u1/004/abda415c.jpg big: u1/004/3cc38009.jpg normal: u1/004/29a7c938.jpg small: u1/004/8d391531.jpg micro: u1/004/8b15968b.jpg
Сегодня в 11:38
#4
2 июня 2015 в 02:11
Парвиз, проверка файла на хостинге не прокатывает, даже при наличии файла он выдает что файла нет. Видимо он путь к файлу по своему вычисляет. Второй вариант более надежнее
#5
2 июня 2015 в 02:24
Чувствую что разгадка здесь но разобрать не могу
function html_avatar_image($avatars, $size_preset='small'){ $config = cmsConfig::getInstance(); 'normal' => 'default/avatar.jpg', 'small' => 'default/avatar_small.jpg', 'micro' => 'default/avatar_micro.png' ); $avatars = $default; } $avatars = cmsModel::yamlToArray($avatars); } $src = $avatars[ $size_preset ]; $src = $config->upload_host . '/' . $src; } $size = $size_preset == 'micro' ? 'width="32" height="32"' : ''; return '<img src="'.$src.'" '.$size.' alt=""/>'; }
#6
2 июня 2015 в 07:29
Тут может быть два варианта. В случае с аватаром то использовать
в случае с отдельными картинками, то лучше этот
Но правки вносить удобнее в этот метод
В нём все значения изображения уже получены. В нём есть код
меняем его на что-то типа
Вместо return false; можно продолжать условия до значения micro. Но в данном случае это нормально если названия пресетов известны и не изменятся со временем.
Второй вариант это копнуть глубже — записывать названия пресетов с путями отсортированные по ширине пресета в БД и выводить их потом с проверкой в цикле поочереди начиная с большего.
function html_avatar_image($avatars, $size_preset='small')
function html_image($image, $size_preset='small', $alt='')
function html_image_src($image, $size_preset='small', $is_add_host=false)
$src = $image[ $size_preset ]; } else { return false; }
$src = $image[ $size_preset ]; } else { $src = $image[ 'normal' ]; } else { return false; } }
Второй вариант это копнуть глубже — записывать названия пресетов с путями отсортированные по ширине пресета в БД и выводить их потом с проверкой в цикле поочереди начиная с большего.
Можно проверять как предложил Evanescence. Только для функции file_exists нужен полный путь от корня хостинга а не сайта.
Например так
или так
Точно сейчас не припомню который правильнее. Возможно ещё слеши надо добавить перед u1. Пробуйте.
Например так
$img= cmsConfig::getInstance()->upload_root . 'u1/000/foto.jpg';
$img= cmsConfig::getInstance()->upload_path . 'u1/000/foto.jpg';
#8
5 июня 2015 в 01:03
С базой данных ничего не получится, есть, нет картинки на хостинге разницы нет, в базе данных почему то каждый размер заполняется ссылкой
original: u1/004/abda415c.jpg
big: u1/004/3cc38009.jpg этих картинок нет но ссылка на них в базе есть.
Выходит что придется проверять через file_exists.
--- original: u1/004/abda415c.jpg big: u1/004/3cc38009.jpg normal: u1/004/29a7c938.jpg small: u1/004/8d391531.jpg micro: u1/004/8b15968b.jpg
big: u1/004/3cc38009.jpg этих картинок нет но ссылка на них в базе есть.
Выходит что придется проверять через file_exists.
#9
5 июня 2015 в 01:19
Кстати данный вопрос касается всех пользователей InstantCMS2.
Допустим у вас есть какой нибудь тип контента (в моей случае объявления), вы добавляете к записям фотографии среднего размера, а спустя время вам понадобилось добавлять большие фотографии, вы для этого идете в настройки поля фотография у необходимого типа контента, ставите галочку на против -создавать прервью: большой, размер в записи: большой. Сохраняете и тут выявляется недочет, у всех старых записей нет в наличии прервью фоток — большой, и естественно все они будут без фотографий.
Допустим у вас есть какой нибудь тип контента (в моей случае объявления), вы добавляете к записям фотографии среднего размера, а спустя время вам понадобилось добавлять большие фотографии, вы для этого идете в настройки поля фотография у необходимого типа контента, ставите галочку на против -создавать прервью: большой, размер в записи: большой. Сохраняете и тут выявляется недочет, у всех старых записей нет в наличии прервью фоток — большой, и естественно все они будут без фотографий.
#10
5 июня 2015 в 01:53
Пока записал так.
<?php $img_found= $_SERVER['DOCUMENT_ROOT'][html_image_src($item['photo'], 'big', true)]; $img_found_size = 'normal'; } else { $img_found_size = 'big'; } ?>