Menu
Jest wolny
rejestracja
Dom  /  Internet/ Sekcja bezgłowa php. Wyznanie nienawidzącego Bitrix

Sekcja bezgłowa php. Wyznanie nienawidzącego Bitrix

Szablony Bitrix można podzielić na kilka typów:
  • Wspólne i złożone szablony komponentów 2.0
  • Szablony stron internetowych
  • Inne szablony encji ( przesyłki pocztowe, wydania biuletynów, formularze internetowe, generatory eksportu i wiele więcej)

Szablony komponentów mają nawet możliwość korzystania z silników szablonów. W zasadzie można podłączyć dowolny silnik szablonów, ale po wyjęciu z pudełka nie narzędzia pomocnicze nie. Jeśli ktoś tego potrzebuje, mam kilka linków do przedłużek do gałązek i ostrza, które działają i są dość używane w produkcji. Ale nawet tutaj Bitrixoidy uległy wypaczeniu. Silnik szablonowania może być używany tylko z komponentami. Nie będzie działać połączenie silnika szablonów z rendererem szablonu witryny lub innymi jednostkami, ponieważ nie ma tam renderera.

W szablonach komponentów jest jeszcze jeden irytujący moment z ich umieszczeniem. Komponent jest połączony prostą konstrukcją
$ APPLICATION-> IncludeComponent ("bitrix: katalog.sekcja", "nazwa_szablonu");
Drugim parametrem jest nazwa szablonu komponentu. Więc w zależności od różne warunki, lokalizacja tego szablonu może znajdować się w najbardziej nieoczekiwanych miejscach:

  • bitrix / komponenty / bitrix / katalog.sekcja / szablony / nazwa_szablonu
  • lokalne / komponenty / bitrix / katalog.sekcja / szablony / nazwa_szablonu
  • bitrix / szablony / .default / komponenty / bitrix / katalog.sekcja / nazwa_szablonu
  • bitrix / szablony / szablon_strony / komponenty / bitrix / katalog.sekcja / nazwa_szablonu
  • lokalny / szablony / .default / komponenty / bitrix / katalog.sekcja / nazwa_szablonu
  • lokalny / szablony / szablon_strony / komponenty / bitrix / katalog.sekcja / nazwa_szablonu
  • bitrix / komponenty / bitrix / katalog / szablony / .default / bitrix / katalog.sekcja / nazwa_szablonu
  • lokalne / szablony / szablon_strony / komponenty / bitrix / katalog / .default / bitrix / katalog.sekcja / nazwa_szablonu
I nie wymieniłem wszystkich opcji...

Szablon strony można przeglądać jako zestaw plików: header.php, footer.php (tak, strona musi je mieć), opis.php ( opis systemu szablon witryny), template_styles.css (style szablonów witryny), katalog z szablonami komponentów i kilkoma mniej istotnymi plikami. I to wszystko. I nie wpływaj na to w żaden sposób, nic z tym nie rób. Nie można pobrać silnika szablonów.

Nie ma nic do powiedzenia o innych szablonach. Są albo po prostu przechowywane w bazie danych w postaci layoutu z uwzględnieniem pewnych „zmiennych” danych, albo jest to głupie plik php, który wykonuje całą pracę, od pobierania parametrów z bazy danych po wyświetlanie informacji. Na przykład możesz spojrzeć na generator plików YML dla rynku. Nie ma sensu go tutaj umieszczać, po prostu dlatego, że jest wystarczająco duży, około 2k linii. Ktokolwiek tego potrzebuje, wygoogluje go, leży w /bitrix/modules/catalog/load/yandex_run.php

Natura pliku

Jak stało się jasne powyżej, w architekturze Bitrix wszystko nie jest zbyt dobre. Ale Bitrix ma jeszcze jeden ważny aspekt architektury.
Bitrix to pół pliku CMS. Wiele rzeczy jest kontrolowanych przez pewnego rodzaju pliki:

  • Potrzebujesz strony - utwórz plik
  • Potrzebujesz zestawu stron - utwórz plik i podłącz komponent, który współpracuje z infoblockami
  • Musisz ustawić tytuł strony - edytuj plik
  • Musisz ustawić tytuł dla wszystkich stron sekcji - utwórz specjalny plik.section.php w katalogu głównym tej sekcji
  • Musisz edytować prawa - edytuj plik.access.php
  • Ustawienia przed inicjalizacją systemu - w plikach dbconn.php, .settings.php i .settings_extra.php
  • wynik_modyfikator.php, component_epilog.php, init.php, .parameters.php, .description.php ....

W Bitrixie jest wiele takich specjalnych plików. Z jednej strony daje to pewną elastyczność podczas pracy z systemem. Z drugiej strony może to przerodzić się w agonię zarówno dla dewelopera, jak i kierownika budowy. Pliki stron czasami zamieniają się w bałagan w kodzie php, układzie i komponentach wtyczek. W rezultacie edytor wizualny może niepoprawnie przeanalizować ten plik, a podczas edycji może go łatwo wyświetlić tagi php w niektórych miejscach, co doprowadzi do niedziałania strony. Mówisz - nie musisz pisać kodu php w takich plikach? Tak, wiem. Ale Bitrix bardzo często i nie ma alternatywy, zmusza cię do tego.
A w głowie trzeba stale przechowywać informacje o tym, jakie to pliki i jakie dane mogą zawierać. Różne pliki powinny zawierać różne dane o różnej strukturze i należy o tym pamiętać przy każdej opcji. Ciężko jest szukać go za każdym razem w dokumentacji.

W dodatku do powyższego

Możesz bez końca narzekać na to, jak źle wszystko jest ułożone w Bitrix. Moim zdaniem wszystkie te narzekania można scharakteryzować jednym zdaniem – „jakoś nie do końca”. I rzeczywiście, jeśli nagle Bitrixoidy ogłoszą jakąś funkcję, to jakoś nie wydadzą jej całkowicie, nie kończą, nie przywodzą na myśl. Jest wiele przykładów:

  • zaimplementowany ORM - nie ukończyłeś go, nie możesz go w pełni wykorzystać
  • zrobiłem autoloader, działa tylko w modułach, a nie według standardów
  • umożliwiło podłączenie silnika szablonów, ale nie można go używać wszędzie i nie do końca
  • itp. itp.

W skrócie postaram się scharakteryzować resztę problemów, z którymi musimy się mierzyć na co dzień.

Panel administratora

Jeśli ktoś pracował z panelem administracyjnym, stworzył swoje strony w części administracyjnej tak, jak sugeruje Bitrix, zrozumie mnie. To po prostu piekło. Dla tych, którzy nie wiedzą, Bitrix sugeruje użycie pliku z makaronem dla każdej strony. Na przykład strona do szczegółowego przeglądania zamówień w panelu administracyjnym wykonywana przez programistów Bitrix zajmuje ponad 4k linii. Moje IDE zaczyna zwalniać podczas przeglądania zawartości tego pliku. Masz php, js i html. Cóż, przynajmniej pozbyliśmy się SQL, chociaż jestem pewien, że jest na innych stronach administracyjnych.
Nie jest jasne, co uniemożliwiło stronom administracyjnym pracę z tymi samymi komponentami. Po prostu nie ma możliwości dostosowania większości stron administracyjnych. W przypadku komponentów można to zrobić w mgnieniu oka.
Przy okazji życzliwi ludzie stworzyli moduł, który pomoże Ci w budowaniu stron administracyjnych.

js framework

Bitrix ma komponent js, który działa jako rodzaj frameworka klienta. Żaden z deweloperów tego nie lubi z kilku powodów:
  • to jest prawie nieudokumentowane
  • on jest potworny
  • w dużej mierze powiela znane wielu jquery

Bitrix używa go bardzo często w swoich komponentach, powodując tym samym jeszcze większy gniew wśród programistów. Rdzeń tej biblioteki w formie zminimalizowanej to 85kb, co jest bardzo duże. Nie będziesz w stanie uniknąć połączenia, jeśli chcesz wykorzystać wszystkie możliwości Bitrix (kompozyt, zarządzanie aktywami).

Kopiuj-wklej duch

Ostatnio coraz mniej, ale wciąż dość często Bitrix robi coś do kopiowania i wklejania. Jeśli chcesz zmodyfikować działanie komponentu - kopiuj-wklej. Jeśli chcesz stworzyć własny szablon rozładunku, skopiuj kopię systemową i zakończ. Jeśli chcesz zrobić prawie ten sam szablon, który masz - skopiuj i wklej i zmień go trochę. Mówi się o tym nawet w kursach dla początkujących programistów. Brak mi słów.

Zarządzanie aktywami i CDN

Bardzo podoba mi się sposób zarządzania zasobami w Bitrix. W zasadzie istnieje możliwość zarejestrowania zestawu określonych „bibliotek”. Każda biblioteka to zestaw plików css/js, który może zależeć od innych bibliotek. Jeśli podłączysz bibliotekę do strony, to przed jej podłączeniem wszystkie zależności zostaną rozwiązane i wszystkie zależne biblioteki zostaną wstawione na stronę. Wszystko wydaje się być w porządku, tylko każdy zasób zostanie wstawiony do formularza oddzielny plik do skryptu lub tagu linku. I dzięki temu są strony, które mają 30-50 skryptów i tyle samo podłączonych plików stylów.
Gówniane pytanie, powiedzieli w Bitrixie i wykonali magiczny tik, który łączy wszystkie te pliki w jeden. I były strony, na których zamiast 50 skryptów były 2, każdy po 300-500 kb. Jakiś czas temu to scalenie działało z błędami i kilkakrotnie łączyło te same zasoby, ale teraz wydaje się, że zostało to naprawione.
A potem wyszły Bitrixoidy - umożliwiły przesłanie wszystkich zasobów na serwer CDN. Który na zawsze odpada ...
Potem przyszedł Google Pagespeed Insights, który zalecał upuszczenie wszystkich zasobów na dół strony. A w Bitrixie ponownie zrobili magiczny tik, który głupio pomija wszystkie zasoby w ciele, jeśli nie są oznaczone specjalnym atrybutem.
Wraz z pudełkiem dystrybuują również zminimalizowane wersje swoich skryptów, które są połączone za pomocą innego magicznego pola wyboru w panelu administracyjnym.
Ogólnie rzecz biorąc, nie ma dla ciebie scss, nie ma TypeScriptu. Jeśli chcesz właściwie zarządzać zasobami - nie korzystaj z wbudowanego systemu Bitrix, skorzystaj z webpacka, z którym możesz łatwo zaprzyjaźnić się z Bitrixem.

Wielostronny / wielojęzyczny

Jest to prawdopodobnie najgorszy ból głowy deweloperów, jaki miał miejsce od momentu powstania produktu. Nie możesz po prostu wziąć tego i stworzyć wielojęzyczną stronę internetową. A jeśli potrzebujesz wielojęzycznego katalogu z różnymi cenami i walutami, to zamienia się on w mąkę, za którą również trzeba zapłacić sporą sumę (trzeba rozwidleć, aby kupić dodatkową licencję na kolejną wersję językową strony) .
Jeśli tworzysz wielojęzyczną i wielowalutową witrynę, przygotuj się na to, że Bitrix będzie się temu bardzo agresywnie opierać. Ustawienia wielu witryn są zdecentralizowane w całym obszarze administracyjnym. Każdy podmiot w panelu administracyjnym ma swoją zależność od wersji językowej serwisu. Niektóre encje mogą w ogóle nie obsługiwać zależności witryny/języka, a niektóre mają tylko jednoznaczne powiązanie z językiem, więc będziesz musiał zduplikować tę encję, a następnie ją obsługiwać.
W wersji podstawowej, aby infoblok działał w kilku językach, będziesz musiał stworzyć duplikat tego infobloku. Ale w praktyce nikt tego nie robi i próbuje wymyślić własne sposoby przechowywania jednej jednostki centralnie, rozprzestrzeniając jej zależne od języka atrybuty do innych pamięci.
Nie można ustawić domyślnego języka lokalizacji. Jeśli masz zmienną językową, która opisuje frazę w języku rosyjskim, a ta zmienna językowa nie jest w języku angielskim, wówczas na stronie w języku angielskim zostanie wyświetlony pusty ciąg i nie będziesz mieć na to żadnego wpływu (w wielu przypadkach możesz pozostawić rosyjska fraza, aby nie było pustek).

Mechanizm zarządzania prawami

Jesteśmy bardzo podstępni z tym podsystemem. Często trudno jest zrozumieć, dlaczego przyznałeś prawa do przeglądania podmiotu, ale użytkownik nie może z nich korzystać. Na przykład, aby nadać prawo do edycji infobloku, musisz przyznać dostęp do katalogu /bitrix/admin, nadać prawa do konkretnego infobloku i nadać prawa w głównym module. Należy wykonać zbyt wiele operacji, aby nadać uprawnienia jednej jednostce. A jeśli nie ma wystarczających praw, to bez grzebania w kodzie źródłowym nie będziesz w stanie zrozumieć, dlaczego.

Konfiguracja

Bitrix nie ma scentralizowanego koncentratora, który pozwalałby na zarządzanie ustawieniami systemu. Ustawienia są ponownie zdecentralizowane w całym systemie. Opcje dostępne są w ustawieniach modułu, w ustawieniach komponentów, w COption (nie są przenoszone do panelu administracyjnego). W panelu administracyjnym opcje jednego modułu można podzielić na 3-4 różne strony, które znajdują się w zupełnie innych miejscach. urlrewrite można edytować za pomocą panelu administracyjnego! Teraz także .settings i.settings_extra. Czasami jest zupełnie niejasne, które z nich mają wyższy priorytet, bardzo często nie ma wystarczającego wyjaśnienia opcji, relacja nie jest jasna. Nie ma natywnego sposobu udostępniania konfiguracji między programistami.
Ustawienia mogą być bardzo nielogiczne. Czasem dochodzi do absurdu… spójrz na komponent bigdata – czy nieprzygotowana osoba potrafi go dostosować?

Integracja z 1C

Jest to pozycja na liście funkcji Bitrix, którą dzioba dość duża liczba klientów. Bitrix obiecuje skonfigurować dwukierunkową integrację witryny z 1C za pomocą 2 kliknięć, która natychmiast dostarczy treści i dokumenty z jednego systemu do drugiego.
Tak, naprawdę jest, ale z kilkoma zastrzeżeniami.
Po pierwsze, aby wykonać integrację po wyjęciu z pudełka bez dodatkowych wysiłków, musisz zrobić wszystko dokładnie tak, jak jest napisane w dokumentacji Bitrix - zbuduj katalog na stronie zgodnie z zasadami, które oferuje Bitrix i zbuduj katalog w 1C, który Bitrix wymaga. Najlepiej stwórz wszystko od podstaw, a wtedy może wszystko zadziała po wyjęciu z pudełka.
Po drugie, Bitrix nie jest przyjazny dla wszystkich konfiguracji 1C po wyjęciu z pudełka. Warto przeczytać wcześniej
Po trzecie, nie ma idealnego świata. Zwykle klient, który chce mieć stronę internetową, ma już firmę detaliczną, co oznacza, że ​​ma już 1C, czyli ogromny kosz na śmieci. I te śmieci można wyrzucić na stronę. Aby strona nie dostała tego samego kosza na śmieci, konieczne jest znaczne zmodyfikowanie mechanizmu wymiany.
Bardzo często wymagania klienta mocno odbiegają od wizji produktu, którą stworzył zespół Bitrix, a wtedy modyfikacja mechanizmu wymiany może być dość kosztowna, pod względem pracochłonności porównywalna z opracowaniem unikalnego modułu wymiany dla konkretny przypadek.
Dlatego nie ma potrzeby łudzenia się, że będziesz w stanie łatwo zintegrować witrynę z 1C. To wszystkie intrygi marketerów.

Odrębnym tematem jest też usprawnienie wymiany z 1C. Za organizację wymiany katalogu odpowiada klasa \CIBlockCMLImport - 5.7k linii. Jedna z głównych metod, która najczęściej wymaga rozszerzenia - \CIBlockCMLImport :: ImportElement, zawiera ponad 1k linii. Wystarczy odziedziczyć go raz, zaktualizować produkt kilka razy przez długi czas, a za pomocą 1C można uzyskać niedziałającą wymianę. Dlatego programiści często nie wchodzą w tę klasę i próbują jakoś dostać się do procesu importu za pomocą programów obsługi zdarzeń. Praca z obsługą zdarzeń w Bitrixie, zwłaszcza w module infoblock, również nie jest przyjemnym doświadczeniem, choćby ze względu na to, że zdarzenia tego samego typu nie są ułożone jednolicie, a niektóre zdarzenia po prostu nie wystarczają.
Ogólnie ta sytuacja jest tak samo smutna jak poprzednio.

Niezgodność

Czasami wydaje mi się, że twórcy różnych modułów tak naprawdę nie komunikują się ze sobą. Studiując kod źródłowy jądra, można natknąć się na bardzo niejednorodne rozwiązania, które mogłyby być wykonywane na tym samym silniku, ale z jakiegoś powodu są implementowane na różne sposoby.
Na przykład możesz wziąć właściwości elementów infobloków i UserFields. Zarówno jedna, jak i druga encja w rzeczywistości jest dodatkowym polem dla innej encji. Ma rodzaj, znaczenie i opis. Wartość jest przechowywana w oddzielnej tabeli (tabeli) bazy danych, mają one z grubsza podobny interfejs dostępu do danych. Dlaczego więc nie zrobić tego samego interfejsu?
Pod koniec marca moduł sprzedaży został zaktualizowany do Ostatnia wersja, a tam też obiecywali arbitralne nieruchomości pod zamówienia. Czy jest teraz nowy, trzeci interfejs do pracy z rozszerzonymi właściwościami encji?

Bitrix24

Jest to na ogół osobny temat do rozmowy. Na podstawie tego systemu często powstaje zamieszanie. Istnieją 2 wersje B24 - SaaS i Standlone. Istnieje marketplace dla B24, ale zawiera on tylko aplikacje dla wersji SaaS! Jeśli masz wersję pudełkową zakupioną za 200 sztuk, nie będziesz w stanie zainstalować tak popularnych aplikacji, jak narzędzie do tworzenia dokumentów, i ogólnie nie będziesz w stanie zainstalować żadnej aplikacji z marketplace Bitrix24 na swoim Bitrix24. Oto paradoks.
Zamiast tego w Twoim Bitrix24 będzie dostępny rynek ze zwykłej wersji. Istnieje wiele innych rozwiązań, ale koncentrują się one głównie na zarządzaniu witryną, a nie na B24.

Bitrix24, jak mi powiedziano na oddziale pomoc techniczna, jest to kompletny system. Jeśli ingerujesz w pracę standardowych komponentów systemu, to bądź przygotowany, że ta funkcjonalność zerwie się z kolejnymi aktualizacjami. Bitrix nie liczy na to, że sfinalizujesz komponenty portalu, mimo że oficjalnie wysyłają swoich klientów do partnerów

Przy okazji, aby dopracować komponenty w wersja pudełkowa B24 to kolejny problem. Komponenty generujące kod js, który z używając ajax apeluje do kod php który w odpowiedzi generuje html + js. To piekielna mieszanka, w którą naprawdę nie chcesz się zanurzać.

Dokumentacja

Dokumentacja Bitrix pozostaje w tyle za rozwojem produktu o 1-1,5 roku. Kod jest bardzo słabo objęty przez phpDoc, a często komentarz przed klasą jest tylko „do pokazu”, automatycznie generowany w IDE.
Sam styl prezentacji dokumentacji w oficjalnych źródłach jest często zbyt „wolny”, a treść niektórych artykułów w dokumentacji może nie mieć nic wspólnego z samym Bitrixem.
Kurs programisty zawiera wiele informacji, ale format, w jakim programista jest zapoznawany z możliwościami systemu, nie zapewnia wymaganego poziomu percepcji. Jeśli przejdziesz do książki kucharskiej Symfony, to wszystko jest rozłożone na półkach, wszystkie niezbędne aspekty są opisane w zależności od wersji. Natomiast w Bitrixie kurs szkoleniowy dla programistów zawiera, zgodnie z jaką zasadą, ustrukturyzowane informacje na temat starych i nowych rdzeni, które najpierw podaje się osobno, a następnie miesza, od czego początkujący mają ból głowy.

Organizacja procesu rozwoju

Ze względu na specyfikę systemu nie jest łatwo zorganizować wygodny proces rozwoju. Nie najbardziej świeża wersja edycja Business (która była pod ręką) po instalacji zajmuje, pomyśl o tym, prawie 530 megabajtów
$ du -s * | sort -nr | cut -f 2- | podczas odczytu a; do du -hs $ a; done 523M bitrix 204K upload 64K bitrixsetup.php 56K desktop_app 20K readme.html 20K license.html 4.0K web . config 4.0K urlrewrite.php 4.0K readme.php 4.0K license.php 4.0K install.config 4.0K index.php
Dobra połowa tego wolumenu to pliki binarne i instalatory, które na ogół nie są potrzebne do kontroli wersji. Ogólnie rzecz biorąc, zwyczajowo nie należy wersjonować jądra bitrix. Deweloperzy Bitrix niejako gwarantują integralność samego jądra, zarządzają zależnościami wersji różnych modułów podczas aktualizacji. Ale to od razu ma co najmniej jedną dużą wadę - nie da się wdrożyć w pełni działającego projektu za pomocą jednego polecenia z kontroli wersji, trzeba go złożyć na części: pobierz źródło jądra z kopii zapasowej bitrix, a źródło programistów z git .
Baza też nie jest w porządku. Jeśli sam możesz używać migracji podczas programowania, Bitrix wprowadza aktualizacje do bazy danych za pomocą zwykłych skryptów, których nie możesz kontrolować. Dlatego podczas aktualizacji nadal będziesz musiał przenosić kopie zapasowe bazy danych z centralnego hosta programistycznego do innych programistów.
Mili ludzie ponownie zobaczyli narzędzia, które pomagają to wszystko zorganizować, ale niestety nadal nie można zmusić Bitrix do przestrzegania tych zasad.
Oficjalnie Bitrix pozwala na posiadanie 2 kopii jednego zestawu dystrybucyjnego. Jedna jest do produkcji, druga do rozwoju. Jeśli masz kilku programistów w jednym projekcie, to jesteś jakby poza prawem) Właściwie wystarczy odciąć połączenia przychodzące i wychodzące z / do www.bitrixsoft.com dla maszyny Bitrix, a potem ty mogą nitować dowolną liczbę kopii rozwoju, po prostu nie będą w stanie samodzielnie aktualizować.

Koledzy

ORAZ ostatnie pytanie którego chciałbym dotknąć.
Ze względu na fakt, że Bitrix ma niski próg wejścia, wśród firm świadczących usługi na tym rynku jest dużo niewykwalifikowanego personelu. W swojej karierze zdarzyło mi się zobaczyć wiele różnych projektów (w sumie ponad sto), zrealizowanych na 1C-Bitrix. Mogę śmiało powiedzieć, że 95% z nich zostało popełnionych w „pogawędce”. Bardzo rzadko zdarzały się projekty, do których rozwoju wyczuwało się podejście, ale było to tylko kilka. To wszystko jest bardzo smutne.

wnioski

Oczywiście nie można wziąć pod uwagę wszystkich wad w jednym artykule. Codziennie natrafiasz na drobiazgi, które codziennie przeszkadzają Ci w pracy. Ale po prostu niemożliwe jest rozważenie wszystkich takich drobiazgów i prawdopodobnie nic.

Jakie wnioski można tu wyciągnąć. Bitrix jest systemem niezwykle złożonym ze względu na to, że ma nieprzemyślaną architekturę, wiele wad, które tkwią w produkcie jeszcze przez długi czas. Z drugiej strony Bitrix to dość prosty system, który wymaga znacznie niższego poziomu umiejętności, aby rozpocząć, w przeciwieństwie do frameworków.
Wspieranie tego produktu jest bardzo niewdzięcznym zadaniem w porównaniu do produktów takich jak Symfony, Laravel, Yii. Produkt bardzo lubi wkładać szprychy zarówno niedoświadczonym, jak i doświadczonym programistom, co z kolei może wpłynąć na koszt usług doświadczonych programistów dla Bitrix.

Czy żałuję, że poświęciłem tyle czasu na pracę z tym systemem? Raczej tak niż nie. Mądrzej byłoby spędzić ten czas na nauce czegoś bardziej poprawnego i logicznego (co staram się teraz aktywnie robić). Ale tak się złożyło, że na początku mojej podróży nie było nikogo, kto pokierowałby mnie właściwą drogą.

Jeśli jesteś początkującym programistą php, Bitrix wolałby takie frameworki do nauki, jak Symfony, Laravel, Yii, ZendFramework. Uwierz mi, w przyszłości opłaci się to odsetkami. Po opanowaniu któregokolwiek z tych frameworków nie będzie ci trudno opracować coś dla Bitrix w przyszłości. Jeśli nie masz wyboru, przestudiuj Bitrix, ale w wolnym czasie lepiej spróbować zanurzyć się w świecie frameworków, aby umieścić swój mózg na miejscu.

Jeśli jesteś programistą z doświadczeniem w Bitrix, ale bez doświadczenia w innych frameworkach, to koniecznie zanurz się w inny świat, odkryjesz wiele nowej i przydatnej wiedzy, która pomoże ci w pisaniu znacznie lepszych rozwiązań dla 1C-Bitrix. Staraj się wykorzystywać w swoich projektach rozwiązania z innych frameworków, ponieważ nie jest to trudne dzięki komponentowemu podejściu tego ostatniego i kompozytora.

