Dodirnuta sekcija php. Ispovest mrzitelja Bitrixa

10.08.2022

Članak koji ispituje HTML element odjeljka iz kategorije sekcije.

Svrha elementa sekcije

Element odjeljka se koristi za kreiranje odjeljka u dokumentu koji zajedno grupiše neki tematski sadržaj. Za svaki odjeljak u dokumentu treba navesti njegov naziv (tema). Ovo se obično radi pomoću naslova (elementi h1 - h6).

Naslov odjeljka

Sadržaj odjeljka...

Elementi presjeka se obično koriste u sljedećim slučajevima:

  • da označite sekcije unutar sekcije. Na primjer, da biste označili poglavlja u članku, kartice u dijaloškom okviru, odjeljke u disertaciji itd.
  • grupirati nekoliko sekcija u jednu tematsku grupu. Na primjer, za grupisanje Najnovije vijesti na web stranici, komentari na članak itd.

Dakle, element odjeljka treba koristiti samo za neki sadržaj ako ima naslov i dio je nečeg drugog.

Korištenje elementa sekcije

Na primjer, razmotrite fragment koda stranice koji sadrži članak s komentarima. Svaki komentar koji je korisnik ostavio na stranici sadrži kompletan sadržaj i stoga se može smatrati elementom članka. Ali, u isto vrijeme, svi komentari predstavljaju određenu tematsku grupu, pa se stoga mogu smjestiti u element odjeljka, tj. ovaj element grupiraće sve ove komentare na stranici zajedno.

Naslov članka

Komentari

Naslov komentara

Tekst komentara...

Naslov komentara

Tekst komentara...

Naslov članka Komentari Naslov komentara Naslov komentara

Na primjer, razmislite o korištenju elemenata odjeljka za kreiranje odjeljaka unutar elementa članka:

Naslov knjige

Prvo poglavlje

Poglavlje drugo

Treće poglavlje

Dodatak A

Dodatak B

Gornji primjer će imati sljedeći nacrt:

Naslov knjige Prvo poglavlje Drugo poglavlje Treće poglavlje Dodatak A Dodatak B

Ograničenja pri korištenju elementa sekcije

Element sekcije u HTML 5 nije univerzalni element za grupisanje sadržaja, tj. ne bi trebalo da se koristi za umotavanje sadržaja koji vam se sviđa. Njegova glavna svrha je dodati semantiku dokumentu i kreirati njegovu strukturu (okviru).

Kada autor treba da grupiše sadržaj samo da bi ga stilizovao ili njime manipulisao u JavaScript-u, element div je njegov najbolji izbor. Element div, za razliku od elementa section, ne dodaje semantiku dokumentu i ne učestvuje u kreiranju njegove strukture (okviru).

Razlika između elemenata odjeljka i članka

Elementi odjeljka i članka, iako na prvi pogled izgledaju vrlo slični, imaju različita semantička značenja. Element članak namijenjen je grupiranju sadržaja koji je potpun, samostalan i koji se može gledati odvojeno od ostatka sadržaja stranice. Element odeljka ima drugačije semantičko značenje; on je namenjen grupisanju sadržaja koji je deo nečeg drugog.

Ali kako autor zna šta je neki sadržaj na stranici? Pogledajmo ovo koristeći primjer iz fragmenta članka. Fragment je dio članka i stoga zahtijeva element odjeljka da grupiše njegov sadržaj. Ali ovaj isti fragment, već ostavljen kao komentar, predstavljat će nešto cjelovito, cjelovito. Stoga, u ovom kontekstu, možete koristiti element članka da ga grupišete. Ali, naravno, može se raspravljati i obrnuto. Stoga, koji element koristiti za grupisanje sadržaja u većini slučajeva ovisi o vašem subjektivnom mišljenju kao autora. Ali najvažnija stvar u ovom pristupu je zadržati odabranu poziciju. Dakle, što je autor dosljedniji u kreiranju strukture, to će više značenja moći u nju da unese.

Predlošci u Bitrix-u se mogu podijeliti u nekoliko tipova:
  • Regularni i složeni 2.0 predlošci komponenti
  • Website templates
  • Predlošci za druge subjekte (poštanske poruke, bilteni, web obrasci, generatori izvoza i još mnogo toga)

