Серыя [артыкулаў] па распрацоўцы пашырэння Joomla 3.0: пачынаем распрацоўку

  1. Нулявы крок: рыхтуем кавы
  2. Першы крок: напішыце пачатковы план кампанента для патрэбных файлаў
  3. Падрабязныя дадзеныя кампанента
  4. пачатковыя функцыі
  5. пачатковыя файлы
  6. Другі крок: напішыце файлы табліц дадзеных
  7. Трэці крок: пачніце тэчку кампанента і стварэнне файла
  8. Чацвёрты крок: напішыце файлы ўстаноўкі, каранёвай файл, кантралёры і кантралёры відаў
  9. ўсталявальныя файлы
  10. Каранёвай файл (lendr.php)
  11. кантралёры
  12. кантралёры выгляду
  13. Пяты крок: стварыце мадэлі
  14. Падводзячы вынік пачатку распрацоўкі

Для таго, каб атрымаць які-небудзь добры працоўны ўзор для гэтай серыі ўрокаў па распрацоўцы кампанента на Joomla 3.0, я вырашыў прайсціся па самога працэсу напісаньня некага пашырэння. Гэты кампанент будзе мецца [ў распараджэнні] для прагляду і запампоўкі на суправаджае [гэтыя ўрокі] сайце, на які [я] буду спасылацца ў гэтым і будучых ўроках дадзенай серыі. Мая мэта - напісаць даволі салідны кампанент, які выходзіць [за межы] простага кампанента "Прывітанне свет!" і цалкам прадэманстраваць ключавыя ў фактычнай распрацоўцы кампанента моманты.

Нулявы крок: рыхтуем кавы

Зноў жа, Вам важна пачаць свой дзень і праект правільна. Выпрацуйце звычку, некаторы рытм, і калі Вы неўзабаве будзеце садзіцца за работу, Вы выявіце, што Вашы навыкі крэатыўнасці, канцэнтравання і напісання кода [знаходзяцца] напагатове. Калі Вы пачынаеце працаваць, не грэбуйце важнасцю знаходжання ў правільным разумовым настроі.

Першы крок: напішыце пачатковы план кампанента для патрэбных файлаў

Першае, што трэба зрабіць, гэта стварыць грубы агляд дадзеных файлаў, тэчак, табліц базы дадзеных і звязаных [з імі] палёў. Для нашага кампанента мы будзе ствараць наступную сістэму.

Падрабязныя дадзеныя кампанента

Назва: Lendr
Назва кампаненты: com_lendr
Апісанне: Lendr - гэта кампанент на Boostrap 3.0, які дазваляе карыстачу стварыць якой-небудзь профіль, дадаць свае кнігі ў сваю бібліятэчную калекцыю, прагледзець бібліятэкі іншых карыстальнікаў, запатрабаваць якую-небудзь кнігу ў пазыку, дадаць кнігі ў спіс жаданых кніг і зарэгістравацца для таго , каб патрапіць у спіс якія чакаюць [у чарзе на] некаторую пэўную кнігу.

пачатковыя функцыі

Гэты новы кампанент Lendr прадаставіць набор наступных магчымасцяў:

  • Уліковыя запісы карыстальнікаў / пачатковыя профілі
  • Кнігі / Бібліятэкі для карыстальнікаў
  • Спіс жаданых кніг
  • Арэнда / Пазыка якой-небудзь кнігі
  • Заяўка на пазыку якой-небудзь кнігі
  • Спіс чакання ўжо арандаванай кнігі

Цяпер мы павінны запісаць нашу пачатковую структуру патрэбных файлаў. Гэта спіс не будзе поўным і будзе [хутчэй за ўсё] вызначана зменены па меры нашага прасоўвання праз гэты працэс. Наяўнасць некаторага пачатковага плану аднак дапаможа нам падтрымліваць усе ў некаторым парадку. Вось пачатковая схема ключавых файлаў, неабходных для Lendr.

пачатковыя файлы

КантралёрыМадэліВідыТабліцыІншае

Save List Book Add Default Book Edit Library Wishlist Book Lend Profile Library Wishlist Install Delete Review Profile Library Router Wish Waitlist Waitlist Waitlist XML Review Wishlist Review Review Request Default

