// Studija slučaja

Trubači Stars — sajt trubačkog orkestra za slavlja u celoj Srbiji

Orkestar koji svira na slavama, krštenjima i rođendanima ne prodaje proizvod iz kataloga. Kupac zove telefonom i pita dve stvari: da li ste slobodni tog datuma i koliko košta. Ceo sajt je građen oko ta dva pitanja — sto pet strana, nijedna forma i broj koji je uvek na dohvat palca.

Klijent
Trubači Stars (Stefan Tenor)
Delatnost
Trubački orkestar za slavlja i svadbe
Područje
Leskovac, Niš, Beograd — cela Srbija
Tip
Višestrani sajt, 105 adresa
Tehnologije
PHP 8.3 · nginx · deljeni includes · JSON-LD
Status
Živ sajt, u aktivnom održavanju
Naslovna strana sajta Trubači Stars sa brojem telefona u heroju
Naslovna — ime orkestra, broj telefona i put ka galeriji odmah na vrhu

Čime se Trubači Stars bave

Trubači Stars su trubački orkestar iz Leskovca. Vodi ga Stefan Tenor, a sastav se prilagođava prilici — od tri do osam muzičara, sa trubom, tubom, dobošem, tenor hornom i baritonom. Na sajtu stoji da orkestar svira više od petnaest godina i da iza sebe ima preko petsto nastupa; to su njihove brojke, ne naše merenje.

Posao je sezonski i vezan za kalendar. Slave, krštenja, rođendani, mature, ispraćaji u vojsku, serenade, veridbe, jubileji, otvaranja lokala, dočeci Nove godine, sahrane — i svadbe, koje su ceo svoj deo priče. Svaka prilika ima svoj običaj i svoj repertoar: Đurđevdan se ne svira kao ispraćaj, a slavski ustajanje ne liči na kolo u dva ujutru. Sedište je u Leskovcu i Jablaničkom okrugu, ali orkestar putuje po celoj Srbiji, a prevoz je uračunat u cenu.

Tu se ovaj posao razlikuje od prodavnice. Nema korpe, nema porudžbine, nema kataloga sa dugmetom „kupi". Postoji datum koji je ili slobodan ili nije, i cena koja se dogovara u razgovoru. Sajt zato nema zadatak da proda — ima zadatak da čoveka koji traži trubače u svom gradu, za svoju priliku, dovede do telefonskog broja u što manje koraka.

Šta je trebalo rešiti

Sajt nije nastao kao jedan zadatak nego kao niz prolaza kroz 2026. godinu. Svaki je počinjao merenjem, ne pretpostavkom, i svaki je našao nešto što se sa strane ne vidi:

  • Kontakt forma koja je slala u prazno. Forma na kontakt strani gađala je fajl koji na serveru ne postoji — server je vraćao 404, a upit nije stizao nigde. Koliko je dugo tako radila, ne može se utvrditi. Kasnije je ista forma, kad je popravljena, korisniku ispisivala sirov JSON odgovor umesto poruke da je upit poslat.
  • Dva domena istog vlasnika koji se otimaju o iste upite. Vlasnik ima i sestrinski domen. Oba su nudila i svadbe i slavlja, na šezdeset gradskih strana oba sajta stajao je identičan H1, a jedina prava prijava sa forme stigla je na ovaj sajt — i to za svadbu.
  • Ocena koje nije bilo. U strukturiranim podacima stajala je prosečna ocena 5 od 127 glasova, bez ijedne prikazane recenzije koja bi je pokrivala i bez Google profila iza nje.
  • Pomeranje rasporeda pri prvom otvaranju koje Googleova laboratorija nije videla, a pravi brauzer jeste.
  • Broj u reklami i broj na sajtu nisu bili isti. Orkestar ima dve linije, a reklama je vodila na jednu, sajt na drugu.

Uz to je išao jasan zahtev vlasnika: fokus na poziv i poruku, forma da se skloni. Njemu je telefon radni alat, a upit koji stigne na mejl i čeka pola dana je izgubljen termin.

Struktura — 105 adresa u tri sloja

Sitemap danas ima 105 adresa i sve su žive strane, ne generisani prazan sadržaj. Podeljene su u tri sloja.