Predlošci komponenti čak imaju mogućnost korištenja predložaka. U principu, možete povezati bilo koji šablonski mehanizam, ali nema pomoćnih alata iz kutije. Ako nekome treba, imam par linkova za nastavke za grančicu i oštricu koji rade i dosta se koriste u proizvodnji. Ali čak i ovdje bitriksoidi su postali izopačeni. Predložak se može koristiti samo sa komponentama. Neće biti moguće povezati predložak sa rendererom predložaka web stranice ili drugim entitetima, jer tamo nema renderera.

Još jedna neugodna stvar u vezi sa šablonima komponenti je njihovo postavljanje. Komponenta je povezana pomoću jednostavnog dizajna
$APPLICATION->IncludeComponent("bitrix:catalog.section", "template_name", );
Drugi parametar je naziv predloška komponente. Dakle, ovisno o različitim uvjetima, lokacija ovog predloška može biti na najneočekivanijim mjestima:

  • bitrix/components/bitrix/catalog.section/templates/template_name
  • local/components/bitrix/catalog.section/templates/template_name
  • bitrix/templates/.default/components/bitrix/catalog.section/template_name
  • bitrix/templates/site_template/components/bitrix/catalog.section/template_name
  • local/templates/.default/components/bitrix/catalog.section/template_name
  • local/templates/site_template/components/bitrix/catalog.section/template_name
  • bitrix/components/bitrix/catalog/templates/.default/bitrix/catalog.section/template_name
  • local/templates/site_template/components/bitrix/catalog/.default/bitrix/catalog.section/template_name
I još nisam naveo sve opcije...

Šablon sajta se može smatrati skupom fajlova: header.php, footer.php (da, sajt ih mora imati), description.php (sistemski opis šablona sajta), template_styles.css (stilovi šablona sajta), direktorij sa predlošcima komponenti i drugom grupom manje značajnih datoteka. To je sve. I na to ne možete uticati ni na koji način, ne možete ništa učiniti povodom toga. Nemoguće je pokupiti predložak.

O drugim šablonima nema šta da se kaže. Oni su ili jednostavno pohranjeni u bazi podataka u obliku izgleda sa nekim „promjenjivim“ podacima uključenim u njega, ili je to glupa PHP datoteka koja obavlja sav posao, od preuzimanja parametara iz baze podataka do prikazivanja informacija. Na primjer, možete pogledati generator YML datoteka za tržište. Nema smisla postavljati ga ovdje, jednostavno zato što je prilično velik, oko 2k redaka. Kome treba može proguglati, nalazi se u /bitrix/modules/catalog/load/yandex_run.php

Priroda datoteke

Kao što je gore postalo jasno, u Bitrixu arhitektura nije baš dobra. Ali Bitrix ima još jedan važan aspekt svoje arhitekture.
Bitrix je CMS sa pola datoteke. Mnoge stvari se kontrolišu pomoću nekih fajlova:

  • Treba vam stranica - kreirajte fajl
  • Potreban vam je skup stranica - kreirajte datoteku i povežite tamo komponentu koja radi sa infoblokovima
  • Morate postaviti naslov stranice - uredite datoteku
  • Morate postaviti naslov za sve stranice odjeljka - kreirajte poseban file.section.php u korijenu ovog odjeljka
  • Morate urediti prava - uredite datoteku .access.php
  • Postavke prije inicijalizacije sistema - u datoteci dbconn.php, .settings.php i .settings_extra.php
  • result_modifier.php, component_epilog.php, init.php, .parameters.php, .description.php ....

