Цена в зависимости от условий — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 4 промежуточные версии 4 участников)
Строка 1: Строка 1:
Актуально для 2.9.6
+
'''Актуально для версии 20'''
  
----
+
== Задача ==
  
== Задача: ==
 
 
 
В интернет-магазине цена должна быть в зависимости от каких-то условий.
 
В интернет-магазине цена должна быть в зависимости от каких-то условий.
  
== Решение: ==
+
== Решение ==
  
1. Нужно написать обработчик события. Более подробную информацию о событиях Вы можете прочитать здесь http://api.umi-cms.ru/events.html
+
1. Нужно написать обработчик события. Более подробную информацию о событиях вы можете прочитать здесь http://api.umi-cms.ru/events.html
Вам необходимо создать в файл classes/modules/catalog/custom_events.php. В нём прописать следующий код:
+
Вам необходимо создать в файл classes/components/catalog/custom_events.php. В нём прописать следующий код:
 
<source lang="php">
 
<source lang="php">
 
  <?php
 
  <?php
Строка 18: Строка 16:
 
Это событие будет вызывать кастомный макрос определяющий цену.
 
Это событие будет вызывать кастомный макрос определяющий цену.
  
2. Написать кастомный макрос. Для этого в файле classes/modules/catalog/__custom.php Описать следующий код:
+
2. Написать кастомный макрос. Для этого в файле classes/components/catalog/customMacros.php Описать следующую функцию:
 
<source lang="php">
 
<source lang="php">
<?php
 
    abstract class __custom_catalog {
 
 
         public function onLoadPriceHandler(iUmiEventPoint $oEventPoint) {
 
         public function onLoadPriceHandler(iUmiEventPoint $oEventPoint) {
 
             // get plain price relation
 
             // get plain price relation
Строка 32: Строка 28:
 
             $price = 6436;
 
             $price = 6436;
 
         }
 
         }
    };
 
 
  ?>
 
  ?>
 
</source>
 
</source>

Текущая версия на 08:53, 28 мая 2019

Актуально для версии 20

Задача

В интернет-магазине цена должна быть в зависимости от каких-то условий.

Решение

1. Нужно написать обработчик события. Более подробную информацию о событиях вы можете прочитать здесь http://api.umi-cms.ru/events.html Вам необходимо создать в файл classes/components/catalog/custom_events.php. В нём прописать следующий код:

 <?php
    new umiEventListener("umiObjectProperty_loadPriceValue", "catalog", "onLoadPriceHandler");
 ?>

Это событие будет вызывать кастомный макрос определяющий цену.

2. Написать кастомный макрос. Для этого в файле classes/components/catalog/customMacros.php Описать следующую функцию:

        public function onLoadPriceHandler(iUmiEventPoint $oEventPoint) {
            // get plain price relation
            $price = &$oEventPoint->getRef('price');
            // get object id
            $object_id = $oEventPoint->getParam('object_id');
            // TODO: write your custom logic here
            // ....
            // and set new $price value
            $price = 6436;
        }
 ?>

Итог

Мы привели Вам примерный текст макроса. Теперь необходимо описать соответствующие условия и присвоить переменной $price необходимую вариацию цены.


Также смотрите статью с примером реализации описанной логики: Использование нескольких Цен для одного товара