+380(66)433-69-36 | |
+380(66)433-69-36 | |
+380(66)433-69-36 |
- BitLocker с GUI под linux
- Ищем вирус elTest
- Работаем с бесплатным SSL сертификатом Letsencrypt с помощью certbot
- Синхронизация ресурсов с удаленного сервера локально
- Применение нестандартного SEO и статус 404
- MySQL синхронизируем права с разных серверов
- IPSec VPN соединение между офисами.
- "Зеркало" сайта на стороне. Донастраиваем nginx
- Дефрагментация таблиц всех баз MySQL
- Месяц в родительном падеже strftime PHP
- INIT скрипт для Dropbox
- osCommerce VAM Edition 226. Ошибки
- PositiveSSL порядок сертификатов
- osCommerce. Создаем модуль доставки
- Восстановление mySQL баз данных
- osCommerce.Перенос магазина в другой домен
- osCommerce.Прячем адмику
- osCommerce. Продление жизни сессий
- osCommerce. Создаем платежный модуль
- 10 причин выбрать нас
- GRUB2 восстановление
- osCommerce не пересчитывает общую сумму заказа
- Список потенциально опасных скриптов
- Отправка файлов из Dropbox по e-mail
- "Черный список" почтовых доменов
- Боремся с назойливыми иностранцами
- Яндекс-Диск, и стоит ли им пользоваться.
- Обновление модуля Интеркассы для osCommerce
- Веб-почта на сайте хостинга
- Подключение Outlook Express к хостингу
osCommerce. Создаем модуль доставки
В предыдущих статьях был описан процесс создания платежного модуля. Теперь опишем, как создать простейший модуль доставки.
Для нашего примера создадим модуль доставки Новой Почтой - есть такой перевозчик в Украине. Модуль будет только отображать свое название и некоторую дополнительную информацию для покупателя.
Напоминаем, что модуль доставки состоит обязательно из двух файлов. Из модуля доставки и языкового файла. Наш модуль будет называться np.php
/includes/languages/russian/modules/shipping/np.php
/includes/modules/shipping/np.php
Вот содержание языкового файла:
<?php
define('MODULE_SHIPPING_NP_TEXT_TITLE', 'Новая Почта');
define('MODULE_SHIPPING_NP_TEXT_DESCRIPTION', 'Новая почта');
?>
Здесь определяется заголовок модуля доставки, как он будет отображаться в процессе заказа MODULE_SHIPPING_NP_TEXT_TITLE.
А вот содержание файла доставки с подстрочным объяснением методов:
<?php
class np {
/*------Класс должен называться точно так же как и модуль----*/
var $code, $title, $description, $icon, $enabled,$error,$client_message;
/*----Конструктор класса. Определяет названия и заголовки---*/
function np() {
global $order;
$this->code = 'np';
/*---Аналогично код должен быть такой же как и название модуля--*/
$this->title = MODULE_SHIPPING_NP_TEXT_TITLE;
$this->description = MODULE_SHIPPING_NP_TEXT_DESCRIPTION;
$this->client_message=MODULE_SHIPPING_NP_MESSAGE;
$this->sort_order = MODULE_SHIPPING_NP_SORT_ORDER;
$this->icon = DIR_WS_ICONS.'np.png';
/*---иконка для отображения будет использоваться /images/icons/np.png ---*/
$this->enabled = ((MODULE_SHIPPING_NP_STATUS == 'True') ? true : false);
if (strlen($this->client_message)==0){$this->client_message=$this->description;}
}
// class methods
function quote($method = '') {
/*--функция для отображения заголовка модуля, определения стоимости доставки. В нашем случае стоимость доставки нулевая, но ее можно рассчитать исходя из параметров веса, стоимости товара или еще как. При этом стоимость товара возвращается в переменной 'cost'. Если она не задана - произойдет неявное преобразование в нуль---*/
global $order;
$this->quotes = array('id' => $this->code,
'module' => MODULE_SHIPPING_NP_TEXT_TITLE,
/*---Отображаемое имя при заказе--*/
'methods' => array(array('id' => $this->code,
'title' => $this->client_message,
/*---дополнительная информация для покупателя. отображается в круглых скобках после названия модуля. Если не задана - то будут пустые скобки.--*/
'cost'=>0)));
/*-----Собственно стоимость доставки----*/
if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);
/*-----добавляем иконку. Если не нужна - просто удалем или комментируем----*/
/*if ($this->tax_class > 0) {
$this->quotes['tax'] = tep_get_tax_rate();*/
/*----При необходимости возвращаем сумму налогов со стоимости доставки.*/
return $this->quotes;
}
function check() {
/*---Служебная функция для проверки, установлен ли модуль---*/
if (!isset($this->_check)) {
$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_NP_STATUS'");
$this->_check = tep_db_num_rows($check_query);
}
return $this->_check;
}
function install() {
/*---функция установки модуля с одним текстовым полем - информацией для покупателя---*/
$this->remove();
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Разрешить модуль Новая почта?', 'MODULE_SHIPPING_NP_STATUS', 'True', 'Вы хотите разрешить модуль Новой Почты?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Порядок сортировки', 'MODULE_SHIPPING_NP_SORT_ORDER', '0', 'Порядок сортировки модуля.', '6', '1', now())");
tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values
('Сообщение клиентам', 'MODULE_SHIPPING_NP_MESSAGE', '', 'Сообщение клиентам при выборе метода доставки', '6', '2', now())");
/*----Текстовое поле с информацией для покупателя----*/
}
function remove() {
/*----Удаление модуля доставки--*/
tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
function keys() {
/*---Ключи для модуля, определяеміе в конфигурационном файле. Используются при удалении--*/
return array('MODULE_SHIPPING_NP_MESSAGE',
'MODULE_SHIPPING_NP_STATUS',
'MODULE_SHIPPING_NP_SORT_ORDER');
}
}
?>
/*----Конструктор класса. Определяет названия и заголовки---*/
Стоит сделать еще несколько замечаний. Если заметили, то названия констант в модуле начинаются с MODULE_SHIPPING_NP... Эот сделано для того, чтобы не было путаницы между модулями в osCommerce. В основном здесь "работает" только один метод "quote" который возвращает название модуля, дополнительную информацию, при необходимости величину налогов и стоимость доставки.