Создание собственных методов

Система имеет возможность добавлять собственные алгоритмы расчета ставок или изменять существующие.

Алгоритмы встроенных методов вы можете посмотреть в файле /bitrix/modules/wtc.easydirect/classes/general/CCalculate.php

Что бы добавить собственный метод, надо привязать ваши функции для расчета к событию userCalculateMethod модуля wtc.easydirect. Сделать это можно в файле /bitrix/php_interface/init.php

Внимание!

Все пользовательские методы должны начинаться с префикса "user_"
Если метод возвращает 0, значит ставка изменена НЕ будет.
Если надо отключить показы по слову, возвращайте минимальную ставку, сейчас это 0.30 руб. Вероятность показов с такой ставкой очень мала.

Шаблон файла для реализации ВСЕХ событий модуля с комментариями и примерами вы можете скачать здесь.

// регистрация методов в /bitrix/php_interface/init.php
AddEventHandler("wtc.easydirect", "userCalculateMethod", Array("EasydirectHandlers", "user_main_x2Phrase"));
AddEventHandler("wtc.easydirect", "userCalculateMethod", Array("EasydirectHandlers", "user_method_two"));

// EasydirectHandlers Class
class EasydirectHandlers
{
    //====================CULCULATE PHRASES PRICES=========================
    /**
     * !!!CAUTION!!! all methods can start from "user_" prefix
     * user method for calculate phrase price
     * @param array $arParams     see bottom
     * @return float   price for update phrase bid. If return 0 price not update
     *
				$params=array(
					'NAME' - phrase
					'MAX_PRICE'  - max price for the phrase
					'MESTO_SEO' - place in SEO, 0 - is not in TOP10.
					'PRICE_ON_SEARCH' - Real pay price after autobroker
					'SHOWS' - phrase shows
					'CLICKS' - phrase clicks
					'CTR' - CTR
					'PRICE' - user price in the phrase
					'PREMIUMMAX' - 1'st place of premium price
					'PREMIUMMIN' - bottom place of premium price
					'MAXBET' - 1'st place of guaranty
					'MINBET' - bottom place of guaranty
					'PRICES' - array prices for all places
                                [
                                  { 
                                     "Position": (string),
                                     "Bid": (float), 
                                     "Price": (float)
                                  }
                                  ...
                               ]								
				);
     */    

    // увеличиваем в 2 раза максимальную цену на словах с вхождением "купить" с 8 до 21 часа
    public function user_main_x2Phrase($params)
     {
         $retstavk=0;
         if(preg_match("/(^купить|[^-]купить)/",$params["NAME"])){
             $hour=date("G");
             if($hour>8&&$hour<21){
                 $params['MAX_PRICE']=$params['MAX_PRICE']*2;
             }
         }
         
         $retstavk=CEDirectCalculate::sys_methodMain($params);
         
         return $retstavk;
     }
     
     //second user method
     public function user_method_two($params)
     {
         return 0;
     }
}

Регистрация пользовательских методов в системе

После создания событий в init.php, перейдите в раздел: Сервисы → Легкий директ → Доп. инструменты → Управление Методами.
Нажмите на кнопку "Добавить свой метод"

Добавить свой метод

Заполните поля, выберите одну из своих функций

Добавить свой метод

После сохранения, метод будет доступен для использования в условиях расчета ставок.

© EasyDirect