I postoji ogroman broj takvih specijalnih datoteka razbacanih po cijelom Bitrixu. S jedne strane, to daje određenu fleksibilnost pri radu sa sistemom. S druge strane, ovo se može pretvoriti u muku i za programera i za upravitelja stranice. Fajlovi stranica se ponekad pretvaraju u zbrku PHP koda, rasporeda i komponenti dodataka. Kao rezultat vizuelni urednik može pogrešno raščlaniti ovu datoteku, a prilikom uređivanja može lako izbjeći PHP oznake na nekim mjestima, što će dovesti do toga da stranica ne radi. Kažete - nema potrebe pisati PHP kod u takve datoteke? Da, znam. Ali Bitrix vas vrlo često i bez alternative prisiljava na to.
I morate stalno držati informacije u svojoj glavi o tome kakve su to datoteke i koje podatke mogu sadržavati. IN različite datoteke mora sadržavati različite podatke s različitim strukturama i morate ih zapamtiti za svaku opciju. Traženje ovoga u dokumentaciji svaki put je težak posao.

Pored navedenog

Možete se beskrajno žaliti kako sve loše funkcionira u Bitrixu. Po mom mišljenju, sve ove pritužbe mogu se okarakterizirati jednom frazom - "nekako ne u potpunosti". I zaista, ako Bitrixoids iznenada najavi neku funkciju, onda je nekako ne puštaju u potpunosti, ne dovršavaju, ne dovode je na pamet. Ima dosta primjera:

  • implementiran ORM - još nije završen, ne može se u potpunosti koristiti
  • Napravili smo autoloader, radi samo u modulima, a ne po standardima
  • omogućio je povezivanje šablona, ​​ali ga ne možete koristiti svuda, a ne u potpunosti
  • itd. i tako dalje.

Ukratko, pokušaću da okarakterišem preostale probleme sa kojima se svakodnevno suočavam.

Admin

Ako je neko radio sa admin panelom, kreirao svoje stranice u administrativnom delu na način na koji Bitrix predlaže da to uradi, razumeće me. To je samo pakao. Za one koji nisu upoznati, Bitrix predlaže korištenje nudle datoteke za svaku stranicu. Na primjer, stranica za detaljan pregled narudžbe u admin panelu koju su napravili Bitrix programeri zauzima 4k redaka. Moj IDE počinje da usporava kada gledam sadržaj ove datoteke. Tu imate php, js i html. Dobro je što su se riješili SQL-a, iako sam siguran da je na drugim administrativnim stranicama.
A šta je spriječilo administrativne stranice da rade koristeći iste komponente nije jasno. Jednostavno ne postoji način da prilagodite većinu administrativnih stranica. U slučaju komponenti, to bi se moglo učiniti za kratko vrijeme.
Inače, dobri ljudi su napravili modul koji će vam pomoći da napravite administrativne stranice

js framework

Bitrix ima js komponentu koja djeluje kao neka vrsta klijentskog okvira. Niko od programera to ne voli iz nekoliko razloga:
  • gotovo da nije dokumentovano
  • on je monstruozan
  • u velikoj mjeri duplira jquery poznat mnogima

Bitrix ga vrlo često koristi u svojim komponentama, izazivajući time još veći bijes među programerima. Jezgro ove biblioteke u minimiziranom obliku je 85 kb, što nije malo. Ne možete izbjeći njegovo povezivanje ako želite koristiti sve mogućnosti Bitrixa (kompozit, upravljanje imovinom).

Copy-paste duh

IN U poslednje vreme sve manje i manje, ali i dalje prilično često, Bitrix vas prisiljava da nešto kopirate i zalijepite. Ako želite izmijeniti rad komponente, kopirajte je i zalijepite. Ako želite da kreirate sopstveni šablon za otpremanje, kopirajte i zalijepite sistemski i završite ga. Ako želite napraviti skoro isti predložak koji imate, kopirajte ga i zalijepite ga i malo promijenite. O tome čak govore i na kursevima za programere početnike. Nemam riječi.

Upravljanje imovinom i CDN

