Часто магазину требуется загрузить файлы клиента к заказу, например pdf файл с реквизитами, у joomshopping нет такого функционала, но его можно добавить.
Для загрузки файлов будем использовать aJax библиотеку plupload
1.Размещаем HTML блок для загрузки файлов
<div class="downloaddiv" id="downloaddiv">
<div class="filename filelist" id="filelist"><?php if (!isset($_SESSION['orderfn'])) $_SESSION['orderfn']='';?></div>
<div class="btnfilediv">
<a class="btn filebtns" id="filebtns">Загрузить файл</a>
<small class="filebtns">*Ограничения: не более 5мб; Форматы: zip,rar,pdf,jpg,bmp,png</small>
</div>
<div class="drop-target" id="drop-target" style="display:none">
<input type="hidden" id="siteurl" value="<?php echo JURI::root()?>">
<a id="btnsu" class="btnsu" href="javascript:;"></a>
<a class="uploadfiles" id="uploadfiles" href="javascript:;"></a>
</div>
</div>
2.Размещаем файлы
- -для функционала загрузки создаем /js/upfile.js
- -размещаем на сайте библиотеку plupload
3.Подключаем файлы в корзине или главной странице, размещать ниже блока из пунтка 1
- <script src="https://site.ru/plupload/js/plupload.full.min.js"></script>
- <script src="https://site.ru/js/upfile.js" type="text/javascript"></script>
4.Актуализировать /plupload/../upload.php
- Подписать актуальные директории
- Добавить обработку кирилицы в имени файла
5.Добавить колонку fn в таблицу #__jshopping_orders
6.Добавить обработку при сохранении заказа
coponents/com_jshopping/models/checkoutorder.php
функция orderDataSave(&$adv_user, &$post)
if (isset($_SESSION['orderfn']) and strlen($_SESSION['orderfn']))
{
$file=JPATH_ROOT.DS.'tmp'.DS.$_SESSION['orderfn'];
$new_name=JPATH_ROOT.DS.'user_files'.DS.$order->order_id.DS.$_SESSION['orderfn'];
if (!file_exists(JPATH_ROOT.DS.'user_files'.DS.$order->order_id)) {mkdir(JPATH_ROOT.DS.'user_files'.DS.$order->order_id, 0777, true);}
if (rename($file, $new_name))
{
$db->setquery("update #__jshopping_orders set fn='".$order->order_id.DS.$_SESSION['orderfn']."' where order_id='".$order->order_id."' ");$db->execute();
}
}
7.Сделать вывод ссылок на файл в списке заказов
/admnistrator/com_jshopping/views/order/list.php
echo'<hr style="margin:3px;">Файлы польователя:<br><a href="'.JURI::root().'user_files/'.$row->fn.'" download>'.str_replace($row->order_id.'/','',$row->fn).'</a>';
9.Добавить обработку aJax при добавлении файла
if (isset($_POST['savefiletoorder']))
{
$fn=$_POST['datas'];
$fn=rus2translit_index($fn);
$_SESSION['orderfn']=$fn;
echo 'Файл успешно загружен "'.$fn.'"';
exit();
}
Функция обработка в транслит:
Вы можете получить доступ,купив эту доработку
Скрипт запуска зарузки upfile.js:
Вы можете получить доступ,купив эту доработку