Jump to content

Переделываем модуль итого (order total) из osCommerce в VaM Shop


Recommended Posts

support

Переделываем модуль итого (order total) из osCommerce в VaM Shop.

Есть модуль - Price Sensitive Discount - http://www.oscommerce.com/community/contributions,204

Скидка в зависимости от суммы заказа.

Как Вы могли заметить, данный модуль для osCommerce.

Мы работаем в VaM Shop и, соответственно, нам нужно его переделать под VaM Shop.

Скачиваем модуль - http://www.oscommerce.com/community/contributions,204 (в данной статье используется версия 2.4).

Распаковываем.

Начинаем переделывать модуль под VaM Shop.

1. Первое, что Вы должны знать об отличиях VaM Shop и osCommerce - это расположение языковых файлов.

В osCommerce: /includes/languages/язык.

В VaM Shop: /lang/язык.

Соотвественно, первое, что нам нужно сделать - переписать файл /includes/languages/english/modules/order_total/ot_lev_discount.php в /lang/english/modules/order_total/ot_lev_discount.php (это языковой файл для английского языка) и в /lang/russian/modules/order_total/ot_lev_discount.php (это языковой файл для русского языка).

Можно также перевести на русский текст в /lang/russian/modules/order_total/ot_lev_discount.php, но это уже по желанию.

2. Теперь нам нужно переделать сам модуль /includes/modules/order_total/ot_lev_discount.php.

Первое отличие структуры VaM Shop от osCommerce:

Все функции в VaM Shop начинаются с vam_ (а не tep_ как в osCommerce).

Соответственно, в файле /includes/modules/order_total/ot_lev_discount.php меняем все tep_ на vam_

Второе отличие структуры VaM Shop от osCommerce:

Все настройки модуля, т.е. названия и описания полей в VaM Shop, в отличии от osCommerce, хранятся в языковых файлах.

Нам нужно добавить языковые константы для названия поля и описания поля.

Открываем файл /lang/russian/modules/order_total/ot_lev_discount.php.

Смотрим на insert запросы, определяем, какие константы нам нужно добавить (т.е. смотрим на значения поля configuration_key) и видим следующие ключи:

MODULE_LEV_DISCOUNT_STATUS

MODULE_LEV_DISCOUNT_SORT_ORDER

MODULE_LEV_DISCOUNT_INC_SHIPPING

MODULE_LEV_DISCOUNT_INC_TAX

MODULE_LEV_DISCOUNT_CALC_TAX

MODULE_LEV_DISCOUNT_TABLE

Создаём языковые константы для данных ключей, добавляя к каждому ключу в конце:

_TITLE - это будет название настройки.

_DESC - это будет описание настройки.

Учитывая всё, что я сказал выше, Вы должны добавить в /lang/russian/modules/order_total/ot_lev_discount.php (можно также перевести данный текст на английский и добавить в /lang/english/modules/order_total/ot_lev_discount.php) следующее:

define('MODULE_LEV_DISCOUNT_STATUS_TITLE', 'Показывать скидку');

define('MODULE_LEV_DISCOUNT_STATUS_DESC', 'Разрешить скидки?');

define('MODULE_LEV_DISCOUNT_SORT_ORDER_TITLE', 'Порядок сортировки');

define('MODULE_LEV_DISCOUNT_SORT_ORDER_DESC', 'Порядок сортировки модуля.');

define('MODULE_LEV_DISCOUNT_INC_SHIPPING_TITLE', 'Учитывать доставку');

define('MODULE_LEV_DISCOUNT_INC_SHIPPING_DESC', 'Включать в расчёт доставку.');

define('MODULE_LEV_DISCOUNT_INC_TAX_TITLE', 'Учитывать налог');

define('MODULE_LEV_DISCOUNT_INC_TAX_DESC', 'Включать в расчёт налог.');

define('MODULE_LEV_DISCOUNT_CALC_TAX_TITLE', 'Пересчитывать налог');

define('MODULE_LEV_DISCOUNT_CALC_TAX_DESC', 'Пересчитывать налог.');

define('MODULE_LEV_DISCOUNT_TABLE_TITLE', 'Процент скидки');

define('MODULE_LEV_DISCOUNT_TABLE_DESC', 'Установите ценовые пределы и проценты скидки, через запятую.');

Затем нам нужно исправить все SQL запросы типа insert, проще говоря, смысл в том, чтобы перенести текст (название и описание настроек модуля) из SQL запросов в языковой файл, т.к. текст мы уже перенесли, теперь нужно удалить его из insert запросов.

