Seria [artykułów] na temat rozwoju rozszerzeń Joomla 3.0: rozpocznij rozwój

  1. Krok zerowy: zrób kawę
  2. Pierwszy krok: napisz początkowy plan komponentu dla potrzebnych plików.
  3. Szczegóły komponentów
  4. Funkcje początkowe
  5. Pliki początkowe
  6. Drugi krok: zapisz pliki tabeli danych
  7. Trzeci krok: uruchom folder komponentu i utwórz plik
  8. Czwarty krok: napisz pliki instalacyjne, plik root, kontrolery i kontrolery widoku
  9. Pliki instalacyjne
  10. Plik główny (lendr.php)
  11. Kontrolery
  12. Kontrolery widoku
  13. Piąty krok: tworzenie modeli
  14. Podsumowując początek rozwoju

Aby uzyskać dobrą próbkę pracy na tę serię lekcji na temat tworzenia komponentu na Joomla 3.0, postanowiłem przejść przez proces pisania jakiegoś rozszerzenia. Ten komponent będzie [dostępny] do przeglądania i pobierania na dołączonej stronie [tych lekcji], do której będę się odwoływać w tej i przyszłych lekcjach z tej serii. Moim celem jest napisanie całkiem solidnego komponentu, który wykracza poza prosty składnik „Hello world!” iw pełni zademonstrować kluczowe punkty w rzeczywistym projekcie komponentu.

Krok zerowy: zrób kawę

Ponownie ważne jest prawidłowe rozpoczęcie dnia i projektu. Rozwijaj nawyk, pewien rytm, a kiedy już wkrótce zaczniesz pracować, przekonasz się, że twoje umiejętności kreatywności, koncentracji i pisania kodu są [gotowe]. Kiedy zaczynasz pracować, nie zaniedbuj znaczenia bycia w odpowiedniej postawie umysłowej.

Pierwszy krok: napisz początkowy plan komponentu dla potrzebnych plików.

Pierwszą rzeczą do zrobienia jest stworzenie zgrubnego przeglądu plików danych, folderów, tabel bazy danych i powiązanych z nimi pól. Dla naszego komponentu stworzymy następujący system.

Szczegóły komponentów

Nazwa: Lendr
Nazwa komponentu: com_lendr
Opis: Lendr to komponent Boostrap 3.0, który umożliwia użytkownikowi utworzenie profilu, dodanie jego książek do kolekcji biblioteki, przeglądanie bibliotek innych użytkowników, zażądanie książki do pożyczki, dodanie książek do listy pożądanych książek i zarejestrowanie się aby znaleźć się na liście oczekujących [w kolejce do] określonej książki.

Funkcje początkowe

Ten nowy komponent Lendr zapewni następujące funkcje:

  • Konta użytkowników / Profile początkowe
  • Książki / biblioteki dla użytkowników
  • Lista książek
  • Wypożycz / wypożycz dowolną książkę
  • Wniosek o pożyczkę książki
  • Lista oczekujących na wypożyczoną już książkę

Teraz musimy zapisać naszą początkową strukturę niezbędnych plików. Ta lista nie będzie kompletna i [prawdopodobnie] zostanie definitywnie zmieniona w miarę przechodzenia przez ten proces. Posiadanie pewnego wstępnego planu pomoże nam jednak zachować porządek. Oto wstępny zarys kluczowych plików potrzebnych Lendrowi.

Pliki początkowe

KontroleryModeleGatunkiTabeleInne

Lista życzeń Lista życzeń Lista życzeń Dodaj recenzję Dodaj do ulubionych Lista życzeń Recenzja Lista życzeń

Odkąd go zapisaliśmy i stworzyliśmy [taki] szorstki plan, zaczynamy tworzyć te pliki w naszej strukturze folderów.

Drugi krok: zapisz pliki tabeli danych

Zaczynamy od utworzenia plików tabel bazy danych. Przechowujemy je w folderze „tabel” z przodu naszego komponentu. Aby odświeżyć pamięć, w jaki sposób należy skonfigurować lokalne środowisko dewelopera, skontaktuj się z naszym Pierwszy artykuł z tej serii. Tworzymy każdy z plików opisanych w naszym pierwotnym planie. Oto jeden z tych plików:

/joomla_root/components/com_lendr/site/tables/book.php

php

W naszym przypadku ten plik tabeli zawiera pojedynczą funkcję „konstruuj”. Ta funkcja zapewnia konkretną nazwę tabeli związaną z tym plikiem „JTable”, a także definiuje pole klucza podstawowego w tym pliku, numer identyfikacyjny książki „book_id”.