Цяпер, паколькі мы запісалі гэта і стварылі [такі нейкі] грубы план, мы пачынаем ствараць гэтыя файлы ў нашай структуры тэчак.

Другі крок: напішыце файлы табліц дадзеных

Мы пачынаем з стварэння файлаў табліц базы дадзеных. Мы захоўваем іх у тэчцы "tables" асабовай часткі нашага кампанента. Для таго каб асвяжыць у сваёй памяці як павінна быць настроена Ваша мясцовая Паміж іх [распрацоўніка], звярніцеся, калі ласка, да нашай першым артыкуле гэтай серыі. Мы ствараем кожны іх тых апісаных у нашым пачатковым плане файлаў. Ніжэй варта адзін з гэтых файлаў:

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

php

У нашым выпадку гэты файл табліцы ўтрымлівае адзіную функцыю "construct". Гэта функцыя дае пэўную назву табліцы, звязанае з гэтым файлам "JTable" і таксама вызначае ў гэтым файле поле першаснага ключа, - ID нумар кнігі "book_id".

Падчас стварэння гэтых табліц базы дадзеных будзе належным пачаць працэс стварэння скрыпту install.mysql.sql, які будзе выкарыстаны [падчас] ўстаноўкі гэтага кампанента ў адміністрацыйнай панэлі Joomla. Пачатак гэтага файла варта ніжэй:

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

sql

На працягу працэсу стварэння нашых табліц, мы працягнем дадаваць у гэты файл. Даданне гэтых табліц па меры нашага іх стварэння аблегчыць працэс кампіляцыі гэтага кампанента для [яго] ўстаноўкі.

Трэці крок: пачніце тэчку кампанента і стварэнне файла

Пасля стварэння гэтых табліц базы дадзеных, мы наладжваем файлавую структуру для ўсяго гэтага кампанента. Ніжэй варта пачатковая структура тэчак.

com_lendr /
admin /
controllers /
models /
views /
index.html
install.mysql.sql
lendr.php
site /
assets /
controllers /
helpers /
language /
models /
tables /
views /
index.html
lendr.php
router.php
install.php
lendr.xml

Кожны з гэтых файлаў і тэчак важны, хоць не ўсе з іх абавязковыя. Мы пачнем працаваць з кожным з гэтых файлаў і змяшчаюцца ў іх функцыямі. Па ходзе мы разгадаем мэта кожнага [з іх].

Чацвёрты крок: напішыце файлы ўстаноўкі, каранёвай файл, кантралёры і кантралёры відаў

На гэтым кроку мы збіраемся дадаць у некалькі файлаў [некаторы] змесціва. Спачатку мы зірнем на гэтыя файлы ўстаноўкі, затым мы папрацуем з некаторымі кантролерамі і ў заключэнне мы дадамо нашы кантралёры відаў.

ўсталявальныя файлы

Дадзеныя файлы каранёвага ўзроўню - гэта файлы, якія выкарыстоўваюцца [сістэмай] Joomla падчас працэсу ўстаноўкі [гэтага кампанента]. У тэчцы Вашага кампанента яны знаходзяцца па-за тэчак "site" і "admin". Існуе некаторы XML файл, які выкарыстоўваецца для вызначэння дадзеных кампанента і ўсіх звязаных [з ім] файлаў, меню і моў; і таксама існуе файл install.php. Гэты файл install.php ўтрымлівае некаторы лік функцый, якія выконваюцца падчас ўстаноўкі. Гэтая назва не спецыфічна, але яно павінна быць правільна ўключана ў файл XML. Задзейнічаць гэтыя функцыі не абавязкова і нават іх прысутнасць не абавязкова, але яны могуць быць выкарыстаны для выканання дадатковых дзеянняў падчас ўстаноўкі кампанента.

дэманстрацыйныя файлы

lendr.xml

2 Гэты першы блок кода вызначае інфармацыю дадзенага кампанента. Гэтая інфармацыя адлюстроўваецца ў Вашым мэнэджару пашырэньні Joomla! і таксама захоўваецца ў табліцы дадзенага пашырэння.

