Ovaj dokument predstavlja primarni dugoročni kontekst, arhitektonski temelj i inženjerski standard za razvoj
prilagođene (custom) WordPress teme kaz-blank. Svi AI agenti i programeri moraju striktno pratiti
ova pravila kako bi se očuvao integritet sistema.
/kaz/ (npr.
dev.dunavgold.rs/kaz/).
Sistem cena prati visoko turbulentno berzansko tržište i podeljen je na pozadinske (asinkrone) procese i klijentske (live) zaobilaznice.
https://dunavgold.rs/dg-feed/cene.json. Početni "meta" objekat u nizu se ignoriše. Mapiranje se
vrši isključivo preko SKU koda artikla ($item->art == $sku).
inc/price-sync/koeficijent.json.
Putanja MORA biti definisana apsolutno preko WordPress funkcija:$coefsPath = get_template_directory() . '/inc/price-sync/koeficijent.json';
* * * * * curl -s "https://dev.dunavgold.rs/kaz/wp-json/kaz/v1/cron-sync?token=kaz-secure-cron-2026" > /dev/null
wp_kaz_price_history
skladišti dnevne preseke najnižih cena za kategoriju 1g.SELECT price FROM wp_kaz_price_history WHERE weight_category = '1g' AND date <= %s ORDER BY date DESC LIMIT 1
55 23 * * * wget -q -O - https://dev.dunavgold.rs/kaz/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Zbog agresivnog keširanja stranica, cene na frontendu se ne smeju ispisivati direktno iz PHP-a ukoliko su podložne brzim promenama.
/wp-json/kaz/v1/live-prices. Prihvata
pojedinačne ili grupne ID-jeve (?ids=12,45,88) ili tehnički tag
(?tag=chart-ref-1g).add_filter( 'litespeed_cache_api_bypass', '__return_true' );
DOMContentLoaded događaju. Ona skenira
stranicu, prikuplja sve elemente sa cenama (preko .price klase ili data-live-tag
atributa), spaja ih u jedan mrežni zahtev i asinhrono povlači sveže cene iz baze.Sve tehničke oznake proizvoda koje počinju sa prefiksom chart-ref- (npr. chart-ref-1g)
služe isključivo za pozadinsko programsko identifikovanje i MORAJU biti filtrirane i sakrivene
iz javnih WooCommerce metapodataka, vidljivih tagova na stranici proizvoda i Tag Cloud vidžeta.
Jasna podela između sistemskih datoteka i sadržaja koji unosi korisnik.
assets/css/ i assets/js/ - Stilovi i skripte teme.assets/js/vendor/ - Eksterne biblioteke (npr. lenis.min.js).assets/img/ - Isključivo sistemska grafika (logotipi, ikone, fiksne pozadine koje čine layout).
assets/icons/ - Isključivo sistemski SVG fajlovi koji se dinamički učitavaju pomoću
kaz_get_icon() helper funkcije.
assets/video/ ili assets/media/ - Teški elementi koji čine strukturu teme (npr.
optimizovani 1080p WebM/MP4 video petlja za pozadinu hero sekcije).Kako bi se izbeglo lepljenje sirovog (inline) SVG koda u templejte, a zadržala puna CSS kontrola nad elementima,
koristi se PHP helper funkcija kaz_get_icon( $icon_name, $class = '' ).
.svg fajlove iz
assets/icons/ foldera (prateći šablon imena icon-{$icon_name}.svg) koristeći
apsolutnu serversku putanju i funkciju file_get_contents().
<svg> tag pre samog renderovanja u HTML-u.fill: currentColor;, što omogućava potpunu kontrolu boja, tranzicija i hover efekata direktno
iz style.css preko roditeljskih elemenata (npr. promenom color svojstva na
roditeljskom divu).
<?php echo kaz_get_icon('delivery', 'service-icon-svg'); ?>
Imagick klasa presreće fajl (wp_handle_upload filter), vrši
proveru širine i primenjuje sledeće nivoe kompresije pre konverzije u .webp format uz brisanje
originala:
Quality: 85).Quality: 70).Za datoteke koje programer ručno ubacuje u assets/img/ direktorijum, koristi se lokalna Python
skripta sa Pillow bibliotekom koja preslikava serversku logiku (85/70 kvalitet u zavisnosti od
1400px limita), generiše kompresovane .webp blizance, ali čuva originalne izvorne
fajlove netaknutim na lokalnom disku.
assets/js/vendor/lenis.js obezbeđuje smooth scroll efekat na
čitavom sajtu.const lenis = new Lenis({
lerp: 0.07,
smoothWheel: true
});
Skripta je uvezana u WordPress sistem zavisnosti tako da se scroll.js nikada ne učitava pre nego što
lenis.js bude potpuno dostupan.
__DIR__ ili relativne
skokove tipa ../ za uključivanje (include/require) osnovnih komponenti unutar
functions.php. Uvek koristiti get_template_directory().
front-page.php,
page-templates/). Integracija sa ACF (Advanced Custom Fields) i prebacivanje u dinamička polja
vrši se tek nakon što je frontend dizajn potpuno potvrđen.
1, kako cena ne bi pala na nulu).