Podczas tworzenia tych tabel bazy danych, właściwe będzie rozpoczęcie procesu tworzenia skryptu install.mysql.sql, który zostanie użyty [podczas] instalacji tego komponentu w panelu administracyjnym Joomla. Początek tego pliku jest następujący:

/joomla_root/administrator/components/com_lendr/admin/install.mysql.sql

sql

W trakcie tworzenia naszych tabel nadal będziemy dodawać do tego pliku. Dodanie tych tabel podczas ich tworzenia ułatwi proces kompilowania tego komponentu w celu instalacji.

Trzeci krok: uruchom folder komponentu i utwórz plik

Po utworzeniu tych tabel bazy danych ustawiamy strukturę plików dla całego komponentu. Poniżej znajduje się początkowa struktura folderów.

com_lendr /
admin /
kontrolery /
modele /
widoki /
index.html
install.mysql.sql
lendr.php
strona /
aktywa /
kontrolery /
pomocnicy /
język /
modele /
stoły /
widoki /
index.html
lendr.php
router.php
install.php
lendr.xml

Każdy z tych plików i folderów jest ważny, chociaż nie wszystkie są wymagane. Zaczniemy pracować z każdym z tych plików i funkcjami w nich zawartymi. Po drodze wyjaśnimy cel każdego z nich.

Czwarty krok: napisz pliki instalacyjne, plik root, kontrolery i kontrolery widoku

W tym kroku dodamy [trochę] treści do kilku plików. Najpierw spójrzmy na te pliki instalacyjne, a następnie będziemy pracować z niektórymi kontrolerami i na koniec dodamy nasze kontrolery widoku.

Pliki instalacyjne

Te pliki na poziomie root są plikami używanymi przez [system Joomla] podczas procesu instalacji [tego komponentu]. W folderze swojego komponentu znajdują się poza folderami „site” i „admin”. Jest jakiś plik XML, który jest używany do definiowania danych komponentu i wszystkich plików, menu i języków z nim związanych; istnieje również plik install.php. Ten plik install.php zawiera wiele funkcji wykonywanych podczas instalacji. Ta nazwa nie jest specyficzna, ale musi być poprawnie umieszczona w pliku XML. Nie jest konieczne włączanie tych funkcji, a nawet ich obecność nie jest konieczna, ale można ich użyć do wykonania dodatkowych czynności podczas instalacji komponentu.

Pliki demonstracyjne

lendr.xml

2 Ten pierwszy blok kodu określa informacje dla tego komponentu. Te informacje są wyświetlane w Joomla! i jest również przechowywany w tabeli tego rozszerzenia.

2 Ten blok kodu mówi Joomla! gdzie są pliki SQL tego komponentu. Jest przetwarzany przez Joomla! podczas procesu instalacji komponentu w celu utworzenia niezbędnych tabel bazy danych. Zauważ, że możesz przypisać tutaj używane kodowanie znaków i typ sterownika bazy danych.

Możesz również [dodać tutaj] blok deinstalacyjny o podobnej strukturze, aby zdefiniować dowolny plik SQL, który zostanie wykonany podczas deinstalacji.

Możesz również [dodać tutaj] blok deinstalacyjny o podobnej strukturze, aby zdefiniować dowolny plik SQL, który zostanie wykonany podczas deinstalacji

2 Ten blok definiuje katalogi, które zostaną zainstalowane z przodu witryny w Joomla! W folderze / components / z przodu komponentu. Nie trzeba wymieniać wszystkich plików, tylko katalogów i wszystkich plików z poziomu głównego. 2 Ten blok definiuje katalogi, które zostaną zainstalowane z przodu witryny w Joomla

2 Jest to plik skryptu, który definiuje zestaw funkcji wykonywanych podczas procesu instalacji. W naszym przypadku nazwaliśmy ten plik install.php.

2 Ta sekcja językowa definiuje niezbędne pliki językowe. Zostaną zainstalowane w folderze językowym w katalogu głównym Joomla! Strona z odpowiednim znacznikiem języka. Mamy tutaj dwa pliki językowe, z których jeden to plik językowy tego komponentu. Ten plik językowy jest używany podczas procesu instalacji i [także] za każdym razem, gdy gdzieś poza tym komponentem (na przykład w menedżerze rozszerzeń) wyświetlane są informacje o tym komponencie.