2 Гэты блок кода кажа сістэме Joomla! дзе знаходзяцца SQL файлы дадзенага кампанента. Ён апрацоўваецца сістэмай Joomla! падчас працэсу ўстаноўкі кампанента для стварэння неабходных табліц базы дадзеных. Заўважце, што Вы можаце прызначыць тут выкарыстоўваюцца Вамі кадоўку знакаў і тып драйвера базы дадзеных.

Вы таксама можаце [занесці сюды] блок деинсталлирования з падобнай структурай для вызначэння якога-небудзь SQL файла, які будзе выконвацца падчас деинсталлирования.

Вы таксама можаце [занесці сюды] блок деинсталлирования з падобнай структурай для вызначэння якога-небудзь SQL файла, які будзе выконвацца падчас деинсталлирования

2 Гэты блок вызначае дырэкторыі, якія будуць устаноўлены ў асабовай часткі Вашага вэб-сайта на Joomla !, у тэчцы / components / асабовай частцы кампанента. Пералічваць усе файлы не абавязкова, - толькі дырэкторыі і любыя файлы каранёвага ўзроўню. 2 Гэты блок вызначае дырэкторыі, якія будуць устаноўлены ў асабовай часткі Вашага вэб-сайта на Joomla

2 Гэта файл скрыпту, які вызначае набор функцый, якія выконваюцца падчас працэсу ўстаноўкі. У нашым выпадку мы назвалі такі файл install.php.

2 Гэты моўны раздзел вызначае неабходныя моўныя файлы. Яны будуць устаноўлены ў моўную тэчку ў корані Joomla! сайта з належным моўным тэгам. Тут мы маем два моўных файла, адзін з якіх - сістэмны моўны файл гэтага кампанента. Гэты моўны файл выкарыстоўваецца падчас усталявальнага працэсу і [таксама] кожны раз, калі дзе-небудзь па-за гэтага кампанента (напрыклад, у мэнэджару пашырэньні) паказваецца інфармацыя па гэтым Вашаму кампаненту.

2 Гэты наступны блок вызначае дадзеныя адміністрацыйнай часткі, - як адміністрацыйнае меню, так і файлы адміністрацыйнага падзелу гэтага кампанента. Для пунктаў меню можна спасылацца на малюнкі. Шляху да малюнках ставяцца да адміністрацыйнай часткі кампанента.

Заўважце, што падменю можа быць вызначана, але яно не абавязкова.

Заўважце, што падменю можа быць вызначана, але яно не абавязкова

2. Гэтак сама ўнутры адміністратарскага тэга знаходзяцца як вызначэнне файлаў і тэчак, якiя ўстанаўлiваюцца ў адміністрацыйную частку, так і вызначэнне усталёўваных у яе моўных файлаў. У нашым прыкладзе мы дадалі ў гэтыя элементы тэг дырэкторыі "admin", каб сказаць [ў сістэму] Joomla! на якую тэчку ў пакеце ўстаноўкі варта для гэтага спасылацца. Назва можа быць любым, на Ваш выбар. Гэты (другі) сістэмны моўны файл [падрабязней] растлумачаны пры праходжанні па наступным файлу і яго апісанні.

install.php

2 У гэтым першым кодавым блоку мы вызначаем клас ўстаноўкі і дапаможны [клас], якія мы жадаем імпартаваць для дапамогі якія знаходзяцца ў гэтым файле усталявальным функцый.

2 Функцыя "install" спаўняецца пасля заканчэння ўстаноўкі і звычайна можа ўключаць паведамленне пра паспяховую ўсталёўцы. Тэкст павінен выкарыстоўваць моўныя радкі, вызначаныя ў раздзеле адміністрацыйных моўных тэчак у файле XX-XX.com_lendr.sys.ini

2 Функцыя "update" спаўняецца калі метад ўстаноўкі вызначаны як "update". Гэта можа быць выдатным месцам для выканання некаторых функцый, якія адносяцца да дадатковых дадаваць у існуючыя табліцы слупкам SQL.

