Заказы и личный кабинет
Если в инструкции указана необходимость создания файла, а в вашем шаблоне уже присутствует такой файл, то файл дополняется по правилам составления Дизайн-хуков. Для быстрого включения/выключения дизайн-хука нужно поставить знак решетки # перед его определением в config.ini, пример:
#phpshopprice="php/hook/price.hook.php";
- выключенphpshopprice="php/hook/price.hook.php";
- включен
или поставить знак решетки # в массиве перехвата $addHandler в файле хука, пример:
$addHandler=array(''''#'''product'=>'product_pricecore_hook');
- выключен$addHandler=array('product'=>'product_pricecore_hook');
- включен
Ключ секции [hook] должен быть уникален, если требуется создать новый хук на тот же класс(ключ), то требуется объединить хуки по правилам составления дизайн-хуков.
Личный кабинет пользователя
Изменение доступных файлов отчетных документов
В лично кабинете пользователя при активном режиме синхронизации с 1С доступна загрузка документов (счетов и счет-фактур) в трех разных форматах HTML, XLS и DOC. Требуется оставить лишь расширение XLS.
Создать файл /phpshop/templates/имя шаблона/php/hook/userorderdoclink.hook.php с содержанием
<?
function userorderdoclink_mod_supplierdate_hook($obj, $value) {
if (is_array($value['row'])) {
// Описание столбцов
$dis = $obj->caption(__('Документооборот'), __('Дата'), __('Загрузка'));
$n = $value['val']['id'];
foreach ($value['row'] as $row) {
// Счета
if ($obj->PHPShopSystem->ifValue('1c_load_accounts')) {
$link_xls = '../files/docsSave.php?orderId=' . $n . '&list=accounts&tip=xls&datas=' . $row['datas'];
if (file_get_contents($link_xls)){
$dis.=$obj->tr(PHPShopText::a($link_xls, __('Счет на оплату'), false, false, false, '_blank', 'b'), PHPShopDate::dataV($row['datas']), PHPShopText::a($link_xls, __('XLS'), __('ФорматExcel'), false, false, '_blank', 'b')
);
}
}
// Счета-фактуры
if (!empty($row['datas_f']) and $obj->PHPShopSystem->ifValue('1c_load_invoice')) {
$link_xls = '../files/docsSave.php?orderId=' . $n . '&list=invoice&tip=xls&datas=' . $row['datas'];
if (file_get_contents($link_xls)){
$dis.=$obj->tr(PHPShopText::a($link_xls, __('Счет-фактура'), false, false, false, '_blank', 'b'), PHPShopDate::dataV($row['datas_f']), PHPShopText::a($link_xls, __('XLS'), __('Формат Excel'), false, false, '_blank', 'b') );
}
}
}
return $dis;
}
}
$addHandler = array
(
'userorderdoclink' => 'userorderdoclink_mod_supplierdate_hook'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]
userorderdoclink="php/hook/userorderdoclink.hook.php";
Приветствие
Вывести приветственное сообщение после авторизации пользователя.
Создать файл /phpshop/templates/имя шаблона/php/hook/autoload.hook.php с содержанием
<?
// Пример вывода дополнительного HTML кода для авторизованных пользователей
if (!empty($_SESSION['UsersId'])){
$disp='<Добро пожаловать, '.$_SESSION['UserLogin'].'!';
PHPShopParser::set('welcome',$disp);
}
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[autoload]
welcome="php/element/autoload.hook.php";
Вставить переменную
@welcome@
в нужное место шаблона.
Закрыть доступ на сайт
Требуется закрыть доступ обычным пользователям на внешнюю часть сайта на время его разработки. Разрешить отображение только авторизованному администратору через панель управления.
Создать файл /phpshop/templates/имя шаблона/php/element/lock.inc.php с содержанием
<?
// Заглушка на время заполнения сайта
if(empty($_SESSION['logPHPSHOP']))
exit('Сайт заполняется...');
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[autoload]
lock="php/element/lock.inc.php";
Закрыть временно сайт можно так же с помощью модуля Замок.
Заказ
Изменение вывода доставок
Магазин имеет всего 3 доставки. Нужно сделать выбор доставок через радио-переключатели для облегчения выбора покупателям.
Создать файл /phpshop/templates/имя шаблона/php/hook/order.hook.php с содержанием
<?
/**
* Вывод доставок через переключатели
*/
function delivery_hook($obj){
$PHPShopDeliveryArray = new PHPShopDeliveryArray();
$DeliveryArray = $PHPShopDeliveryArray->getArray();
$disp=null;
if(is_array($DeliveryArray))
foreach($DeliveryArray as $key=>$row)
$disp.=PHPShopText::setInput('radio', 'dostavka_metod', $row['id'],false,false,'document.getElementById('d').value='.$key.';document.getElementById('makeyourchoise').value='DONE'',false,false,$row['city']);
$disp.=PHPShopText::setInput('hidden', 'makeyourchoise', '');
$obj->set('orderDelivery',$disp);
return true;
}
$addHandler=array
(
'delivery'=>'delivery_hook'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]
phpshoporder="php/hook/order.hook.php";
Списывание товара со склада
Требуется автоматические списывать товар со склада сразу после создания нового заказа пользователем
Создать файл /phpshop/templates/имя шаблона/php/hook/done.hook.php с содержанием
<?
/**
* Списываем количество со склада
*/
function cancellation_from_warehouse($obj, $data, $rout) {
$carts = $obj->PHPShopCart->getArray();
foreach ($carts as $cart) {
$PHPShopOrm = new PHPShopOrm($GLOBALS['SysValue']['base']['products']);
$row = $PHPShopOrm->select(array('items'), array('id' => '=' . intval($cart['id'])));
if (is_array($row)) {
$PHPShopOrm->clean();
$items = $row['items'] - $cart['num'];
$PHPShopOrm->update(array('items_new' => $items), array('id' => '=' . $cart['id']));
}
}
}
$addHandler=array (
'sms' => 'cancellation_from_warehouse'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]
phpshopdone="php/hook/done.hook.php";
Last updated
Was this helpful?