Zaista mi se sviđa način na koji Bitrix upravlja resursima. U principu, moguće je registrovati skup određenih "biblioteka". Svaka biblioteka je skup css/js datoteka koje mogu ovisiti o nekim drugim bibliotekama. Ako povežete biblioteku sa stranicom, tada će prije povezivanja sve ovisnosti biti riješene i sve zavisne biblioteke će biti umetnute u stranicu. Čini se da je sve u redu, samo će svaki resurs biti umetnut u obrazac zaseban fajl u skripti ili oznaci veze. I zahvaljujući tome, postoje stranice koje imaju 30-50 povezanih skripti i isto toliko stilskih datoteka.
To je sranje pitanje, rekli su u Bitrixu, i napravili su čarobnu kvačicu koja kombinuje sve ove fajlove u jedan. I pojavile su se stranice gdje su umjesto 50 skripti bile 2, svaka po 300-500 kb. Prije nekog vremena ovo spajanje je radilo s greškama i spajalo je nekoliko puta iste resurse, ali sada se čini da je popravljeno.
A onda su im se Bitrixoidi sklonili s puta – dodali su mogućnost upload-ovanja svih resursa na CDN server. Koji uvek padne...
Zatim se pojavio Google Pagespeed Insights, koji je preporučio premještanje svih resursa na dno stranice. A u Bitrixu su opet napravili magični checkbox koji glupo izostavlja sve resurse u tijelu ako nisu označeni posebnim atributom.
Oni također distribuiraju minimizirane verzije svojih skripti zajedno sa kutijom, koja se povezuje kada koristite drugi čarobni okvir za potvrdu na admin panelu.
Općenito, nema scss-a za vas, nema TypeScript-a. Ako želite kompetentno upravljati resursima, nemojte koristiti ugrađeni Bitrix sistem, koristite webpack koji se lako može upariti sa Bitrixom.

Više stranica/višejezično

Ovo je vjerovatno najgora glavobolja za programera, koja traje od samog početka proizvoda. Ne možete jednostavno kreirati višejezičnu web stranicu. A ako vam treba višejezični katalog s različitim cijenama i valutama, onda se to pretvara u brašno, za koje također morate platiti urednu svotu (morat ćete izdvojiti za kupovinu dodatne licence za sljedeću jezičnu verziju stranica).
Ako kreirate višejezičnu i viševalutu web stranicu, budite spremni na činjenicu da će se Bitrix tome vrlo agresivno oduprijeti. Postavke za više lokacija su decentralizirane na cijelom administrativnom panelu. Svaki entitet u admin panelu ima svoju zavisnost od jezičke verzije sajta. Neki entiteti možda uopće ne podržavaju ovisnosti o mjestu/jeziku, dok drugi imaju samo nedvosmislenu vezu s jezikom, tako da će ovaj entitet morati biti dupliciran, a zatim podržan.
U osnovnoj verziji, da bi blok informacija radio na nekoliko jezika, morat ćete kreirati duplikat ovog informacijskog bloka. Ali u praksi to niko ne radi i pokušava da smisli sopstvene načine za centralno skladištenje jednog entiteta, distribuirajući njegove atribute zavisne od jezika na druge skladišne ​​kapacitete.
Ne možete postaviti podrazumevani jezik tokom lokalizacije. Ako imate jezičku varijablu koja opisuje neku frazu na ruskom, a ova jezička varijabla nije u engleskoj verziji, tada će se na engleskom mjestu prikazati prazan red i na to se ne može utjecati ni na koji način (u mnogim slučajevima možete ostavite ruski izraz tako da nema praznina).

Mehanizam upravljanja pravima

Bili su veoma pametni sa ovim podsistemom. Često je teško shvatiti zašto ste nekom entitetu dodijelili prava gledanja, ali ih korisnik ne može koristiti. Na primjer, da biste dali pravo na uređivanje informacijskog bloka, morate dati pristup direktoriju /bitrix/admin, dodijeliti prava za određeni blok informacija i dodijeliti prava u glavnom modulu. Potrebno je uraditi previše operacija da bi se izdala prava za jedan entitet. A ako nema dovoljno prava, onda bez brčkanja po izvornom kodu nema načina da se shvati zašto.

Konfiguracija