2 Назвы функцый "pre-flight" і "post-flight" гавораць самі за сябе. Тут Вы можаце вызначыць канкрэтныя функцыі, якія Вы жадаеце выканаць альбо перад пачаткам устаноўкі, альбо пасля яе завяршэння. Калі Вы жадаеце даць іншы набор файлаў для іншай версіі [кампанента], то абноўленыя шляху на тыя файлы Вы можаце пазначыць у функцыі "pre-flight". Яна можа быць выкарыстана для выканання кода SQL, які унікальны тым, што ходзяць у Вашым кампаненце дадзеных (замест структуры табліц самага кампанента).

Каранёвай файл (lendr.php)

php)

Які знаходзіцца ў каранёвай тэчцы нашага сайта файл lendr.php з'яўляецца першым файлам, распазнаваць і счытвае [сістэмай] Joomla. Гэты файл кіруе Пераадрасаваннем заданняў іншым кантролерам, загрузкай файлаў "helper", стыляў, JavaScript, убудоў бібліятэк і іншых галоўных частак, неабходных на працягу ўсяго кампанента. Ён будзе пашыраны ў будучых ўроках гэтай серыі.

Гэты файл загрузіць звязаныя з гэтым кампанентам табліцы; імпартуе любыя існуючыя ў групе "lendr" убудовы; вызначыць запытаны канкрэтным карыстальнікам канкрэтны кантролер і затым на падставе гэтага запыту выканае належны кантролер.

кантралёры

У кампаненце [сістэмы] Joomla 3 кантралёры ствараюцца як які-небудзь клас з якой-небудзь асобнай функцыяй. Звычайна назву кантролера определеяет заданне для гэтага кантролера. Гэта - адступленне ад папярэдніх версій Joomla, дзе якой-небудзь кантролер быў выдзелены нейкаму разнастайнасці задач, якія адносяцца да якой-небудзь пэўнай часткі кампанента. Стварэнне кантролераў з аднаго выканаўчай функцыяй падае лепшую магчымасць для звязвання кантролераў разам у адзіную ланцуг і фарміравання шляху, дзеянне і памылкі якога лёгка адсочваць. Ніжэй знаходзіцца адзін з канкрэтных кантролераў, які мы вызначым для Lendr, а следам за ім - наш кантролер па змаўчанні для некаторага пачатковага функцыяналу.

дэманстрацыйныя файлы

edit.php:


default.php:


кантралёры выгляду

У тым як працуюць віды Joomla трохі унікальная. Joomla выкарыстоўвае некаторы другасны кантролер для дапамогі з выканаўчым аспектам дадзеных і прызначэннем зменных, якія выкарыстоўваюцца ў макетах відаў. Гэты другасны кантролер знаходзіцца ў тэчцы "views" дадзенага кампанента і яго часта называюць падобна з тыпам жаданага выканання (напрыклад, html.php для выканання html, phtml.php для выканання якой-небудзь часткі шаблону, raw.php - для выканання неапрацаваных дадзеных і гэтак далей). Ніжэй варта адзін з кантролераў выгляду, які выкарыстоўваецца [нашым кампанентам] Lendr.

дэманстрацыйныя файлы

html.php:

2 Гэты кантролер выгляду атрымлівае дадзеныя пэўнай кнігі, заснаваныя на яе ID нумары. Функцыя мадэлі getBook () будзе вызначаная на наступным кроку. Заўважце што выкарыстоўваюцца ў макеце зменныя прызначаюцца непасрэдна ў бягучым аб'екце. Кантралёры выгляду могуць утрымліваць вельмі мала логікі ці вельмі шмат логікі, у завивимости ад абставін. Гэты канкрэтны - мінімальны [у гэтых адносінах].

raw.php

php

Гэты кантролер выгляду атрымлівае "сырыя" (неапрацаваныя) дадзеныя пэўнай кнігі, заснаваныя на яе ID нумары.

Пяты крок: стварыце мадэлі

Мадэлі [сістэмы] Joomla працуюць як большасць сістэм [з архітэктурай] MVC і кіруюць асноўнай масай маніпулявання дадзеных і вымання дадзеных. Мадэлі [кампанента] Lendr будуць пільна разгледжаны на наступным уроку, так што тут мы зірнем толькі на [іх] агульную структуру.

