Egyedi automatizálás-cél (mérföldkő)
Saját cél (benchmark) regisztrálása PHP-ból, amellyel az automatizálás a saját eseményedre léphet tovább.
A cél (más néven mérföldkő, benchmark) olyan különleges automatizálás-lépés, amely akkor teljesül, ha egy feltétel igazzá válik. Tipikus példák:
- új rendelés teljesült,
- lista hozzárendelve,
- címke hozzárendelve.
Ha egy cél teljesül, a FluentCRM a kapcsolattartót előreugrathatja az adott lépésre, kihagyhatja a köztes műveleteket, vagy a beállításaid szerint folytathatja. Egyedi céllal a saját bővítményed eseményeit is bekötheted.
Használt kampók
Szekció neve “Használt kampók”| Típus | Kampó neve | Mire való |
|---|---|---|
| Filter | fluentcrm_funnel_blocks |
Felveszi az egyedi cél blokkját a szerkesztőbe. |
| Filter | fluentcrm_funnel_block_fields |
Megadja a cél beállítómezőit. |
| Action | fluentcrm_funnel_benchmark_start_{benchmark_name} |
Lefuttatja a logikádat, amikor a cél teljesül. A {benchmark_name} helyére a saját azonosítód kerül. |
A példában a cél azonosítója custom_benchmark, a futásidejű kampó tehát fluentcrm_funnel_benchmark_start_custom_benchmark.
1. lépés: a cél osztálya
Szekció neve “1. lépés: a cél osztálya”Hozz létre egy PHP-osztályt (például Custom\Goals\CustomBenchmark), amely:
- regisztrálja a cél blokkját,
- megadja a beállítómezőket,
- kezeli az eseményt, amikor a cél teljesül.
<?php
namespace Custom\Goals;
use FluentCrm\App\Services\Funnel\BaseBenchMark;use FluentCrm\App\Services\Funnel\FunnelHelper;use FluentCrm\App\Services\Funnel\FunnelProcessor;use FluentCrm\Framework\Support\Arr;
class CustomBenchmark{ protected $triggerName; protected $actionArgNum; protected $priority;
public function __construct() { $this->triggerName = 'custom_benchmark'; $this->actionArgNum = 3; $this->priority = 20;
// 1) A cél blokkjának felvétele a szerkesztőbe add_filter( 'fluentcrm_funnel_blocks', [$this, 'addBenchmark'], $this->priority, 1 );
// 2) A cél beállítómezői add_filter( 'fluentcrm_funnel_block_fields', [$this, 'pushBlockFields'], $this->priority, 2 );
// 3) A cél kezelése, amikor elindul add_action( 'fluentcrm_funnel_benchmark_start_' . $this->triggerName, [$this, 'handle'], $this->priority, 2 ); }
/** * A cél blokkjának regisztrálása. */ public function addBenchmark($benchmarks) { $benchmark = $this->getBlock(); if ($benchmark) { $benchmark['type'] = 'benchmark'; $benchmarks[$this->triggerName] = $benchmark; }
return $benchmarks; }
/** * A beállítómezők hozzárendelése a célhoz. */ public function pushBlockFields($fields, $funnel) { $fields[$this->triggerName] = $this->getBlockFields($funnel);
return $fields; }
/** * Példa a cél típusát megadó mezőre. */ public function benchmarkTypeField() { return [ 'label' => 'Cél típusa', 'type' => 'radio', 'options' => [ [ 'id' => 'optional', 'title' => '[Választható pont] Ez egy nem kötelező indítási pont' ], [ 'id' => 'required', 'title' => '[Alapvető pont] Ennek a lépésnek teljesülnie kell a további műveletek előtt' ], ], 'inline_help' => 'Ha a [Választható pont] lehetőséget választod, nem kötelező indítópontként működik; egyébként az automatizálás megvárja, amíg ez teljesül.', ]; }
/** * A blokk alapadatai és alapértelmezett beállításai. */ public function getBlock() { return [ 'title' => 'Egyedi cél', 'description' => 'Akkor fut, amikor egy adott rendelés teljesül a rendszeredben', 'icon' => 'fc-icon-edd', 'settings' => $this->getDefaultSettings(), ]; }
/** * A cél alapértelmezett beállításai. */ public function getDefaultSettings() { return [ 'product_ids' => [], 'product_categories' => [], 'purchase_type' => 'all', 'type' => 'required', ]; }
/** * A cél beállítópaneljének mezői. */ public function getBlockFields($funnel) { return [ 'title' => 'Sikeres új rendelés az EDD-ben', 'sub_title' => 'A cél akkor fut, amikor egy új rendelés teljesül az EDD-ben', 'fields' => [ 'product_ids' => [ 'type' => 'multi-select', 'label' => 'Célzott termékek', 'help' => 'Válaszd ki, mely termékek teljesítik ezt a célt.', 'options' => [ ['id' => 123, 'title' => 'Első minta termék'], ['id' => 124, 'title' => 'Második minta termék'], ], 'inline_help' => 'Hagyd üresen, ha bármelyik termék megvásárlása számítson.', ], // Itt további mezőket is felvehetsz (kategóriák, vásárlás típusa, cél típusa stb.) ], ]; }
/** * A fő kezelő, amely a cél elindulásakor fut. * * @param object $benchmark A cél lépésének aktuális beállításai. * @param array $originalArgs Az eseménynek átadott argumentumok. */ public function handle($benchmark, $originalArgs) { // Ide jön a saját logikád arra az esetre, amikor a cél teljesül. error_log(print_r([$benchmark, $originalArgs], true)); }}A pushBlockFields() metódus adja vissza a beállítópanel szerkezetét az automatizálás-szerkesztőhöz, a handle() pedig akkor hívódik meg, amikor a cél teljesül, így te valósíthatod meg a saját célkezelő logikádat. A „Célzott termékek” mező a getBlockFields() leírásból készül; további mezőtípusokat az Űrlapmezők kódszerkezete fejezetben találsz.
2. lépés: az osztály regisztrálása
Szekció neve “2. lépés: az osztály regisztrálása”Az osztályt akkor példányosítsd, amikor a FluentCRM Pro már betöltődött; szokásos hely a plugins_loaded kampó:
add_action('plugins_loaded', function () { if (defined('FLUENTCAMPAIGN_DIR_FILE')) { new \Custom\Goals\CustomBenchmark(); }});Ezután:
- Az „Egyedi cél” blokk megjelenik az automatizálás-szerkesztő céllistájában.
- A blokk beállításaiban megadhatod a célzott termékeket és a többi opciót.
- Amikor az egyedi esemény bekövetkezik és a cél teljesül, a FluentCRM a
fluentcrm_funnel_benchmark_start_custom_benchmarkkampón át meghívja ahandle()metódusodat, így a saját célfeltételeid alapján léptetheted tovább a kapcsolattartókat az automatizálásban.
Készült: