Пример создания нового способа доставки — различия между версиями
Vitaliks (обсуждение | вклад) (Обновление статьи) |
Aposio (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | '''Актуально для версии | + | '''Актуально для версии 2.9''' |
+ | <br/> | ||
− | + | '''Задача:''' рассчитывать доставку почтой России по следующей формуле: тариф + процент.<br/> | |
− | + | '''Решение:''' для решения поставленной задачи, создадим новый способ доставки.<br/> | |
− | |||
− | |||
− | |||
Чтобы добавить новый тип доставки, Вам следует выполнить следующие шаги:<br/> | Чтобы добавить новый тип доставки, Вам следует выполнить следующие шаги:<br/> | ||
− | 1. Открыть модуль '''Шаблоны данных''' и найти там | + | 1. Открыть модуль '''Шаблоны данных''' и найти там "'''Способы доставки'''". Добавить в него дочерний шаблон, назвав его например, так "''Почта России Тариф+Процент''".<br/> |
− | + | [[Файл:Russian01.png]]<br/> | |
− | [[Файл:Russian01.png]] | + | 2. В созданном шаблоне создаем два поля:<br/> |
− | + | '''Тариф [tarif]''' - тип число, видимое.<br/> | |
− | 2. В созданном шаблоне | + | '''Процент [procent]''' - тип число с точкой, видимое.<br/> |
− | + | [[Файл:Russian02.png]]<br> | |
− | ''' | + | Запоминаем id шаблона из адресной строки браузера:<br/> |
− | + | '''/admin/data/type_edit/659/''' - то есть у меня id=659<br/> | |
− | ''' | + | [[Файл:Russian03.png]]<br> |
− | + | 3. В этом же модуле, на вкладке Справочники, находим справочник "'''Типы доставки'''" и нажимаем на иконку глаза, чтобы открыть содержимое справочника.<br/> | |
− | [[Файл:Russian02.png]] | + | Добавляем новое наименование.<br/> |
− | + | В поле "'''Название'''" напишем тоже самое "''Почта России Тариф+Процент''", в поле "'''Тип данных (id)'''" наш запомненный ранее id "''659''", в поле "'''Тип данных'''" напишем "''emarket-delivery-659''", где 659 - это наш id. А вот в поле "'''Идентификатор типа доставки'''" напишем название будущего класса, которое должно отражать предназначение класса. Указывается латинскими буквами. У меня в примере данный класс называется ''russiapostinterestrate''.<br/> | |
− | Запоминаем id шаблона из адресной строки браузера: | + | [[Файл:Russian04.png]]<br> |
− | + | 4. Открываем базу данных через phpMyAdmin и выполняем запрос:<br/> | |
− | '''/admin/data/type_edit/659/''' - то есть у меня id=659 | + | <source lang="sql"> |
− | + | UPDATE `blank`.`cms3_object_types` SET `guid` = 'emarket-delivery-659' WHERE `cms3_object_types`.`id` = 659; | |
− | [[Файл:Russian03.png]] | + | </source> |
− | + | В данном запросе следует изменить:<br/> | |
− | 3. В этом же модуле, на вкладке Справочники, находим справочник "'''Типы доставки'''" и нажимаем | + | ''''blank'''' - на название вашей базы данных,<br/> |
− | + | ''''emarket-delivery-659'''' - на emarket-delivery с вашим id<br/> | |
− | Добавляем новое наименование. | + | '''659''' - на ваш id<br/> |
− | + | 5. Заходим на сайт по FTP, открываем директорию:<br/> | |
− | В поле "'''Название'''" напишем тоже самое "'' | + | '''\classes\modules\emarket\classes\delivery\systems\'''<br/> |
− | + | где копируем файл courier.php и переименовываем его в ''russiapostinterestrate.php'' - у Вас может быть другое название, которое Вы указали в 3 шаге.<br/> | |
− | [[Файл:Russian04.png]] | + | 6. Открываем файл на редактирование и изменяем:<br/> |
− | + | название класса courierDelivery на '''russiapostinterestrate''' (у вас может быть другое название, указанное на 3 шаге).<br/> | |
− | + | 7. Замените содержимое класса на:<br/> | |
− | |||
− | ''' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | название класса courierDelivery на ''' | ||
− | |||
− | |||
− | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
− | + | class russiapostinterestrateDelivery extends delivery { // У Вас может быть другое название | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | class | ||
− | |||
− | |||
public function validate(order $order) { | public function validate(order $order) { | ||
return true; | return true; | ||
} | } | ||
− | |||
public function getDeliveryPrice(order $order) { | public function getDeliveryPrice(order $order) { | ||
− | + | $deliveryTarif = $this->object->tarif; | |
− | + | $deliveryProcent = $this->object->procent; | |
− | + | ||
− | + | if((is_null($deliveryTarif) || is_null($deliveryProcent))){ | |
− | + | return 'Извините, данная опция недоступна'; | |
− | + | } | |
− | + | ||
− | + | $returnPrice = ($order->getOriginalPrice() + $deliveryTarif)+(($order->getOriginalPrice()/100)*$deliveryProcent); | |
− | + | return $returnPrice; | |
− | |||
− | |||
− | |||
} | } | ||
− | } | + | }; |
− | </source> | + | ?> |
− | + | </source><br/> | |
− | Проверьте, что файл в кодировке utf-8 (без BOM). | + | 8. Проверьте, что файл в кодировке utf-8 (без BOM).<br/> |
− | + | 9. В административном интерфейсе сайта, в модуле Интернет-магазин, создайте новый способ доставки "''Почта России Тариф+Процент''", заполните поля Тариф и Процент.<br>[[Файл:Russian05.png]]<br/> | |
− | + | 10. Проверим.<br/> | |
− | + | Наш заказ:<br/> | |
− | [[Файл:Russian05.png]] | ||
− | |||
− | |||
− | |||
− | Наш заказ: | ||
− | |||
[[Файл:Russian06.png]] | [[Файл:Russian06.png]] | ||
+ | [[Файл:Russian07.png]] Итого: 210 + 220 + (210*4%) = 438,40 руб. | ||
− | + | Версия: 2.8.6.1 | |
− | |||
− | |||
− | |||
− | |||
− | |||
[[Категория:Модуль Интернет магазин]][[Категория:Написание кастомных макросов]] | [[Категория:Модуль Интернет магазин]][[Категория:Написание кастомных макросов]] |
Версия 11:36, 13 мая 2019
Актуально для версии 2.9
Задача: рассчитывать доставку почтой России по следующей формуле: тариф + процент.
Решение: для решения поставленной задачи, создадим новый способ доставки.
Чтобы добавить новый тип доставки, Вам следует выполнить следующие шаги:
1. Открыть модуль Шаблоны данных и найти там "Способы доставки". Добавить в него дочерний шаблон, назвав его например, так "Почта России Тариф+Процент".
2. В созданном шаблоне создаем два поля:
Тариф [tarif] - тип число, видимое.
Процент [procent] - тип число с точкой, видимое.
Запоминаем id шаблона из адресной строки браузера:
/admin/data/type_edit/659/ - то есть у меня id=659
3. В этом же модуле, на вкладке Справочники, находим справочник "Типы доставки" и нажимаем на иконку глаза, чтобы открыть содержимое справочника.
Добавляем новое наименование.
В поле "Название" напишем тоже самое "Почта России Тариф+Процент", в поле "Тип данных (id)" наш запомненный ранее id "659", в поле "Тип данных" напишем "emarket-delivery-659", где 659 - это наш id. А вот в поле "Идентификатор типа доставки" напишем название будущего класса, которое должно отражать предназначение класса. Указывается латинскими буквами. У меня в примере данный класс называется russiapostinterestrate.
4. Открываем базу данных через phpMyAdmin и выполняем запрос:
UPDATE `blank`.`cms3_object_types` SET `guid` = 'emarket-delivery-659' WHERE `cms3_object_types`.`id` = 659;
В данном запросе следует изменить:
'blank' - на название вашей базы данных,
'emarket-delivery-659' - на emarket-delivery с вашим id
659 - на ваш id
5. Заходим на сайт по FTP, открываем директорию:
\classes\modules\emarket\classes\delivery\systems\
где копируем файл courier.php и переименовываем его в russiapostinterestrate.php - у Вас может быть другое название, которое Вы указали в 3 шаге.
6. Открываем файл на редактирование и изменяем:
название класса courierDelivery на russiapostinterestrate (у вас может быть другое название, указанное на 3 шаге).
7. Замените содержимое класса на:
<?php
class russiapostinterestrateDelivery extends delivery { // У Вас может быть другое название
public function validate(order $order) {
return true;
}
public function getDeliveryPrice(order $order) {
$deliveryTarif = $this->object->tarif;
$deliveryProcent = $this->object->procent;
if((is_null($deliveryTarif) || is_null($deliveryProcent))){
return 'Извините, данная опция недоступна';
}
$returnPrice = ($order->getOriginalPrice() + $deliveryTarif)+(($order->getOriginalPrice()/100)*$deliveryProcent);
return $returnPrice;
}
};
?>
8. Проверьте, что файл в кодировке utf-8 (без BOM).
9. В административном интерфейсе сайта, в модуле Интернет-магазин, создайте новый способ доставки "Почта России Тариф+Процент", заполните поля Тариф и Процент.
10. Проверим.
Наш заказ:
Итого: 210 + 220 + (210*4%) = 438,40 руб.
Версия: 2.8.6.1