Jezgro je šest strana koje ljudi otvaraju iz menija: naslovna, o nama, usluge, galerija, cenovnik i kontakt. Naslovna je duga i namerno tako radi — od heroja sa brojem telefona, preko četiri koraka rezervacije, do instrumenata, spiska prilika, utisaka, spiska gradova i pitanja koja stižu najčešće.

Prilike su dvadeset sedam strana, po jedna za svaki povod: slava, krštenje, rođendan, jubilej, matura, serenada, veridba, žurka, sahrana, otvaranje lokala, ispraćaj u vojsku, prvi maj, doček Nove godine, pa i pojedinačne slave — Nikoljdan, Đurđevdan, Aranđelovdan, Jovanjdan, Mitrovdan, Sveti Sava. Uz njih idu i vodiči koji nisu prodajni: slavski običaji i muzika, repertoar za slavu, svadbeni repertoar.

Gradovi su šezdeset strana, od Beograda i Novog Sada do Bujanovca i Bajine Bašte. To je sloj koji nosi najviše dolazaka sa pretrage, jer se trubači traže lokalno — čovek iz Pirota ne kuca „trubački orkestar Srbija" nego „trubači Pirot".

Sve to drži sedam deljenih PHP fajlova u includes/ — zaglavlje, navigacija, podnožje, poziv na akciju i šablon za landing strane. Jedna izmena u head.php stiže na svih sto pet adresa. Bez toga bi svaki popravak bio skripta nad sto fajlova, što je tačno ono kroz šta je prošao sestrinski sajt koji includes/ nije imao.

Dva domena, dve namere

Klijent je u avgustu tražio treći domen, da bi se „bolje rangirao". Umesto da se to uradi, izmereno je šta rade prva dva. Za četrnaest dana: ovaj sajt 167 organskih klikova, sestrinski dvadeset. Za sestrinski Google nije imao ni podatke o pravim posetiocima — sopstvena Googleova potvrda da sajt nema saobraćaj. I najvažnije: za svadbene upite Google je rangirao ovaj sajt, a ne domen koji je za svadbe napravljen.

Treći domen bi ponovio istu grešku. Umesto njega urađeno je razdvajanje namere. Trinaest slavljanskih strana koje su stajale na svadbenom domenu prebačeno je ovamo, a onda i ceo svadbeni sadržaj — sa 301 preusmerenjem sa starih adresa, da se ništa od već stečenog ranga ne izgubi. Sitemap je sa 92 narastao na 105.

Sestrinski domen je zatim izgrađen ispočetka kao nešto potpuno drugo — sajt fokusiran na jedan grad, sa svojom strukturom i svojim ciljem. O njemu piše zasebna studija: Trubači Beograd. Ovde je bitno samo jedno: dva sajta istog vlasnika više ne konkurišu jedan drugom, nego se ukrštaju linkovima.

Detalj koji je zamalo srušio ceo prenos: na serveru je od ranije stajalo pet preusmerenja u suprotnom smeru. Da su ostala, novi 301 lanac bi napravio petlju i obe adrese bi prestale da rade. Uklonjena su pre nego što je novo pravilo pušteno.

Poziv umesto forme

Na celom sajtu danas nema nijedne kontakt forme. To je odluka vlasnika i ona je za ovaj posao ispravna: čovek koji planira slavu za sledeću subotu neće pisati poruku i čekati odgovor, nego zove sledećeg iz Google rezultata.

Umesto forme, sajt ima pet puteva do telefona i svi su isti broj: zlatno dugme sa brojem u zaglavlju, plutajuće dugme za poziv na svakoj strani, lepljiva traka na dnu ekrana telefona sa izborom poziv / Viber / WhatsApp, dugme u heroju i broj u podnožju. Na kontakt strani stoje obe linije orkestra, radno vreme i lokacija. Primarni broj je od kraja jula 061, isti onaj koji je u Google reklami — pre toga je sajt vodio na jednu liniju, a reklama na drugu, pa se nije znalo odakle poziv dolazi. Zamena je prošla kroz 992 mesta u kodu.

Da bi se uopšte znalo koliko poziva sajt donosi, dodat je sopstveni brojač: klik na bilo koji tel: link šalje beacon na /api/track-call.php, koji upisuje vreme, putanju i tip dugmeta u log van webroota. Bez kolačića, bez IP adrese, bez ijednog ličnog podatka. Google analitika radi paralelno, ali tek pošto posetilac pristane — kolačići idu po Consent Mode v2 sa podrazumevanim odbijanjem.

Kad su forme brisane, obrisani su i njihovi serverski handleri i mrtav JavaScript koji ih je slao. Ostao je samo obrazac za lozinku na strani za održavanje, koja sa kontaktom nema veze.

Cenovnik koji objašnjava cenu umesto da je krije

Najčešće pitanje u ovoj branši je cena, a najčešći odgovor konkurencije je „pozovite nas". Zato je cenovnik trubača napravljen kao zasebna strana koja objašnjava mehanizam.

Tri paketa su prikazana i kao kartice i kao uporedna tabela, sa tri kolone: trajanje nastupa, broj muzičara i za koju je priliku paket namenjen. Ispod toga je šest faktora koji cenu pomeraju — udaljenost od Leskovca, trajanje, broj muzičara, dan u nedelji i sezona, tip događaja i posebni zahtevi kao što je učenje nove pesme. Pa način plaćanja, pa garancija, pa deset najčešćih pitanja.

Tabela je namerno bez cifara po paketu, jer ih orkestar nema — cena se sklapa u razgovoru. Ono što strana daje jeste okvir i razlog: čovek zna šta pomera cenu pre nego što digne slušalicu, pa razgovor počinje od konkretnog, a ne od nagađanja.

Ta tabela je i unutrašnji kanon. Iste tri stavke — trajanje, broj muzičara, prilika — moraju se poklapati svuda gde se pominju. Ranije su četiri identične cenovne kartice bile zalepljene na 74 landing strane, bajt za bajt iste, i konkurisale samoj strani cenovnika u pretrazi. Skinute su sa svih osim sa one kojoj su cene tema, a na njihovo mesto je došla lokalizovana napomena i link ka cenovniku.

Padeži gradova — šezdeset puta ista greška

Gradske strane su rađene iz šablona i tu je nastao problem koji nijedan automatski test ne prijavljuje: generator je nastavke lepio na nominativ. Na sajtu je pisalo „u Šabacu" umesto „u Šapcu", „u Indijau" umesto „u Inđiji", „do Ćuprijaa" umesto „do Ćuprije", „Pitanja Zrenjaninana" umesto „Pitanja koja nam stižu iz Zrenjanina".

Ukupno 191 mesto na 58 strana. Za posetioca iz tog grada to je prva rečenica koju pročita i jedini utisak koji mu treba — sajt je stranac koji ne zna kako se njegov grad zove. Popravljeno je tablicom padeža za svih šezdeset gradova, uz zaštitu ručno pisanih naslova koji su već bili ispravni, tipa „Pitanja koja nam Beograđani najčešće postavljaju".

Ista klasa greške bila je i u naslovima strana: Indija umesto Inđije, što je ime države a ne grada u Sremu, pa Knazevac, Sid i Vrnjacka Banja bez dijakritike. Naslov je ono što Google prikazuje u rezultatu — tu se ne štedi.

Zamka koja je iz ovoga naučena: masovna zamena po obrascu trubaci-* zahvatila je i strane koje nisu gradske, pa je strana o trubačima za slavu i njoj slične moralo posebno da se proveri. Posle svake grupne izmene ide provera na stranama koje u šablon ne spadaju.

Ocena koje nije bilo

U strukturiranim podacima sajta stajala je ocena 5,0 na osnovu 127 glasova. Na 76 strana ovog sajta i 82 strane sestrinskog — ukupno 158 mesta. Iza toga nije stajala nijedna prikazana recenzija koja bi je pokrivala, ni Google profil, ni bilo koji izvor koji se može proveriti.

Google to tretira kao neistinite strukturirane podatke i kazna nije upozorenje nego skidanje bogatih rezultata za ceo domen, ručno i bez roka. Ocena je skinuta sa svih 158 strana. Uz nju je skinuta i vidljiva tvrdnja „5/5 ocena klijenata" sa 155 strana, a na njeno mesto je došla činjenica koja se sa cenovnika može proveriti: sastav ima od četiri do osam muzičara.

Detalj koji je posao učinio dužim nego što izgleda: ocena je na dva sajta bila zapisana u dva različita oblika — kao JSON tekst na jednom i kao PHP niz na 47 strana drugog. Jedan izraz za pretragu hvata samo jedan oblik, pa je prvi prolaz ostavio polovinu nedirnutu, a provera po fajlovima je lagala da je čisto dok se nije proverilo ono što server stvarno servira.

Kasnije su skinuta i dva ručno upisana Review bloka sa izmišljenim imenima. Utisci koje je vlasnik dao ostali su na sajtu kao njegov tekst, bez ijedne zvezdice i bez tvrdnje o proseku — jer utisak je utisak, a ocena je podatak koji neko mora da izmeri.

Pomeranje koje se videlo samo na hladnoj poseti

Ovo je bio najteži deo celog posla. Googleov alat je za naslovnu prijavljivao pomeranje rasporeda od 0,002 — odlično. Prava hladna poseta u pravom brauzeru na desktopu davala je između 0,21 i 0,58 — loše. Oba merenja su bila tačna.

Uzrok nije bio font sam po sebi. Tri dugmeta u heroju su velikim slovima, sa telefonskim brojem i razmaknutim slovima, i taj red je tačno na granici prelamanja. Dok se pravi font ne učita, tekst se crta rezervnim, a rezervni je za baš te natpise bio širi od pravog — red od 866 piksela u kontejneru od oko 860. Dugmad padnu u drugi red, hero poraste, font se učita i sve skoči nazad.

Amplifikator je bio ukras: dekorativni sloj iznad heroja bio je dvostruko veći od njega i vezan za njegov okvir, pa je svaku promenu visine množio sa dva. Prvi pokušaj popravke — proširivanje rezervnog fonta — pogoršao je stvar, jer je red postao još širi.

Rešenje je izmereno, ne pogođeno: rezervni font sa size-adjust: 95% tako da je uvek uži od pravog i nikad širi, font-display: optional na svih osamnaest deklaracija, dekor vezan za veličinu prozora umesto za hero, i asinhrono učitavanje fontova. Naslovna je sa 0,578 pala na 0,002 na desktopu i sa 0,188 na 0 na telefonu, cenovnik sa 0,138 na 0, gradska strana sa 0,333 na 0,004.

Pravilo koje je iz ovoga ušlo u naš postupak: rezervni font sme da bude uži od pravog, nikad širi, a prihvatanje popravke je hladna poseta bez prelamanja na oba širine ekrana. Google danas za ovaj domen iz podataka pravih posetilaca prijavljuje LCP 1553 ms i CLS 0.

SEO, schema i mašine koje čitaju umesto ljudi

Svaka od 105 strana ima svoj naslov, svoj opis i svoj kanonik. Posle poslednjeg prolaza nema nijednog dupliranog naslova, nijednog dupliranog opisa, nijedne strane bez telefona i nijedne koja se sakrila od indeksiranja. Sitemap se poklapa sa kanonicima jedan na jedan.

Strukturirani podaci pokrivaju LocalBusiness, MusicGroup, Organization, WebSite, mrvice i pitanja sa odgovorima — pedeset tri bloka, sva ispravna. Adresa, koordinate, radno vreme, oblast rada i profili na Instagramu i YouTube-u su u njima, jer za lokalni upit Google traži baš to.

Za odgovarajuće mašine, ne samo za pretraživače, dodat je llms.txt, a robots.txt izričito dozvoljava GPTBot, ClaudeBot, PerplexityBot i ostale — sa ovakvim sadržajem, gde svaka prilika ima svoju stranu sa običajima i repertoarom, biti citiran u odgovoru vredi koliko i biti u rezultatima. Svaka izmena se prijavljuje kroz IndexNow, što pokriva Bing i Yandex; Google ide svojim tempom.

Jedna stvar je ovde namerno ostavljena „pogrešnom". Naslovi naslovne, strane usluga i strane za Leskovac su duži od preporuke i svaki audit ih prijavljuje. Te tri strane rangiraju, a naslov koji rangira se ne dira zbog preporuke iz alata. To stoji zapisano da sledeći prolaz ne bi „popravio" ono što radi.

Ostalo je i ono što se bez vlasnika ne može: Google Business Profile ne postoji, a to je za lokalne upite najjača poluga koja stoji neiskorišćena.

Šta klijent na kraju ima

