Заказы и личный кабинет

Если в инструкции указана необходимость создания файла, а в вашем шаблоне уже присутствует такой файл, то файл дополняется по правилам составления Дизайн-хуков. Для быстрого включения/выключения дизайн-хука нужно поставить знак решетки # перед его определением в 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.

  1. Создать файл /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'
);
  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

[hook]
userorderdoclink="php/hook/userorderdoclink.hook.php";

Приветствие

Вывести приветственное сообщение после авторизации пользователя.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/autoload.hook.php с содержанием

<?
// Пример вывода дополнительного HTML кода для авторизованных пользователей
if (!empty($_SESSION['UsersId'])){
$disp='<Добро пожаловать, '.$_SESSION['UserLogin'].'!';
PHPShopParser::set('welcome',$disp);
}
  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

[autoload]
welcome="php/element/autoload.hook.php";
  1. Вставить переменную @welcome@ в нужное место шаблона.

Закрыть доступ на сайт

Требуется закрыть доступ обычным пользователям на внешнюю часть сайта на время его разработки. Разрешить отображение только авторизованному администратору через панель управления.

  1. Создать файл /phpshop/templates/имя шаблона/php/element/lock.inc.php с содержанием

<?
// Заглушка на время заполнения сайта
if(empty($_SESSION['logPHPSHOP']))
    exit('Сайт заполняется...');
  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

[autoload]
lock="php/element/lock.inc.php";

Закрыть временно сайт можно так же с помощью модуля Замок.

Заказ

Изменение вывода доставок

Магазин имеет всего 3 доставки. Нужно сделать выбор доставок через радио-переключатели для облегчения выбора покупателям.

  1. Создать файл /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'

);
  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

[hook]
phpshoporder="php/hook/order.hook.php";

Списывание товара со склада

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

  1. Создать файл /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'
);
  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

[hook]
phpshopdone="php/hook/done.hook.php";

Last updated