Перейти к содержимому


RuWeb.Net

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


  • Вы не можете ответить в тему
No replies to this topic

#1 support

    Служба поддержки

  • Администраторы
  • 34 603 Сообщений:

Отправлено 21 июня 2011 - 06:37

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

Есть модуль - Price Sensitive Discount - http://www.oscommerc...ntributions,204
Скидка в зависимости от суммы заказа.

Как Вы могли заметить, данный модуль для osCommerce.
Мы работаем в VaM Shop и, соответственно, нам нужно его переделать под VaM Shop.

Скачиваем модуль - http://www.oscommerc...ntributions,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.





1 человек читают эту тему

0 пользователей, 1 гостей, 0 скрытых пользователей