Можно ли использовать phpthumb для подгонки изображения перед отправкой письма?

Есть форма письма для отправки клиенты на почту. Нужно вставить изображение купленного товара, но так чтобы оно не растягивалось. В корзине на сайте использую [[phpthumb? &input=`[+img+]` &options=`w=36,h=76,far=1,bg=FFFFFF`]]. Можно ли подобное сделать в форме письма перед отправкой? А то уж очень некорректно получается. Изображения есть широкие и узкие. Поэтому нужно сделать подгонку по ширине или высоте, но так что бы само изображение не пострадало.

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

avatar
Я обычно плагином на событие сохранение документа генерирую превьюшки. А потом использую что где нужно, например, в каталоге всех товаров и в корзине вывожу превьюшку, а на странице самого товара большое изображение.
Думаю, у вашем случае так тоже можно, если проблема только в размерах отправляемого изображения.
avatar
Александр, если не затруднит можно подробнее. Не совсем понимаю как мне это использовать.
avatar
Сейчас изображения в письме отображаются, но не тех размеров, так?
avatar
Да, все верно.
avatar
Тогда замените "[+current_image+]" на "[+needed_thumb+]" в чанке который выводится в письме для товара.
А tv needed_thumb генерируйте как я писал выше. Вот пример:
$e=&$modx->Event;
if($e->name=='OnDocFormSave'){
	$id=$e->params['id'];
	$table=$modx->getFullTableName('site_tmplvar_contentvalues');
	$tv_image_id=6;
	$tv_thumb_id=10;
	//--------------------------
	$res=$modx->db->select('value',$table,"tmplvarid=".$tv_image_id." AND contentid=".$id);
	if($res and $modx->db->getRecordCount($res)>0){//есть изображение
		$tv_image=$modx->db->getValue($res);
		$res=$modx->db->select('value',$table,"tmplvarid=".$tv_thumb_id." AND contentid=".$id);
		if($res and $modx->db->getRecordCount($res)<=0){//нет превьюшки
			$options='w=570,h=570,zc=1';
			$params=array(
				'input'=>$tv_image,
				'bg'=>'FFFFFF',
				'options'=>$options
			);
			$tv_thumb=$modx->runSnippet('phpthumb',$params);
			//записываем
			$fields=array(
				'tmplvarid'=>$tv_thumb_id, 
				'value'=>$tv_thumb,
				'contentid'=>$id
			);
			$modx->db->insert($fields,$table);
		}
	}
}

По идее $tv_image_id, $tv_thumb_id и $options можно сделать параметрами плагина.
avatar
Они ведь сгенерируются в папке cache? А если ее вычистить, что будет?
avatar
Не проверял, но пока никаких проблем не возникало.
avatar
Я на этапе подготовки письма к отправке вызываю prepare-сниппет, в котором вызываю phpthumb с нужными параметрамии. Это в случае с FormLister.

В случае с eForm — опять-таки вызываю phpthumb в функции eFormOnBeforeMailSent($fields), сохранив результаты работы сниппета в $fields.

Можно также сделать так — заготовить чанк для заказанного товара, где будет прописан вызов phpThumb. А перед отправкой письма для заказанных товаров таблицу с заказанными товарами построить с помощью того же DocLister или своего сниппета, передав ему id товаров и этот чанк, сохранить сгенерированный html в плейсхолдер, а в шаблоне письма просто вывести этот плейсхолдер.
Комментарий отредактирован 2017-10-14 00:01:49 пользователем Dreamer
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.