2 Ten następny blok definiuje dane administracyjne, zarówno menu administracyjne, jak i pliki sekcji administracyjnej tego komponentu. W przypadku elementów menu można odwoływać się do obrazów. Ścieżki do obrazów odnoszą się do części administracyjnej komponentu.

Zauważ, że można zdefiniować podmenu, ale nie jest to konieczne.

Zauważ, że można zdefiniować podmenu, ale nie jest to konieczne

2 Wewnątrz znacznika admin znajdują się zarówno definicje plików i folderów, które są instalowane w części administracyjnej, jak i definicja zainstalowanych w nim plików językowych. W naszym przykładzie dodaliśmy znacznik katalogu „admin” do tych elementów, aby powiedzieć [system] Joomla! do którego folderu w pakiecie instalacyjnym należy się odwoływać. Nazwa może być dowolnie wybrana. Ten (drugi) plik językowy systemu [bardziej szczegółowo] jest wyjaśniony podczas przejścia przez następujący plik i jego opis.

install.php

2 W tym pierwszym bloku kodu definiujemy klasę instalacji i pomocniczą [klasę], którą chcemy zaimportować, aby pomóc funkcjom instalacyjnym w tym pliku.

2 Funkcja „instalacja” jest wykonywana po zakończeniu instalacji i zazwyczaj może zawierać komunikat o pomyślnej instalacji. Tekst powinien używać ciągów językowych zdefiniowanych w folderze języka administracyjnego w pliku XX-XX.com_lendr.sys.ini.

2 Funkcja aktualizacji jest wykonywana, gdy metoda instalacji jest zdefiniowana jako aktualizacja. Może to być świetne miejsce do wykonywania pewnych funkcji związanych z dodatkowymi kolumnami SQL dodanymi do istniejących tabel.

2 Nazwy funkcji „przed lotem” i „po locie” mówią same za siebie. Tutaj możesz zdefiniować konkretne funkcje, które chcesz wykonać przed rozpoczęciem instalacji lub po jej zakończeniu. Jeśli chcesz dostarczyć inny zestaw plików dla innej wersji [komponentu], możesz określić zaktualizowane ścieżki do tych plików w funkcji „przed lotem”. Można go użyć do wykonania kodu SQL, który jest unikalny dla danych w komponencie (zamiast struktury tabel samego komponentu).

Plik główny (lendr.php)

php)

Plik lendr.php znajdujący się w folderze głównym naszej strony jest pierwszym plikiem rozpoznawanym i odczytywanym przez [system Joomla]. Ten plik zarządza przekierowaniem zadań do innych kontrolerów, ładowaniem plików „pomocniczych”, stylów, JavaScript, wtyczek bibliotek i innych głównych części wymaganych w całym komponencie. Zostanie on rozszerzony w przyszłych lekcjach z tej serii.

Ten plik załaduje tabele powiązane z tym komponentem; importuje wszelkie istniejące wtyczki w grupie Lendr; określi konkretny kontroler żądany przez określonego użytkownika, a następnie wykona odpowiedni kontroler na podstawie tego żądania.

Kontrolery

W komponencie [system] Joomla 3 kontrolery są tworzone jako klasa z oddzielną funkcją. Zazwyczaj nazwa kontrolera określa zadanie tego kontrolera. Jest to odstępstwo od poprzednich wersji Joomla, gdzie kontroler został przydzielony do różnych zadań związanych z określoną częścią komponentu. Tworzenie kontrolerów z jedną funkcją wykonawczą zapewnia najlepszą możliwość połączenia kontrolerów w jeden łańcuch i utworzenia ścieżki, której działanie i błędy są łatwe do śledzenia. Poniżej znajduje się jeden ze specyficznych kontrolerów, które definiujemy dla Lendr, a po nim nasz domyślny kontroler dla niektórych początkowych funkcji.

Pliki demonstracyjne

edit.php:


default.php:


Kontrolery widoku

Sposób sortowania pracy przez Joomla jest nieco wyjątkowy. Joomla używa jakiegoś wtórnego kontrolera, aby pomóc w wykonawczym aspekcie danych i przypisaniu zmiennych używanych w układzie gatunku. Ten dodatkowy kontroler znajduje się w folderze „widoki” tego komponentu i jest często określany jako typ wymaganej wydajności (na przykład html.php do wykonania html, phtml.php do wykonania dowolnej części szablonu, raw.php do wykonania surowych danych i tak dalej). Poniżej znajduje się jeden z kontrolerów widoku używanych przez [nasz komponent] Lendr.

Pliki demonstracyjne

html.php:

