Можно поступить красивее и добавить свое поле к стандартным minishop2, инструкций полно, но мне, если честно, уже было лениво это делать и ссылку я делаю в стандарном поле text_address. Итак, по порядку.
Обычная форма, например tpl.msOrder, под ней (после тега form)
<div class="cash__form-file">
<span id="result">Прикрепить реквизиты организации</span>
<input type="file" name="file[]" id="js-file">
</div>
И популярный в сети скрипт в шаблоне корзины.
$("#js-file").change(function(){
if (window.FormData === undefined) {
alert('В вашем браузере FormData не поддерживается')
} else {
var formData = new FormData();
formData.append('file', $("#js-file")[0].files[0]);
$.ajax({
type: "POST",
url: '/assets/upload.php',
cache: false,
contentType: false,
processData: false,
data: formData,
dataType : 'json',
success: function(msg){
if (msg.error == '') {
$("#js-file").hide();
$('#result').html('Файл '+msg.success+' успешно загружен');
$('.cash__form input[name=text_address]').val('<a href="site.ru/assets/uploads/user_images/'+msg.success+'" target="_blank">'+msg.success+'</a>');
} else {
$('#result').html(msg.error);
}
}
});
}
});
Обратите внимание на путь к картинке (каталог user_images заранее нужно создать) и путь к сайту. Теперь создаём upload.php. Да, это может быть и ресурс, но мы идем по пути для ленивых и тех, кто ночь промучался и делает форму на рассвете с пятой чашкой кофе, пытаясь вставить файл в само письмо.
< ? php // тут убрать пробелы
// Название <input type="file">
$input_name = 'file';
// Разрешенные расширения файлов.
$allow = array();
// Запрещенные расширения файлов.
$deny = array(
'phtml', 'php', 'php3', 'php4', 'php5', 'php6', 'php7', 'phps', 'cgi', 'pl', 'asp',
'aspx', 'shtml', 'shtm', 'htaccess', 'htpasswd', 'ini', 'log', 'sh', 'js', 'html',
'htm', 'css', 'sql', 'spl', 'scgi', 'fcgi', 'exe'
);
// Директория куда будут загружаться файлы.
$path = '/путь от корня/public_html/assets/uploads/user_images/';
$error = $success = '';
if (!isset($_FILES[$input_name])) {
$error = 'Файл не загружен.';
} else {
$file = $_FILES[$input_name];
// Проверим на ошибки загрузки.
if (!empty($file['error']) || empty($file['tmp_name'])) {
$error = 'Не удалось загрузить пустой файл. ';
} elseif ($file['tmp_name'] == 'none' || !is_uploaded_file($file['tmp_name'])) {
$error = 'Не удалось загрузить файл, нет названия файла.';
} else {
// Оставляем в имени файла только буквы, цифры и некоторые символы.
$pattern = "[^a-zа-яё0-9,~!@#%^-_\$\?\(\)\{\}\[\]\.]";
$name = mb_eregi_replace($pattern, '-', $file['name']);
$name = mb_ereg_replace('[-]+', '-', $name);
$name = date('Y-m-d-H-i___').$name;
$parts = pathinfo($name);
if (empty($name) || empty($parts['extension'])) {
$error = 'Недопустимый тип файла';
} elseif (!empty($allow) && !in_array(strtolower($parts['extension']), $allow)) {
$error = 'Недопустимый тип файла';
} elseif (!empty($deny) && in_array(strtolower($parts['extension']), $deny)) {
$error = 'Недопустимый тип файла';
} else {
// Перемещаем файл в директорию.
if (move_uploaded_file($file['tmp_name'], $path . $name)) {
// Далее можно сохранить название файла в БД и т.п.
$success = $name;
} else {
$error = 'Не удалось загрузить файл - нет директории.';
}
}
}
}
// Вывод сообщения о результате загрузки.
if (!empty($error)) {
$error = '<p style="color: red">' . $error . '</p>';
}
$data = array(
'error' => $error,
'success' => $success,
);
header('Content-Type: application/json');
echo json_encode($data, JSON_UNESCAPED_UNICODE);
exit();
Ну вот и всё. Почти. Теперь идем в чанк письма менеджеру (конечно своему, не родному, чтобы не затерся).
{extends 'my.msEmail'}
{block 'title'}
{'ms2_email_subject_new_manager' | lexicon : $order}
{/block}
{block 'file'}
<tr><th style="{$style.th}">Реквизиты</th><td></td></tr>
{/block}
И чанк my.msEmail. Не весь привожу, а то много текста будет.
<table class="body-wrap" style="padding:0 20px 20px 20px;width: 100%;background:#f6f6f6;margin-top:10px;">
<tr>
<td></td>
<td class="container" style="border:1px solid #f0f0f0;background:#ffffff;width:800px;margin:auto;">
<div class="content">
<h3 style="{$style.h}{$style.h3}">покупатель</h3>
<table style="width:100%;">
<tr>
<th style="{$style.th}">E-mail</th><td>{$user.email}</td></tr>
<tr> <th style="{$style.th}">Ф.И.О. получателя</th><td>{$address.receiver}</td></tr>
<tr><th style="{$style.th}">Телефон</th> <td>{$address.phone}</td></tr>
<tr><th style="{$style.th}">Город</th> <td>{$address.city}</td></tr>
<tr><th style="{$style.th}">Комментарий</th><td>{$address.comment}</td></tr>
{block 'file'}{/block}
<tr>
<td><p>Способ доставки:<b></th><td>{$delivery.name}</b></p></td>
</tr>
</table>
</div>
<!-- /content -->
</td>
<td></td>
</tr>
</table>
В итоге в письме у нас есть ссылка на загруженный файл. Да, не очень удобно, но зато она есть :)
Комментарии (0)