Jeśli jesteś klientem, nie ufaj marketerom Bitrix. Nic nie będzie tak proste, jak mówią w prezentacjach Bitrix. I nie obwiniaj swoich programistów, nie mają z tym nic wspólnego. Jeśli chcesz stworzyć duży i złożony sklep internetowy na poziomie eldorado / mvideo / sportmaster, być może Bitrix nie będzie najlepszym wyborem.

UPD. Widać, że artykuł został przeczytany przez pracowników Bitrix. W sekcji o marketingu napisałem, że rozmowy marketingowe zostały napisane w sekcji Architektura kursu programisty Bitrix. Teraz ich tam nie ma. Nawet się zapieczętowali, najwyraźniej spieszyli się.

Dziękuję za obserwację i bystre oko :)

Tagi:

  • 1c-bitriks
  • cms
  • tworzenie stron internetowych
  • Rupieciarnia
  • nienawiść
  • narzekania na habr
  • Weź się w garść
Dodaj tagi

Artykuł eksplorujący element sekcji HTML z kategorii sekcji.

Cel elementu sekcji

Element section służy do tworzenia sekcji w dokumencie, która grupuje ze sobą niektóre treści tematyczne. Dla każdej sekcji w dokumencie należy wskazać jej nazwę (temat). Odbywa się to zwykle za pomocą nagłówków (elementy h1-h6).

Podtytuł

Treść sekcji...

Elementy przekroju są powszechnie używane w następujących sytuacjach:

  • aby oznaczyć sekcje w sekcji. Na przykład, aby oznaczyć rozdziały w artykule, zakładki w oknie dialogowym, sekcje w rozprawie itp.
  • zgrupować kilka sekcji w jedną grupę tematyczną. Na przykład do grupowania najnowsze wiadomości na stronie, komentarze do artykułu itp.

W związku z tym element section powinien być używany dla niektórych treści tylko wtedy, gdy ma nagłówek i jest częścią czegoś innego.

Korzystanie z elementu sekcji

Rozważmy na przykład fragment kodu strony, który zawiera artykuł z komentarzami. Każdy z komentarzy zamieszczonych przez użytkownika na stronie zawiera pełną treść i dlatego może być uważany za element artykułu. Ale jednocześnie wszystkie komentarze reprezentują pewną grupę tematyczną i dlatego można je umieścić w elemencie sekcji, tj. dany element zgrupuje wszystkie te komentarze na stronie.

Tytuł artykułu

Komentarze (1)

Nagłówek komentarza

Tekst komentarza...

Nagłówek komentarza

Tekst komentarza...

Tytuł artykułu Komentarze Komentarz Tytuł Komentarz Tytuł

Rozważ na przykład użycie elementów sekcji do tworzenia sekcji w elemencie artykułu:

Tytuł książki

Pierwszy rozdział

Rozdział drugi

Rozdział trzeci

załącznik A

Załącznik B

Powyższy przykład będzie miał następujący zarys:

Tytuł książki Rozdział pierwszy Rozdział drugi Rozdział trzeci Dodatek A Dodatek B

Ograniczenia korzystania z elementu przekroju

Element section w HTML 5 nie jest ogólnym elementem do grupowania treści, tj. nie należy go używać do owijania treści, które lubisz. Jego głównym celem jest dodanie semantyki do dokumentu i stworzenie jego konspektu.

Kiedy autor musi pogrupować treść tylko po to, aby nadać jej styl lub manipulować nią w JavaScript, najlepszym miejscem jest użycie elementu div. Element div, w przeciwieństwie do elementu section, nie dodaje semantyki do dokumentu i nie uczestniczy w tworzeniu jego konspektu (konspektu).

Różnica między elementami sekcji i artykułu

Elementy sekcji i artykułu, choć na pierwszy rzut oka wydają się bardzo podobne, mają różne znaczenia semantyczne. Element artykułu jest przeznaczony do grupowania treści, która jest kompletna, samodzielna i może być przeglądana oddzielnie od pozostałej treści strony. A element section ma inne znaczenie semantyczne, ma na celu grupowanie treści, które są integralną częścią czegoś innego.