2 Ten kontroler widoku otrzymuje dane dla określonej książki na podstawie jej numeru identyfikacyjnego. Funkcja modelu getBook () zostanie zdefiniowana w następnym kroku. Zauważ, że zmienne używane w układzie są przypisane bezpośrednio do bieżącego obiektu. Kontrolery widoku mogą zawierać bardzo mało logiki lub logiki, w zależności od okoliczności. Ten szczegół jest minimalny [w tym zakresie].

raw.php

php

Ten kontroler widoku otrzymuje surowe (surowe) dane konkretnej książki na podstawie jej numeru identyfikacyjnego.

Piąty krok: tworzenie modeli

Modele Joomla [system] działają jak większość systemów MVC [architektura] i kontrolują większość manipulacji i ekstrakcji danych. Modele [komponent] Lendr zostaną dokładnie zbadane w następnej lekcji, więc tutaj przyjrzymy się tylko [ich] ogólnej strukturze.

Pliki demonstracyjne

book.php

2 Ponownie, dla uproszczenia, w tej lekcji odłożyliśmy na bok szczegóły każdej funkcji i zwrócimy się do nich w następnej lekcji. Ważne jest, aby pamiętać, że w tym przypadku ponownie używamy naszej własnej klasy „default”. Dzięki temu możemy dodawać wspólne i wspólne funkcje do oddzielnego modelu i używać ich w każdym modelu.

default.php

php

2 W naszym kontrolerze domyślnie wykonujemy dwie rzeczy. Po pierwsze, dostarczamy określony kontroler dla operacji „domyślnej”, która zazwyczaj jest operacją uruchamianą, gdy nie zdefiniowano żadnego innego. Jednak Joomla! w odniesieniu do jednego oddzielnego zadania dla jednego kontrolera. Ten kontroler domyślnie przejmie określony widok, znajdzie odpowiedni plik widoku, załaduje odpowiedni model i otrzyma ten widok. Joomla 3 wymaga, aby każdy model był ładowany za każdym razem, gdy ładowany jest plik widoku i wykonując niezbędną nazwę między gatunkami i modelami, możemy je połączyć i przypisać je bez dodatkowego kodu. Jeśli z jakiegoś powodu określony model nie istnieje, ładujemy domyślny model.

Warto zauważyć, czym jest SplPriorityQueue . W PHP jest to tablica, która jest aplikacją specjalnej „sterty” i która na podstawie priorytetu sortuje pewne dane.

Te modele Joomla to tylko dwa pliki [wszystkie], które zostaną utworzone dla systemu komponentów Lendr. Inne modele mają podobny charakter i strukturę, ale zostaną szczegółowo opisane w następnej lekcji.

Podsumowując początek rozwoju

Teraz, ponieważ stworzyliśmy początkową strukturę tego komponentu, napisaliśmy tabele tej bazy danych, pliki instalacyjne, kontrolery, kontrolery widoku i modele, nasz komponent powinien być gotowy do instalacji. Oczywiście, chociaż [w tym komponencie] nie jest jeszcze [funkcjonalny] i tworzy tylko pustą powłokę, utworzenie zainstalowanego komponentu zapewnia pewne poczucie satysfakcji. Upewnij się, że sprawdzasz nasze repozytorium na github i spojrzał na inne tabele baz danych, kontrolery, kontrolery gatunków i jeszcze nie napisane modele.

Zobacz lekcję w całości z kodem przez odniesienie. http://lendr.websparkinc.com .

2 Pobierz wynikowy komponent z tej lekcji.

W następnej lekcji zanurzamy się w samą funkcjonalność napisaną w różnych modelach.

Ten artykuł jest drugą lekcją piątki z tej serii lekcji Davida Hurleya na temat rozwoju komponentu Joomla. Czy przegapiłeś pierwszą lekcję „Dostosuj scenę”? Poznaj go na linku https://magazine.joomla.org/international-stories-all/articles-in-russian-all/joomla-30-extension-development-series-setting-the-stage-ru

1 Oryginalny tekst tego artykułu autorstwa Davida Hurleya w języku angielskim: https://magazine.joomla.org/issues/issue-feb-2013/item/1062-joomla-30-extension-development-series-beginning-development

2 Ten tekst nie znajduje się w oryginalnym artykule autora, opublikowanym w czasopiśmie „Joomla Community Magazine”, ale jest obecny w tekście tej lekcji. na stronie internetowej autora.

Czy przegapiłeś pierwszą lekcję „Dostosuj scenę”?