Настройка превью фотосета

Исходная ситуация: на сайте установлен плагин Main preview. Создаем тип топика — фотосет. При заполнении топика загружаем фотосет (отмечаем превью), и загружаем превью для статьи с помощью плагина.
Есть код, который выводит превью к топику.

{if $oTopic->getPreviewImageWebPath()}
<a href="{$oTopic->getUrl()}"><img class="topic_preview" src="{$oTopic->getPreviewImageWebPath({cfg name='topic.thumbnail.img_size'})}"></a>
{/if} 


Если удалить превью созданное плагином (при редактировании фотосета) и сохранить, не заливая новую, подгружается превью из самого фотосета (отмеченное как превью). Загвоздка в том, что подгружаемая картика с разрешением 1000crop а мне нужно вытянуть 750crop (в конфиге настроено для фотосета).

Вопрос.

1. Как дописать условие, чтобы подгружалась нужная мне превьюха из фотосета?
2. Как дописать условие, чтобы подгружалась картинка из папки images, в случаи удаления всех превьюх (топик без превью).

PS Поменять 1000crop на 750crop в файле фотосета — не вариант! Нужны оба размера (одна картинка на главной, другая внутри топика).

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

avatar
Условие для миниатюр.

{if $oMainPhoto}
	<img src="{$oMainPhoto->getWebPath(__size__)}" alt="" />
{else}
	{if $oTopic->getType()=='photoset' and $oTopic->getPreviewImage()}
		<img src="{$oTopic->getPreviewImageWebPath('__size__')}" alt="" />
	{elseif $oTopic->getPreviewImage()}
		<img src="{$oTopic->getPreviewImageWebPath('__size__')}" alt="" />
	{else}
		{* Если надо заглушку *}
		<img src="{cfg name='path.static.skin'}/images/no_avatar.jpg" alt="" />
		}
	{/if}
{/if}


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

{if $bTopicList}

{else}

{/if}
avatar
Благодарю за помощь! Пока не получается. Буду дальше пробовать, отпишусь что получилось. Все равно при удалении превью плагина Main preview, в TopicList с фотосета подтягивает не тот размер (на странице самого топика сделан вывод основного превью фотосета — 1080, его и выводит в TopicList)
avatar
Вру, превью фотосета подтягивается нужного размера (750crop), но почему — то летит верстка (превью должно быть квадратное, а оно вытягивается вниз). Хотя классы прописываю те же. Будем рыть дальше)
avatar
Скорее всего превью загружается меньше чем 750х750 вот и растягивается, протестируйте на большой картинке.
avatar
Да действительно! В общем понял, что происходит, но причину этого и варианты решения не представляю.
При добавлении картинок в фотосет и сохранении топика, при условии загрузки и выбора превьюхи через плагин Main preview, картинки фотосета кропятся в соответствии с настройками в конфиге (в моем случае
array(
		'w' => 750,
		'h' => 750,
		'crop' => true,
	)
Но если превьюха плагина Main preview не выбрана, и превью топика устанавливается одна из картинок фотосета — при сохранении топика превьюха фотосета кропится не правильно (обрезается длина картинки, а высота остается 750).
Не знаете в чем загвоздка?
avatar
Может у вас в конфиге указано типа того:

array(
		'w' => 750,
		'h' => 300,
		'crop' => true,
	),
array(
		'w' => 750,
		'h' => 750,
		'crop' => true,
	)


Вот и берет первый или последний, т.к. при обращении к объекту передается только ширина. Сделайте на один пиксель больше — 751, и проверьте.

Наверное знаете, но все же, для фотосета и плагина, должны быть crop параметры одинаковые.
avatar
Они и так одинаковые, сейчас попробую сделать разные.
Настройка фотосета
array(
		'w' => 1000,
		'h' => null,
		'crop' => false,
	),
	array(
		'w' => 500,
		'h' => null,
		'crop' => false,
	),
	array(
		'w' => 100,
		'h' => 65,
		'crop' => true,
	),
	array(
		'w' => 50,
		'h' => 50,
		'crop' => true,
	),
	
	array(
		'w' => 750,
		'h' => 750,
		'crop' => true,
	)
);


Настройка плагина
$config['size_images_preview']=array(

	array(
		'w' => 750,
		'h' => 750,
		'crop' => true,
	),
array(
		'w' => 1080,
		'h' => 512,
		'crop' => true,
	)
);
avatar
Вроде правильно все. Если через инструмент разработчика навести на ссылку обрезанной картинки какой размер показывает? 750х750? Если да, то дело в с css, а конкретней:

overflow: hidden;
height: *;
avatar
Я смотрю в папке uploads.
avatar
Проверил на чистом движке. Идет некорректная загрузка превьюхи из фотосета (Отмеченого как превью к топику) — если в настройках плагина Main preview стоит значение
array(
		'w' => 750,
		'h' => 750,
		'crop' => true,
	)

то превью обрезается по высоте (т.е. высота получается 750, а ширина картинки произвольная).
Может можно как-нибудь поправить?
avatar
Не сталкивался с подобным. Произвольная ширина может быть только если загруженная картинка меньше чем 750, если же она больше при загрузке то и кроп отработает правильно, по крайне мере на размерах 630х630 точно. Чисто ради эксперимента, проверьте с более меньшим значением, например 500х500, получится?
avatar
Ух ты действительно). 550crop работает стабильно, меня устраивает)! Видать стоит какое-то ограничение на размер!?.. Еще раз спасибо за помощь!
avatar
Нет, не помогает.
А отключить в фотосете функцию «Отмечено как превью к топику» можно? Чтобы если превью Main preview не выбрано, ставилась заглушка и все.
avatar
Я смотрю в папке uploads.

А вы посмотрите через инструмент разработчика (firebag), какой размер выдаст?

Может быть какой плагин назначает свои превьюшки по размеру используя маинпревью (есть такие в каталоге). Еще посмотрите в конфиге шаблона, там можно переопределять картинки для фотосета, может там есть 750х*.

А отключить в фотосете функцию

.photo-preview-state { display: none; }
avatar
А отключить в фотосете функцию

И из условия вывода, убрать oMainPhoto
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.