Серія [статей] по розробці розширення 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 Також всередині адміністраторського тега знаходяться як визначення файлів і папок, що встановлюються в адміністративну частину, так і визначення встановлюються в неї мовних файлів. У нашому прикладі ми додали в ці елементи тег директорії "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", проте присутня в тексті цього уроку на веб-сайті автора.

Пропустили перший урок "Налаштовуємо сцену"?