Удаляем из запроса поля configuration_title и configuration_description, а также значения для этих полей, т.е., к примеру, нам нужно исправить:

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 ('Display Total', 'MODULE_LEV_DISCOUNT_STATUS', 'true', 'Do you want to enable the Order Discount?', '6', '1','tep_cfg_select_option(array('true', 'false'), ', now())");

На:

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_LEV_DISCOUNT_STATUS', 'true', '6', '1','vam_cfg_select_option(array('true', 'false'), ', now())");

Точно также исправляем остальные insert запросы, в итоге insert запросы будут выглядеть следующим образом:

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_LEV_DISCOUNT_STATUS', 'true', '6', '1','vam_cfg_select_option(array('true', 'false'), ', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_LEV_DISCOUNT_SORT_ORDER', '98', '6', '2', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function ,date_added) values ('MODULE_LEV_DISCOUNT_INC_SHIPPING', 'true', '6', '3', 'vam_cfg_select_option(array('true', 'false'), ', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function ,date_added) values ('MODULE_LEV_DISCOUNT_INC_TAX', 'true', '6', '4','vam_cfg_select_option(array('true', 'false'), ', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function ,date_added) values ('MODULE_LEV_DISCOUNT_CALC_TAX', 'false', '6', '5','vam_cfg_select_option(array('true', 'false'), ', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_LEV_DISCOUNT_TABLE', '100:7.5,250:10,500:12.5,1000:15', '6', '6', now())");

Далее в файле /includes/modules/order_total/ot_lev_discount.php меняем:

$this->enabled = MODULE_LEV_DISCOUNT_STATUS;

На:

$this->enabled = ((MODULE_LEV_DISCOUNT_STATUS == 'true') ? true : false);

Если этого не сделать, то у данного модуля в админке не будет изменён статус на установлен и не будут показаны кнопки Удалить и Редактировать.

Ищите:

$cart['cart']->get_products();

Меняйте на:

$_SESSION['cart']->get_products();

Ищите:

$cart->get_quantity($t_prid);

Меняйте на:

$_SESSION['cart']->get_quantity($t_prid);

И последнее, что нам нужно сделать.

В VaM Shop для вывода цены (скидки и т.д.) используется класс $vamPrice, в отличии от osCommerce, где используется класс $currencies.

Проще говоря, нам нужно заменить:

function process() {

global $order, $ot_subtotal, $currencies;

На:

function process() {

global $order, $ot_subtotal, $vamPrice;

Затем:

'text' => '<b>' . $currencies->format($od_amount) . '</b>',

Замените на:

'text' => '<b>' . $vamPrice->Format($od_amount,true) . '</b>',

Всё, на этом переделка модуля закончена.

Если какие-либо моменты Вам не понятны, можете скачать уже изменённый для VaM Shop модуль в файлах и проверить, как правильно менять код.

Далее нужно просто установить модуль:

1. Переписывайте в свой магазин изменённые файлы модуля:

/includes/modules/order_total/ot_lev_discount.php

/lang/english/modules/order_total/ot_lev_discount.php

/lang/russian/modules/order_total/ot_lev_discount.php

2. В Админке - Модули - Заказ итого установите модуль Ваша скидка.

3. Настройте скидку в зависимости от суммы заказа. Формат записи: сумма заказа:процент скидки, разделитель: запятая. Например, я хочу заказам от 0 до 20$ давать скидку 10%, от 20 до 50 - 20%, тогда я записываю следующим образом: 20:10,50:20

4. Скидка покупателю будет учтена и показана на странице подтверждения заказа - рис. 1

рис. 1

Коротко подведу итог, в чём отличия order total модулей VaM Shop от order total модулей в osCommerce:

1. Расположение языковых файлов.

В osCommerce: /includes/languages/язык.

В VaM Shop: /lang/язык.

2. Все функции в VaM Shop начинаются с vam_ (а не tep_ как в osCommerce).

3. Все настройки модуля, т.е. названия и описания полей в VaM Shop, в отличии от osCommerce, хранятся в языковых файлах.

4. В VaM Shop для вывода цены (скидки и т.д.) используется класс $vamPrice, в отличии от osCommerce, где используется класс $currencies.

Зная эти 4 основных отличия, можно самому переделывать и другие order total модули из osCommere в VaM Shop.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...