Ale skąd autor może wiedzieć, co to jest treść na stronie? Spójrzmy na to na przykładzie fragmentu artykułu. Fragment jest częścią artykułu, dlatego do pogrupowania jego treści należy użyć elementu section. Ale ten sam fragment, pozostawiony już jako komentarz, będzie reprezentował coś całościowego, kompletnego. Dlatego w tym kontekście można go pogrupować za pomocą elementu article. Ale oczywiście można rozumować i na odwrót. Dlatego to, który element należy wykorzystać do grupowania treści, w większości przypadków zależy od Twojej subiektywnej opinii jako autora. Ale najważniejsze w tym podejściu jest utrzymanie wybranej pozycji. Dlatego im bardziej autor konsekwentnie tworzy strukturę, tym więcej sensu może w nią nadać.

). Każdy tag (Sekcja) musi mieć parę (/ Sekcja)... Wymagane parametry to Nazwa oraz pętla... Nazwą pętli (sekcji) może być dowolna nazwa składająca się z liter, cyfr i podkreśleń. Cykle (Sekcja) mogą być zagnieżdżone, a zagnieżdżone nazwy (sekcje) muszą być między sobą niepowtarzalne. Zmienny pętla(zwykle tablica wartości) określa liczbę iteracji pętli. W przypadku drukowania zmiennych wewnątrz sekcji, nazwa sekcji musi być podana obok nazwy zmiennej w nawiasach kwadratowych. (sekcje) jest wykonywany, jeśli parametr pętla nie zawiera wartości.

Nazwa atrybutu Typ Obowiązkowy Domyślny Opis
Nazwa strunowy tak n / a Nazwa sekcji
pętla mieszany tak n / a Wartość określająca liczbę iteracji pętli.
początek liczba całkowita Nie 0 Indeks pozycji, w której rozpocznie się pętla. Jeśli wartość jest ujemna, pozycja początkowa jest obliczana od końca tablicy. Na przykład, jeśli zmienna pętli ma 7 elementów, a wartość atrybutu początkowego wynosi -2, to indeks początkowy będzie wynosił 5. Nieprawidłowe wartości (wartości poza tablicą) są automatycznie obcinane do najbliższej prawidłowej wartości.
krok liczba całkowita Nie 1 Wartość kroku używana do przechodzenia przez tablicę. Np. step = 2 oznacza przechodzenie tablicy o elementy 0,2,4... Jeśli krok jest ujemny, to tablica będzie przemierzana w przeciwnym kierunku.
maks liczba całkowita Nie 1 Maksymalna liczba iteracji pętli.
pokazać logiczne Nie prawda Wskazuje, czy wyświetlać tę sekcję, czy nie

Notatka

Począwszy od wersji Smarty 1.5.0, składnia zmiennych właściwości sesji została zmieniona z (% nazwasekcji.nazwa_zmiennej%) na ($ smarty.nazwasekcji.nazwasekcji.nazwa_zmiennej). Stara składnia jest nadal obsługiwana, ale zobaczysz tylko przykłady nowej składni.

index jest używany do wyświetlania bieżącego indeksu tablicy, zaczynając od zera (lub od atrybutu start, jeśli jest określony) i wzrastając o jeden (lub o wartość atrybutu step, jeśli jest określony).

Uwaga techniczna

Jeśli atrybuty step i start nie są określone, indeks jest taki sam jak atrybut sekcji iteracji, z wyjątkiem tego, że zaczyna się od 0 zamiast 1.

iteracja służy do wyświetlania bieżącego numeru iteracji pętli.

Notatka

Ta wartość jest niezależna od właściwości start, step i max, w przeciwieństwie do właściwości indeks... Ponadto iteracje zaczynają się od jedności, a nie od zera, jak indeksy. num są synonimami iteracji, działają w ten sam sposób.

Przykład 7.38. iteracja właściwości (sekcji)

przypisać ("custyd", identyfikator $); ?> (nazwa sekcji = cu loop = $ custid start = 5 step = 2) iteracja = ($ smarty.section.cu.iteration) index = ($ smarty.section.cu.index) id = ($ custid)
(/ Sekcja)

Wynik tego przykładu:

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

W tym przykładzie użyto właściwości iteracji, aby wyświetlić tytuł tabeli co pięć wierszy (używa (Jeśli) z operatorem modów).

(nazwa sekcji = pętla co = kontakty $) (jeśli $ smarty.section.co.iteration% 5 == 1) (/ Jeśli) (/ Sekcja)
Nazwa>DomKomórkaE-mail
pogląd ($ kontakty.nazwa) ($ kontakty.dom) ($ kontakty.komórka) ($ kontakty.e-mail)