Bitrix nema centralizovano čvorište koje bi vam omogućilo upravljanje sistemskim postavkama. Postavke su ponovo decentralizirane u cijelom sistemu. Opcije su dostupne u postavkama modula, u postavkama komponenti, u COption-u (ne postavljaju se u admin panel). U admin panelu opcije za jedan modul mogu biti razdvojene za 3-4 metra različite stranice, koji se nalaze na potpuno različitim mjestima. urlrewrite se može uređivati ​​preko admin panela! Sada i .settings i .settings_extra. Ponekad uopće nije jasno koji od njih ima veći prioritet, vrlo često nema dovoljno objašnjenja za opcije, a odnosi su nejasni. Ne postoji izvorni način za dijeljenje konfiguracije između programera.
Postavke mogu biti vrlo nelogične. Ponekad dođe do apsurda... pogledajte komponentu bigdata - može li neobučena osoba to postaviti?

Integracija sa 1C

Ovo je stavka na listi Bitrix funkcija koja privlači dovoljno pažnje veliki broj kupaca. Bitrix obećava da će postaviti dvosmjernu integraciju stranice sa 1C u 2 klika, koja će trenutno isporučiti sadržaj i dokumente iz jednog sistema u drugi.
Da, zaista jeste, ali uz nekoliko upozorenja.
Prvo, da biste izvršili integraciju "iz kutije" bez dodatnog napora, morate učiniti sve točno kako je napisano u Bitrix dokumentaciji - izgraditi katalog na web stranici prema pravilima koja Bitrix nudi i izgraditi katalog u 1C koje Bitrix zahtijeva. U idealnom slučaju, kreirajte sve od nule, a onda će vam možda sve raditi iz kutije.
Drugo, Bitrix nije kompatibilan sa svim 1C konfiguracijama iz kutije. Vrijedi prvo provjeriti
Treće, ne postoji idealan svijet. Tipično, kupac koji želi web stranicu već ima maloprodajni biznis, što znači da već ima 1C, što je ogromna deponija smeća. I ovo smeće se mora baciti na lokaciju. A kako se stranica ne bi pokazala kao isto smeće, potrebno je značajno poboljšati mehanizam razmjene.
Vrlo često se zahtjevi kupaca uvelike razlikuju od vizije proizvoda koju je formirao Bitrix tim, a zatim usavršavanje mehanizma zamjene može biti prilično skupo, uporedivo po intenzitetu rada sa razvojem jedinstvenog modula za razmjenu za konkretan slučaj.
Stoga, ne morate gajiti iluzije da ćete moći lako integrirati svoju stranicu sa 1C. Sve su to mahinacije marketinških stručnjaka.

Rafiniranje razmjene sa 1C također je posebna tema. Klasa \CIBlockCMLImport je odgovorna za organiziranje razmjene kataloga - 5,7k redaka. Jedna od glavnih metoda koja najčešće zahtijeva proširenje je \CIBlockCMLImport::ImportElement, koja sadrži više od 1k linija. Dovoljno ga je jednom naslijediti, nekoliko puta ažurirati proizvod u dužem vremenskom periodu i možete dobiti neradnu razmjenu sa 1C. Stoga se programeri često ne zamaraju ovom klasom i pokušavaju nekako ući u proces uvoza koristeći rukovaoce događajima. Rad sa obrađivačima događaja u Bitrixu, posebno u modulu infoblokova, također nije baš ugodno iskustvo, makar samo zato što događaji istog tipa nisu jednolično raspoređeni, a neki događaji jednostavno nisu dovoljni.
Generalno, stvari su tužne kao i ranije.

Nedosljednost

Ponekad mi se čini da programeri različitih modula zapravo ne komuniciraju jedni s drugima. Kada proučavate izvore kernela, nailazite na vrlo različita rješenja koja bi se mogla implementirati na jednom motoru, ali se iz nekog razloga različito implementiraju.
Na primjer, možete uzeti svojstva elemenata informacijskog bloka i korisničkih polja. Oba entiteta su zapravo dodatno polje za drugi entitet. Ima vrstu, značenje i opis. Vrijednost je pohranjena u zasebnoj tablici baze podataka; oni imaju približno sličan interfejs za pristup podacima. Pa zašto ne napraviti isti interfejs za njih?
Krajem marta, modul prodaje je ažuriran na najnoviju verziju, a obećavali su i proizvoljne posjede za narudžbe. Postoji li zaista novi, treći interfejs za rad sa proširenim svojstvima entiteta?

