Пример создания нового способа доставки — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Задача:''' рассчитывать доставку почтой России по следующей формуле: тариф + процент.<br/> '''…»)
 
Строка 14: Строка 14:
 
В поле "'''Название'''" напишем тоже самое "''Почта России Тариф+Процент''", в поле "'''Тип данных (id)'''" наш запомненный ранее id "''135''", в поле "'''Тип данных'''" напишем "''emarket-delivery-135''", где 135 - это наш id. А вот в поле "'''Идентификатор типа доставки'''" напишем название будущего класса, которое должно отражать предназначение класса. Указывается латинскими буквами. У меня в примере данный класс называется ''russiapostinterestrate''.<br/>
 
В поле "'''Название'''" напишем тоже самое "''Почта России Тариф+Процент''", в поле "'''Тип данных (id)'''" наш запомненный ранее id "''135''", в поле "'''Тип данных'''" напишем "''emarket-delivery-135''", где 135 - это наш id. А вот в поле "'''Идентификатор типа доставки'''" напишем название будущего класса, которое должно отражать предназначение класса. Указывается латинскими буквами. У меня в примере данный класс называется ''russiapostinterestrate''.<br/>
 
4. Открываем базу данных через phpMyAdmin и выполняем запрос:<br/>
 
4. Открываем базу данных через phpMyAdmin и выполняем запрос:<br/>
 +
<source lang="sql">
 
UPDATE `blank`.`cms3_object_types` SET `guid` = 'emarket-delivery-135' WHERE `cms3_object_types`.`id` =135;
 
UPDATE `blank`.`cms3_object_types` SET `guid` = 'emarket-delivery-135' WHERE `cms3_object_types`.`id` =135;
 +
</source>
 
В данном запросе следует изменить:<br/>
 
В данном запросе следует изменить:<br/>
 
''''blank'''' - на название вашей базы данных,<br/>
 
''''blank'''' - на название вашей базы данных,<br/>
Строка 25: Строка 27:
 
название класса courierDelivery на '''russiapostinterestrate''' (у вас может быть другое название, указанное на 3 шаге).<br/>
 
название класса courierDelivery на '''russiapostinterestrate''' (у вас может быть другое название, указанное на 3 шаге).<br/>
 
7. Замените содержимое класса на:<br/>
 
7. Замените содержимое класса на:<br/>
 +
<source lang="php">
 
<?php
 
<?php
 
class russiapostinterestrateDelivery extends delivery { // У Вас может быть другое название
 
class russiapostinterestrateDelivery extends delivery { // У Вас может быть другое название
Строка 32: Строка 35:
  
 
public function getDeliveryPrice(order $order) {
 
public function getDeliveryPrice(order $order) {
            $deliveryTarif = $this->object->tarif;
+
                        $deliveryTarif = $this->object->tarif;
            $deliveryProcent = $this->object->procent;
+
                        $deliveryProcent = $this->object->procent;
  
            if((is_null($deliveryTarif) || is_null($deliveryProcent))){
+
                        if((is_null($deliveryTarif) || is_null($deliveryProcent))){
                return 'Извините, данная опция недоступна';
+
                            return 'Извините, данная опция недоступна';
            }
+
                        }
 
            
 
            
            $returnPrice = ($order->getOriginalPrice() + $deliveryTarif)+(($order->getOriginalPrice()/100)*$deliveryProcent);
+
                        $returnPrice = ($order->getOriginalPrice() + $deliveryTarif)+(($order->getOriginalPrice()/100)*$deliveryProcent);
            return $returnPrice;
+
                        return $returnPrice;
 
}
 
}
 
};
 
};
?><br/>
+
?>
 +
</source><br/>
 
8. Проверьте, что файл в кодировке utf-8 (без BOM).<br/>
 
8. Проверьте, что файл в кодировке utf-8 (без BOM).<br/>
 
9. В административном интерфейсе сайта, в модуле Интернет-магазин, создайте новый способ доставки "''Почта России Тариф+Процент''", заполните поля Тариф и Процент.<br/>
 
9. В административном интерфейсе сайта, в модуле Интернет-магазин, создайте новый способ доставки "''Почта России Тариф+Процент''", заполните поля Тариф и Процент.<br/>

Версия 17:04, 7 февраля 2013

Задача: рассчитывать доставку почтой России по следующей формуле: тариф + процент.
Решение: для решения поставленной задачи, создадим новый способ доставки.

Чтобы добавить новый тип доставки, Вам следует выполнить следующие шаги:
1. Открыть модуль Шаблоны данных и найти там "Способы доставки". Добавить в него дочерний шаблон, назвав его например, так "Почта России Тариф+Процент".
(russian01.png)
2. В созданном шаблоне создаем два поля:
Тариф [tarif] - тип число, видимое.
Процент [procent] - тип число с точкой, видимое.
Запоминаем id шаблона из адресной строки браузера:
/admin/data/type_edit/135/ - то есть у меня id=135
3. В этом же модуле, на вкладке Справочники, находим справочник "Типы доставки" и нажимаем на иконку глаза, чтобы открыть содержимое справочника.
Добавляем новое наименование.
В поле "Название" напишем тоже самое "Почта России Тариф+Процент", в поле "Тип данных (id)" наш запомненный ранее id "135", в поле "Тип данных" напишем "emarket-delivery-135", где 135 - это наш id. А вот в поле "Идентификатор типа доставки" напишем название будущего класса, которое должно отражать предназначение класса. Указывается латинскими буквами. У меня в примере данный класс называется russiapostinterestrate.
4. Открываем базу данных через phpMyAdmin и выполняем запрос:

UPDATE `blank`.`cms3_object_types` SET `guid` = 'emarket-delivery-135' WHERE `cms3_object_types`.`id` =135;

В данном запросе следует изменить:
'blank' - на название вашей базы данных,
'emarket-delivery-135' - на emarket-delivery с вашим id
135 - на ваш 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 руб.