Jedan sajt koji drži obe namere, sto pet adresa koje se ne otimaju međusobno, i sestrinski domen koji radi svoj posao umesto da ponavlja isti. Bez platforme, bez mesečne pretplate, bez dodatka koji se raspadne pri sledećem ažuriranju — običan PHP i nginx na serveru, kod u git istoriji, rezervna kopija pre svake izmene.

Merenja posle poslednjeg prolaza: sve strane odgovaraju sa 200, nula mrtvih linkova, HTML bez ijedne greške po W3C validatoru, na desktopu 99 do 100 za brzinu i 100 za pristupačnost, dobru praksu i SEO, na telefonu 100 za pristupačnost, dobru praksu i SEO uz brzinu u gornjem delu skale. Pošta domena ima potpis, SPF i DMARC, a HTTPS je na Googleovoj preload listi.

Praktično, dan izgleda ovako: neko iz Kruševca kuca „trubači Kruševac", otvara stranu svog grada, vidi broj u zaglavlju i lepljivoj traci, zove i dogovara termin u istom razgovoru. Klik na broj se upiše u log, pa se posle meseca zna koliko je poziva sajt doneo i sa kojih strana.

Sajt nema panel za uređivanje i to je svesna odluka — sadržaj se menja retko, a kad se menja, menja se kroz kod, sa proverom uživo posle svakog puštanja. Ono što je otvoreno, otvoreno je kod vlasnika: profil na Google mapama, snimci sa nastupa pod jednim nalogom na YouTube-u i utisci koje bi trebalo zameniti pravim recenzijama. To su stvari koje se ne mogu napisati umesto njega.

// Sajt uživo

Trubači Stars

Trubački orkestar za slave, krštenja, rođendane i sve vrste proslava — Leskovac, Niš, Beograd i cela Srbija.

trubacizaslavlja.rs

Često postavljana pitanja

Zašto orkestar ima dva sajta, a ne jedan veliki?
Zato što vlasnik već ima dva domena i oba imaju istoriju u pretrazi. Spajanje u jedan bi bacilo sve što je drugi domen stekao. Umesto toga su im razdvojene namere: ovaj sajt pokriva slavlja i celu Srbiju, sestrinski jedan grad. Treći domen, koji je klijent tražio, nije napravljen — merenje je pokazalo da bi ponovio grešku drugog.
Zašto na sajtu nema kontakt forme?
Zato što je vlasnik tražio da je nema, i zato što brojevi to potvrđuju: za sve vreme dok je forma radila stigla je jedna prava prijava. Čovek koji traži trubače za sledeću subotu zove telefonom. Sajt umesto forme ima pet puteva do broja, plus Viber i WhatsApp.
Zašto na sajtu nema ocene sa zvezdicama?
Zato što bi bila izmišljena. Ocena u strukturiranim podacima mora da stoji iza stvarnih recenzija koje se mogu proveriti; ona koja je zatečena nije imala nijednu. Google to kažnjava skidanjem bogatih rezultata za ceo domen. Kad orkestar skupi prave recenzije na Google profilu, ocena se vraća sa izvorom iza sebe.
Može li vlasnik sam da menja sadržaj?
Ne, i to je namerno. Sadržaj se na ovakvom sajtu menja retko — nova prilika, nov grad, ispravka teksta — pa panel za uređivanje ne bi zaradio svoje održavanje. Izmene idu kroz kod, sa rezervnom kopijom pre i proverom uživo posle.
Koliko strana ovakav sajt može da izdrži?
Sto pet je trenutno stanje, ali granica nije tehnička. Sve strane dele sedam PHP fajlova, pa jedna izmena u zaglavlju stiže na sve odjednom. Granica je sadržajna: strana ima smisla samo ako o tom gradu ili toj prilici ima šta konkretno da se kaže.
Da li se sajt vidi kako treba na telefonu?
Da, i tamo dolazi većina posetilaca. Na telefonu je uz to i lepljiva traka na dnu ekrana sa tri dugmeta — poziv, Viber, WhatsApp — pa broj nikad nije dalje od jednog dodira, bez obzira dokle je čovek doskrolovao.

Treba vam ovakav sajt?

Recite mi čime se bavite i šta sajt treba da uradi za vas — dobijate fiksnu ponudu i rok, u pisanoj formi.

Pozovi