Bitrix24

Ovo je generalno posebna tema za diskusiju. Zbog ovog sistema često nastaje zabuna. Postoje 2 opcije za B24 - SaaS i Standlone. Postoji tržište za B24, ali sadrži aplikacije samo za SaaS verziju! Ako imate verziju u kutiji, kupljenu za 200 hiljada, nećete moći da instalirate tako popularne aplikacije kao što je dizajner dokumenata, a uopšte nećete moći da instalirate nijednu aplikaciju sa tržišta za Bitrix24 na svoj Bitrix24. Ovo je takav paradoks.
Umjesto toga, tržište iz obične verzije će biti dostupno na vašem Bitrix24. Postoji mnogo više rješenja, ali su koncentrisana uglavnom oko upravljanja web stranicama, a ne B24.

Bitrix24, kako su mi rekli u odeljenju tehnička podrška, ovo je kompletan sistem. Ako ometate rad standardnih komponenti sistema, budite spremni da će se ova funkcionalnost prekinuti s narednim ažuriranjima. Bitrix neće računati na vas da finalizirate komponente portala, i to uprkos činjenici da svoje klijente službeno upućuju partnerima

Usput, modifikacija komponenti u verziji B24 u kutiji je prilično težak zadatak. Komponente koje generiraju js kod kojem pristupa, koristeći ajax php kod, koji generira html+js kao odgovor. Ovo je paklena mješavina u koju zaista ne želite da ronite.

Dokumentacija

Bitrix dokumentacija zaostaje za razvojem proizvoda 1-1,5 godina. Kod je veoma slabo pokriven phpDocs-om, i često je komentar ispred klase samo za prikaz, automatski se generiše u IDE-u.
Sam stil prezentacije dokumentacije u zvaničnim izvorima često je previše „slobodan“, a sadržaj nekih članaka u dokumentaciji možda nema nikakve veze sa samim Bitrixom.
Kurs za programere ima mnogo informacija, ali format u kojem se programer upoznaje sa mogućnostima sistema ne pruža nivo percepcije koji je potreban. Ako odete na Symfony Cookbook, tamo je sve izloženo, svi potrebni aspekti su opisani ovisno o verziji. Dok u Bitrixu, kurs za obuku programera sadrži, na nejasan način, strukturirane informacije o starim i novim kernelima, koje se prvo predstavljaju odvojeno, a zatim miješaju, što početnicima zadaje glavobolju.

Organizacija procesa razvoja

Zbog specifičnosti sistema, nije tako lako organizovati prikladan razvojni proces. Nije najnovija verzija Business edition (koja je bila pri ruci) nakon instalacije zauzima, razmislite, skoro 530 megabajta
$ du -s *|sort -nr|cut -f 2-|dok čita a;do du -hs $a;gotovo 523M bitrix 204K upload 64K bitrixsetup.php 56K desktop_app 20K readme.html 20K licence.html 4.0K web . config 4.0K urlrewrite.php 4.0K readme.php 4.0K licence.php 4.0K install.config 4.0K index.php
Od ovog volumena, dobra polovina su binarni programi i programi za instalaciju, koji općenito nisu potrebni za kontrolu verzija. Uopšteno govoreći, uobičajeno je da se ne verzija Bitrix jezgra. Bitrix programeri sami garantuju integritet jezgre i upravljaju zavisnostima verzija različitih modula tokom ažuriranja. Ali ovo odmah nosi barem jedan veliki nedostatak - nemoguće je implementirati potpuno funkcionalan projekat s jednim timom iz kontrole verzija, morate ga sastaviti u dijelovima: nabavite izvore kernela iz rezervne kopije Bitrixa, a izvore programera iz git-a; .
Ni sa bazom stvari ne idu dobro. Ako sami možete koristiti migracije tokom razvoja, tada Bitrix ubacuje ažuriranja u bazu podataka koristeći obične skripte koje ne možete kontrolirati. Stoga, prilikom ažuriranja, i dalje ćete morati prenositi sigurnosne kopije baze podataka sa centralnog razvojnog hosta na druge programere.
Dobri ljudi, opet, režu alate koji pomažu u organizaciji svega ovoga, ali nažalost još uvijek nije moguće natjerati Bitrix da se pridržava ovih pravila.
Zvanično, Bitrix vam omogućava da imate 2 kopije jedne distribucije. Jedan je za proizvodnju, drugi za razvoj. Ako imate nekoliko programera na jednom projektu, onda ste takoreći odmetnik) U stvari, dovoljno je da prekinete mašinu sa Bitrixom dolazne i odlazne veze sa/na www.bitrixsoft.com, a onda mogu prikovati onoliko kopija razvoja koliko želite, oni jednostavno neće moći sami da se ažuriraju.

