Fasáda Advertisements
Odporúčaným vstupným bodom je RoundlyConsulting\Advertisements\Facades\Advertisements. Jej koreňom je RoundlyConsulting\Advertisements\AdvertisementManager, ktorý pre každú operáciu získa akciu z kontajnera — vaša vlastná väzba akcie sa preto uplatní aj vo fasáde. Prechody životného cyklu sú priame metódy:
use RoundlyConsulting\Advertisements\DataTransferObjects\AdvertisementData;
use RoundlyConsulting\Advertisements\Facades\Advertisements;
use RoundlyConsulting\Money\Money;
$ad = Advertisements::create(new AdvertisementData(
name: 'Vintage road bike',
price: Money::ofMajor('250.00', 'EUR'),
category: 'bikes',
author: $user, // any Eloquent model (polymorphic author)
));
Advertisements::publish($ad); // live now → AdvertisementPublished
Advertisements::publish($ad, now()->addWeek()); // scheduled → AdvertisementPublished
Advertisements::unpublish($ad); // back to draft → AdvertisementUnpublished
Advertisements::expire($ad); // → AdvertisementExpired
Advertisements::archive($ad); // → AdvertisementArchived
Advertisements::delete($ad); // soft delete → AdvertisementDeletedAj servírovanie je priame; všetko o jednej reklame — jej umiestnenia a meranie — nájdete pod handlom for($ad):
// Serving
Advertisements::in('sidebar')->get(); // active ads in a placement
Advertisements::targetedIn('sidebar', request())->get(); // … that target the viewer
Advertisements::random('sidebar'); // ?Advertisement
echo Advertisements::render($ad, 'sidebar'); // the creative, or the text ad
// One ad's scoped API
Advertisements::for($ad)->placements()->sync(['sidebar', 'header']);
Advertisements::for($ad)->runsIn('sidebar'); // true
Advertisements::for($ad)->track('sidebar')->impression();Všetky metódy
| Metóda | Vracia | Čo robí |
|---|---|---|
create($data) | Advertisement | Vytvorí reklamu z AdvertisementData. |
update($ad, $data) | Advertisement | Prepíše reklamu podľa AdvertisementData. |
publish($ad, ?$at = null) | Advertisement | Zverejní hneď alebo naplánuje na budúci okamih. |
unpublish($ad) | Advertisement | Vráti do konceptu; vymaže published_at. |
expire($ad, ?$at = null) | Advertisement | Ukončí platnosť hneď alebo nastaví budúcu expiráciu. |
archive($ad) | Advertisement | Archivuje bez zmazania. |
delete($ad) | bool | Soft delete. |
query() | Builder | Nový builder pre nakonfigurovaný model. |
active() | Builder | query()->active(). |
in($placement) | Builder | Aktívne reklamy v umiestnení (model, id alebo slug). |
targetedIn($placement, $viewer = null) | Builder | Aktívne reklamy v umiestnení, ktoré zodpovedajú polohe diváka. |
random($placement = null) | ?Advertisement | Jedna náhodná aktívna reklama, voliteľne pre umiestnenie. |
render($ad, $placement, $attributes = []) | HtmlString | Kreatíva pre umiestnenie, alebo textová reklama. |
for($ad) | AdvertisementHandle | API jednej reklamy — umiestnenia a meranie. |
for($ad)->placements()->attach / detach / sync($placements) | Advertisement | Pridá, odoberie alebo nahradí umiestnenia; reklama sa vráti s nanovo načítanými umiestneniami. |
for($ad)->runsIn($placement) | bool | Či je reklama priradená k umiestneniu. |
for($ad)->track(?$placement)->impression(?$data) / ->click(?$data) | ?AdvertisementEvent | Zaznamená zobrazenie alebo klik živej reklamy; pri zápise cez frontu null. |
fake() | AdvertisementsFake | Pre testy zapne zaznamenávajúci fake. |
- for($ad)->track() odmietne reklamu, ktorá práve nie je živá — koncept, naplánovanú, expirovanú či archivovanú — výnimkou AdvertisementNotActive a track($placement) odmietne umiestnenie, v ktorom reklama nebeží, výnimkou AdvertisementNotInPlacement. track() bez umiestnenia zaznamená meranie bez neho.
- Zápis vracia uložený AdvertisementEvent, alebo null, keď ho tracking.buffered pošle do fronty.
- render() ide cez naviazaný CreativeRenderer — responzívny <img>, ak existuje obrázková kreatíva, inak textovú reklamu.
- Metódy modelu — $ad->publish(), unpublish(), expire(), archive(), delete() a renderCreative() — sú len skratky nad tým istým manažérom, takže spúšťajú rovnaké udalosti a Advertisements::fake() ich zaznamená.
Alias fasády sa registruje globálne, pokiaľ register_facade_alias nie je false; samotná trieda fasády funguje vždy.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.