дэманстрацыйныя файлы

book.php

2 Зноў жа, дзеля прастаты, у гэтым уроку мы пакінулі ўбаку падрабязнасці па кожнай функцыі і звернемся да іх на наступным уроку. Важна заўважыць, што ў гэтым выпадку мы зноў ўжываем наш уласны клас "default". Гэтым самым мы можам дадаваць у асобную мадэль распаўсюджаныя і агульныя функцыі і выкарыстоўваць іх у кожнай мадэлі.

default.php

php

2 У нашым кантролеры па змаўчанні мы ажыццяўляем дзве рэчы. Па-першае, мы прадстаўляем канкрэтны кантролер для аперацыі "default", што звычайна ёсць аперацыя, якая запускаецца ў выпадку, калі не вызначана ніякая іншая. Пры гэтым усё яшчэ выконваецца методыка Joomla! адносна аднаго асобнага задання на адзін котроллеры. Гэты кантролер па змаўчанні будзе прымаць пэўны выгляд, знаходзіць належны файл выгляду, загружаць адпаведную мадэль і атрымліваць гэты выгляд. Joomla 3 патрабуе, каб якая-небудзь мадэль загружалася пры кожнай загрузцы файла выгляду і выконваючы неабходнае найменне паміж відамі і мадэлямі мы можам звязваць іх і прызначаць іх без якога-небудзь дадатковага кода. Калі па якой-небудзь прычыне пэўная мадэль не існуе, то мы загружаем мадэль па змаўчанні.

Годна ўвагі што ўяўляе сабой SplPriorityQueue. У PHP - гэта масіў, які з'яўляецца ужываннем спецыяльнага "heap" -а і які грунтуючыся на прыярытэце сартуе пэўныя дадзеныя.

Гэтыя мадэлі Joomla з'яўляюцца толькі двума [файламі] з [усіх] файлаў, якія будуць створаны для сістэмы кампанента Lendr. Іншыя мадэлі падобныя па сваёй прыродзе і структуры, але яны будуць падрабязна напісаны на наступным уроку.

Падводзячы вынік пачатку распрацоўкі

Цяпер, паколькі мы стварылі пачатковую структуру гэтага кампанента, напісалі табліцы дадзенай базы дадзеных, файлы ўстаноўкі, кантралёры, кантралёры відаў і мадэлі, наш кампанент павінен быць гатовы да ўсталёўкі. Вядома, хоць [у гэтым кампаненце] яшчэ няма [функцыяналу] і ён стварае ўсяго толькі пустую абалонку, стварэнне што ўстанаўліваецца кампанента сапраўды дае некаторы пачуццё задавальнення. Пераканайцеся ў тым, што Вы даследавалі наш рэпазітар на GitHub і прагледзелі іншыя, яшчэ не напісаныя тут табліцы базы дадзеных, кантралёры, кантралёры відаў і мадэлі.

Праглядзіце ўрок цалкам з кодам па спасылцы http://lendr.websparkinc.com .

2 Запампуйце атрыманы ў выніку гэтага ўроку кампанент.

На наступным уроку мы паглыбімся ў сам функцыянал, напісаны ў розных мадэлях.

Дадзены артыкул - другі ўрок з пяці ў дадзенай серыі ўрокаў Давіда Хюрли (David Hurley) па распрацоўцы кампанента Joomla. Прапусцілі першы ўрок "Наладжвальны сцэну"? Познакомтесь з ім па спасылцы https://magazine.joomla.org/international-stories-all/articles-in-russian-all/joomla-30-extension-development-series-setting-the-stage-ru

1 Арыгінальны тэкст гэтага артыкула аўтара Давіда Хюрли (David Hurley) на англійскай мове: https://magazine.joomla.org/issues/issue-feb-2013/item/1062-joomla-30-extension-development-series-beginning-development

2 Дадзены тэкст адсутнічае ў арыгінальнай артыкуле аўтара, апублікаванай у часопісе "Joomla Community Magazine", аднак прысутнічае ў тэксце гэтага ўроку на вэб-сайце аўтара.

Прапусцілі першы ўрок "Наладжвальны сцэну"?