Kolege

I poslednje pitanje koje bih želeo da se dotaknem.
Zbog činjenice da Bitrix ima nisku barijeru za ulazak, među kompanijama koje pružaju usluge na ovom tržištu ima dosta nekvalifikovanog osoblja. Video sam mnogo različitih projekata tokom svoje karijere (ukupno više od sto) završenih na 1C-Bitrixu. Sa sigurnošću mogu reći da je 95% njih urađeno nasumično. Vrlo rijetko smo nailazili na projekte čijem se razvoju pristupalo sa smislom za svrhu, ali to su bili samo neki. Ovo je sve veoma tužno.

zaključci

Naravno, svi nedostaci se ne mogu sagledati u jednom članku. Svakog dana nailazite na neke sitnice koje vam svakodnevno ometaju posao. Ali jednostavno je nemoguće razmotriti sve takve sitnice, a vjerovatno i nema potrebe.

Kakvi se zaključci ovdje mogu izvući? Bitrix je izuzetno složen sistem zbog činjenice da ima loše osmišljenu arhitekturu i mnoge nedostatke koji nastavljaju da žive u proizvodu dugo vremena. S druge strane, Bitrix je dovoljan jednostavan sistem, što zahtijeva mnogo niži nivo kvalifikacija za početak, za razliku od okvira.
Podržavanje ovog proizvoda je veoma nezahvalan zadatak u poređenju sa proizvodima kao što su Symfony, Laravel, Yii. Proizvod zaista voli da stavlja žbicu u kotače i neiskusnih i iskusnih programera, što se, zauzvrat, može odraziti na cijenu usluga iskusnih Bitrix programera.

Da li žalim što sam proveo toliko vremena radeći sa ovim sistemom? Radije da nego ne. Bilo bi mudrije potrošiti ovo vrijeme proučavajući nešto ispravnije i logičnije (što sada aktivno pokušavam). Ali slučajno se dogodilo da na početku mog putovanja nije bilo nikoga da me uputi u pravom smjeru.

Ako ste početnik PHP programer, onda biste radije proučavali okvire kao što su Symfony, Laravel, Yii, ZendFramework nego Bitrix. Vjerujte mi, to će se više nego isplatiti u budućnosti. Nakon što ste savladali bilo koji od ovih okvira, neće vam biti teško da u budućnosti razvijete nešto za Bitrix. Ako nemate izbora, onda proučite Bitrix, ali u slobodno vrijeme je bolje da ipak pokušate da uronite u svijet okvira kako biste postavili svoj mozak na mjesto.

Ako ste programer s iskustvom u Bitrixu, ali bez iskustva u drugim okvirima, onda svakako uronite u drugi svijet otkrit ćete puno novih i korisnih znanja koja će vam pomoći da napišete mnogo bolja rješenja za 1C-Bitrix. Pokušajte koristiti rješenja iz drugih okvira u svojim projektima, srećom to nije teško učiniti zahvaljujući komponentnom pristupu potonjeg i kompozitora.

Ako ste kupac, onda ne vjerujte Bitrix trgovcima. Ništa neće biti tako lako kao što kažu u Bitrix prezentacijama. I nemojte kriviti svoje programere za ovo, oni nemaju nikakve veze s tim. Ako želite da napravite veliku i složenu internet prodavnicu nivoa Eldorado/Mvideo/Sportmaster, onda Bitrix možda nije najbolji izbor.

