Jump to content

Переделываем модуль доставки из osCommerce в VaM Shop


Recommended Posts

support

Переделываем модуль доставки из osCommerce в VaM Shop.

Возьмём, к примеру, следующий модуль доставки - Customer Pickup Option - http://www.oscommerce.com/community/contributions,3354

Модуль доставки Customer Pickup Option

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MODULE_SHIPPING_PICKUP_STATUS

MODULE_SHIPPING_PICKUP_COST

MODULE_SHIPPING_PICKUP_TAX_CLASS

MODULE_SHIPPING_PICKUP_ZONE

MODULE_SHIPPING_PICKUP_SORT_ORDER

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

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

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

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

define('MODULE_SHIPPING_PICKUP_STATUS_TITLE', 'Enable Customer Pickup');

define('MODULE_SHIPPING_PICKUP_STATUS_DESC', 'Do you want to offer customer pickup?');

define('MODULE_SHIPPING_PICKUP_COST_TITLE', 'Pickup Fee');

define('MODULE_SHIPPING_PICKUP_COST_DESC', 'The fee for all orders being picked up by the customer. Most likely will be 0.00 but can be changed if needed.');

define('MODULE_SHIPPING_PICKUP_TAX_CLASS_TITLE', 'Tax Class');

define('MODULE_SHIPPING_PICKUP_TAX_CLASS_DESC', 'Use the following tax class on the fee.');

define('MODULE_SHIPPING_PICKUP_ZONE_TITLE', 'Shipping Zone');

define('MODULE_SHIPPING_PICKUP_ZONE_DESC', 'If a zone is selected, only enable this shipping method for that zone.');

define('MODULE_SHIPPING_PICKUP_SORT_ORDER_TITLE', 'Sort Order');

define('MODULE_SHIPPING_PICKUP_SORT_ORDER_DESC', 'Sort order of display.');

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

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

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Customer Pickup', 'MODULE_SHIPPING_PICKUP_STATUS', 'True', 'Do you want to offer customer pickup?', '6', '0', '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_SHIPPING_PICKUP_STATUS', 'True', '6', '0', '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_SHIPPING_PICKUP_STATUS', 'True', '6', '0', '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_SHIPPING_PICKUP_COST', '0.00', '6', '0', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_PICKUP_TAX_CLASS', '0', '6', '0', 'vam_get_tax_class_title', 'vam_cfg_pull_down_tax_classes(', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_SHIPPING_PICKUP_ZONE', '0', '6', '0', 'vam_get_zone_class_title', 'vam_cfg_pull_down_zone_classes(', now())");

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_SHIPPING_PICKUP_SORT_ORDER', '0', '6', '0', now())");

Затем нам нужно добавить в модуль новую настройку - список разрешённых стран, т.е. для покупателей из каких стран будет доступен данный модуль доставки.

Для этого в файле /includes/modules/shipping/pickup.php после:

vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_SHIPPING_PICKUP_STATUS', 'True', '6', '0', '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_SHIPPING_PICKUP_ALLOWED', '', '6', '0', now())");

Затем в список ключей:

return array('MODULE_SHIPPING_PICKUP_STATUS', 'MODULE_SHIPPING_PICKUP_COST', 'MODULE_SHIPPING_PICKUP_TAX_CLASS', 'MODULE_SHIPPING_PICKUP_ZONE', 'MODULE_SHIPPING_PICKUP_SORT_ORDER');

Добавляем MODULE_SHIPPING_PICKUP_ALLOWED, т.е. изменяем данный текст на:

return array('MODULE_SHIPPING_PICKUP_STATUS', 'MODULE_SHIPPING_PICKUP_ALLOWED', 'MODULE_SHIPPING_PICKUP_COST', 'MODULE_SHIPPING_PICKUP_TAX_CLASS', 'MODULE_SHIPPING_PICKUP_ZONE', 'MODULE_SHIPPING_PICKUP_SORT_ORDER');

И в языковой файл модуля /lang/russian/modules/shipping/pickup.php добавляем описание данной настройки:

define('MODULE_SHIPPING_PICKUP_ALLOWED_TITLE' , 'Разрешённые страны');

define('MODULE_SHIPPING_PICKUP_ALLOWED_DESC' , 'Укажите коды стран, для которых будет доступен данный модуль (например RU,DE (оставьте поле пустым, если хотите что б модуль был доступен покупателям из любых стран))');

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

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

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

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

/includes/modules/shipping/pickup.php

/lang/english/modules/shipping/pickup.php

/lang/russian/modules/shipping/pickup.php

2. В Админке - Модули - Доставка установите модуль Pickup Rate.

3. Модуль будет показан в списке доступных модулей доставки при оформлении заказа - рис. 1

рис. 1

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

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

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

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

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

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

4. В модуль доставки при переделке для VaM Shop нужно добавлять новую настройку, в данном примере MODULE_SHIPPING_PICKUP_ALLOWED, т.е. список разрешённых стран.

Зная эти 4 основных отличия, можно самому переделывать и другие модули доставки из 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...