Категории |
[хак] Запрещенные модули оплаты для товара при оформлении заказаЕсли у товара выбрали модуль Киви, то при оформлении заказа этого модуля оплаты не будет. Важно помнить! Если покупатель положил в корзину товары у которых в итоге попадут под запрет все модули оплаты, то покупатель не сможет завершить заказ. Так как не будет вообще модулей оплаты в списке! 1 - Добавление поля в таблицу товара. Выполнить запрос в PHPMyAdmin ALTER TABLE os_products ADD products_pay varchar(255) NOT NULL default ''; Где os_ заменить на префикс который указывали в процессе установки Shopos Либо, если нет возможности, то создать файл, например _a.php с таким содержимым <?php include 'includes/top.php'; os_db_query("ALTER TABLE ".DB_PREFIX."products ADD products_pay varchar(255) NOT NULL default '';"); И в строке браузера выполнить ваш-сайт/_a.php, после чего удалить этот файл. 2 - Добавление поля на страницу добавление\редактирования товара. Открываем файл \admin\includes\modules\new_product.php И ищем строку <!--// Products URL begin //--> Перед ней вставляем <tr> <td></td> <td></td> <td></td> <td valign="top" class="main">Запрещенные модули оплаты</td> <td valign="top" class="main"> <?php // Модули оплаты в зависимости от товара // Если есть модули, которые запрещены $products_pay = array(); if (!empty($pInfo->products_pay)) { // то формируем массив $products_pay = explode(',', $pInfo->products_pay); } // Подключаем класс модулей оплаты require (_CLASS.'payment.php'); $payment_modules = new payment; $selection = $payment_modules->selection(); // Список модулей $paymentModules = ''; if (is_array($selection)) { foreach($selection AS $k => $v) { // если какой-то выбран, то выделяем $selected = (in_array($v['id'], $products_pay) ? 'selected' : ''); $paymentModules .= '<option value="'.$v['id'].'" '.$selected.'>'.$v['module'].'</option>'; } } // Модули оплаты в зависимости от товара ?> <select size="8" name="products_pay[]" multiple> <option value="">Нет</option> <?php echo $paymentModules; ?> </select> </td> </tr> Сохраняем (utf8 без бом! используем notepad++, если нет опыта правки файлов) Больше нам этот файл не нужен. 3 - Сохранение изменений Открываем файл \admin\includes\classes\categories.php И ищем строку $sql_data_array = array ('products_quantity' => os_db_prepare_input($products_data['products_quantity']), Перед ней вставляем // Модули оплаты в зависимости от товара $products_pay = ''; if (!empty($products_data['products_pay']) && is_array($products_data['products_pay'])) { $products_pay = implode(',', $products_data['products_pay']); } // Модули оплаты в зависимости от товара Ищем строку 'yml_cbid' => os_db_prepare_input($products_data['yml_cbid']), После нее вставляем 'products_pay' => os_db_prepare_input($products_pay), Сохраняем. Больше нам этот файл не нужен. 4 - Изменения на странице выбора оплаты. Открываем файл \checkout_payment.php Ищем строку $selection = $payment_modules->selection(); Выше или ниже, не важно, вставляем // Модули оплаты в зависимости от товара $cpids = array(); foreach ($_SESSION['cart']->get_products() AS $pids) { $cpids[] = $pids['id']; } $paymentDisabled = array(); $pProductsQuery = os_db_query("SELECT products_id, products_pay FROM ".DB_PREFIX."products WHERE products_id IN (".implode(',', $cpids).")"); if (os_db_num_rows($pProductsQuery) > 0) { while($pd = os_db_fetch_array($pProductsQuery)) { if (!empty($pd['products_pay'])) { $aModules = explode(',', $pd['products_pay']); foreach ($aModules AS $mod) { $paymentDisabled[] = $mod; } } } } // Модули оплаты в зависимости от товара Ищем код if (($selection['id'] == $payment) || ($n == 1)) { $selection['checked'] = 1; } Ниже вставляем // Модули оплаты в зависимости от товара if (!empty($paymentDisabled) && in_array($selection['id'], $paymentDisabled)) { $selection['disabled'] = 1; } // Модули оплаты в зависимости от товара Сохраняем. Больше нам этот файл не нужен. Теперь идем в файл шаблона \themes\<шаблон>\module\checkout_payment_block.html Ищем код {foreach name=aussen item=module_data from=$module_content} Ниже вставляем {if !$module_data.disabled} Ищем код самый нижний(!) {/foreach} Выше вставляем {/if} Все. Вы умеете читать мысли !!!! :) I have never read anything that contains this bad before. |
|