UPD. Jasno je da su članak pročitali zaposlenici Bitrixa. U dijelu o marketingu napisao sam da se u dijelu Arhitektura kursa za programere Bitrixa pišu marketinški pozivi. Sada ih nema. Čak su i zapečatili, očigledno im se žurilo.

Hvala na zapažanju i oštrom oku :)

Tagovi:

  • 1s-bitrix
  • cms
  • web development
  • drvena soba
  • hatebitrix
  • cvili na čvorištu
  • Saberi se
Dodaj oznake

). Svaka oznaka (odjeljak) mora imati par (/odjeljak). Obavezni parametri su ime I petlja. Naziv ciklusa (sekcije) može biti bilo šta što se sastoji od slova, brojeva i donjih crta. Ciklusi (odjeljak) mogu biti ugniježđene i imena ugniježđenih sekcija moraju biti jedinstvena jedna za drugu. Varijabilna petlja(obično niz vrijednosti) određuje broj iteracija petlje. Kada ispisujete varijable unutar odjeljka, ime odjeljka mora biti navedeno pored imena varijable unutar uglastih zagrada. (drugi odjeljak) se izvršava ako je parametar petlja ne sadrži vrijednosti.

Ime atributa Tip Obavezno Default Opis
ime string Da N / A Naziv sekcije
petlja mješovito Da N / A Vrijednost koja specificira broj iteracija petlje.
start cijeli broj br 0 Indeks pozicije na kojoj će petlja početi. Ako je vrijednost negativna, tada se početna pozicija računa od kraja niza. Na primjer, ako varijabla petlje ima 7 elemenata i vrijednost startnog atributa je -2, tada će početni indeks biti 5. Nevažeće vrijednosti (vrijednosti izvan niza) se automatski skraćuju na najbližu važeću vrijednost.
korak cijeli broj br 1 Vrijednost koraka koja se koristi za prelazak niza. Na primjer, korak=2 označava obilazak niza elementima 0,2,4... Ako je korak negativan, niz će se preći u suprotnom smjeru.
max cijeli broj br 1 Maksimalan broj iteracija petlje.
show boolean br istinito Označava hoće li se prikazati ovaj odjeljak ili ne

Bilješka

Počevši od Smartyja 1.5.0, sintaksa varijable svojstva sesije je promijenjena iz (%sectionname.varname%) u ($smarty.section.sectionname.varname). Stara sintaksa je i dalje podržana, ali ćete vidjeti samo primjere nove sintakse.

index se koristi za prikaz trenutnog indeksa niza, počevši od nule (ili startnog atributa ako je naveden) i povećavajući se za jedan (ili vrijednost atributa koraka ako je naveden).

Tehnička napomena

Ako atributi korak i početak nisu specificirani, onda je indeks isti kao atribut sekcije iteracije, osim što počinje od 0, a ne od 1.

iteracija se koristi za prikaz trenutnog broja iteracije petlje.

Bilješka

Ova vrijednost je neovisna o svojstvima start, step i max, za razliku od svojstva indeksa. Također, iteracije počinju od jedan, a ne od nule kao indeksi. rownum je sinonim za svojstvo iteracije, oni rade isto.

Primjer 7.38. iteracija svojstva (sekcije).

dodijeliti("custid",$id); ?> (ime sekcije=cu loop=$custid start=5 korak=2) iteracija=($smarty.section.cu.iteration) index=($smarty.section.cu.index) id=($custid)
(/odjeljak)

Rezultat pokretanja ovog primjera:

Iteracija=1 indeks=5 id=3005
iteracija=2 index=7 id=3007
iteracija=3 index=9 id=3009
iteracija=4 indeks=11 id=3011
iteracija=5 index=13 id=3013
iteracija=6 index=15 id=3015

Ovaj primjer koristi svojstvo iteracije za štampanje zaglavlja tabele na svakih pet redova (koristeći (if) sa mod operatorom).

(ime odjeljka=co petlja=$kontakti) (ako je $smarty.section.co.iteration % 5 == 1) (/ako) (/odjeljak)
Ime>DomCellEmail
pogled ($contacts.name) ($contacts.home) ($contacts.cell) ($contacts.email)