Розробка розширення для joomla! 3

Розробка розширення для joomla! 3

Всі статті циклу:

Крок 1: Опишіть основну схему компонента

Насамперед ми повинні створити загальний огляд файлів, папок, таблиць бази даних і пов'язаних полів. Для нашого компонента ми створимо таку систему.

деталі компонента

Назва: Lendr
Назва компонента: com_lendr
Опис: Lendr - це компонент Joomla! 3.0 (який використовує Bootstrap), який дозволить користувачам створювати профіль, додавати книги в колекції своєї бібліотеки, переглядати бібліотеки інших користувачів, попросити книгу в борг, додавати книги в списки бажаних (wishlist), а також підписуватися на список очікування певної книги.

Основні функції

Новий компонент Lendr матиме наступний набір можливостей:

Тепер ми повинні написати базову структуру необхідних нам файлів. Це точно не буде вичерпний список, і він, швидше за все, буде змінюватися в процесі написання компонента. Однак, маючи початкову схему, ми зможемо хоч якось дотримуватися нашого шляху. Ось первісна схема ключових файлів необхідних для Lendr:

Основні файли

Тепер, коли ми всі виписали, ми починаємо створювати ці файли в нашій структурі папок.

Крок 2: Створіть файли бази даних

Ми починаємо зі створення файлів бази даних. Ми зберігаємо ці файли в папці таблиць, яка розташована у фронтендів нашого компонента. Ми створюємо всі файли, які описали в нашій схемі. Ось один з цих фалів /components/com_lendr/site/tables/book.php:

У нашому випадку файл таблиці містить одну функцію конструктора. Ця функція описує ім'я таблиці, яка пов'язана з цим JTable файлом і також визначає поле первинного ключа book_id.

Під час створення цих таблиць доцільно почати процес створення скрипта install.mysql.sql, який буде використовуватися при установці компонента з панелі управління Joomla. Ось так виглядає початок файлу /administrator/components/com_lendr/admin/install.mysql.sql:

Ми будемо продовжувати додавати інформацію в цей файл у міру проходження по процесу створення наших таблиць.

Крок 3: Почніть створення папок і файлів компонента

Після створення таблиці бази даних ми створюємо структуру файлів для нашого компонента. Нижче наведена базова структура директорій:

Всі ці файли і папки важливі, але не всі вони необхідні. Незабаром ми почнемо роботу з кожним з цих файлів і функціями, які вони містять. По ходу дії ми з'ясуємо призначення кожного з них.

Крок 4: Створіть файли установки, точку входу, контролери і контролери уявлення

На цьому кроці ми додамо контент в деякі файли. Спочатку ми розглянемо файли установки, потім ми попрацюємо з контролерами і, нарешті, додамо наші контролери уявлень.

файли установки

Перший блок деталей визначає інформацію про компоненті. Ця інформація відображається в Менеджері розширень Joomla! і також зберігається в таблиці розширень (#__extensions).

Цей блок говорить Joomla! де знаходяться SQL файли компонента. Вони виконуються під час установки для створення необхідних таблиць бази даних. Ви можете встановити свій кодування символів, а також тип драйвера.

Ви також можете визначити блок uninstall зі схожою структурою для визначення SQL інструкцій, які необхідно виконати при видаленні компонента.

Цей блок визначає папки, які будуть встановлені у фронт-енд компонента. Не обов'язково вказувати кожен файл, просто папки і файли кореневого рівня. За всіх папок буде виконаний рекрусівний пошук, і всі файли будуть додані.

Файл скрипта визначає набір функцій, які виконуються під час установки. У нашому випадку ми назвали його install.php.

Розділ «languages» визначає необхідні мовний файли. Вони будуть встановлені в папку languages ​​під відповідний мовної тег.

Наступний блок визначає деталі адміністраторській частини, файли компонента адмінки, а також пункти меню. Ці пункти меню можуть бути пов'язані з картинками. Шляхи до картинок є відносними папки administrator компонента.

Також всередині тега administration знаходяться папки і файли, які повинні бути встановлені в адміністраторську частина, а також мовні файли адмінки компонента.

У першому блоці ми визначаємо класи установника і хелпера, які хочемо підключити.

Функція install виконується після закінчення установки компонента і зазвичай включає в себе повідомлення про успішну установку. Текст повинен використовувати мовні рядки, які визначені в адміністраторській мовної папці у файлі XX-XX.com_lendr.sys.ini.

Функція поновлення виконується тоді, коли метод установки визначено як оновлення.

Тут ви можете визначити специфічні функції, які хочете виконати або до початку установки, або після її завершення. Подпробнее про ці функції ви можете дізнатися зі статті "Розробка компонента для Joomla 2.5 - скрипт установки / оновлення / видалення і сервер оновлень".

Кореневої файл (lendr.php)

Файл lendr.php в корені папки site. це перший файл, який розпізнає і Новомосковскет Joomla! після установки компонента. Це точка входу нашого компонента, яка перенаправляє завдання на контролери, підключає хелпери, CSS-файли і JS-файли, бібліотеки плагінів і інші базові речі, які потрібні компоненту. Файл буде завантажувати таблиці, пов'язані з компонентом; імпортувати всі плагіни, які існують в групі плагінів "lendr"; визначати запитаний користувачем контролер і потім виконувати відповідний контролер, грунтуючись на цьому запиті. У міру написання компонента цей файл буде постійно розширюватися.

контролери

Контролери в Joomla! 3 компоненті створюються як клас з однією функцією. Як правило, назва контролера визначає завдання цього контролера. Це відрізняється від попередніх версій Joomla. де контролер виконував відразу кілька завдань відносяться до конкретних областях компонента. Створення компонентів з однією функцією виконання дозволяє пов'язувати контролери в єдиний ланцюжок, формуючи при цьому легкодоступний шлях для відстеження дій і усунення помилок. Знаходяться вони в папці site / controllers /. Нижче наведено приклад одного з контролерів, який ми визначимо в Lendr, а також приклад контролера за замовчуванням з базовими функціями.

Зверніть увагу на те, що наш контролер розширює LendrControllersDefault. LendrControllersDefault (контролер за замовчуванням) дуже важливий. Ми розширили наш контролер за замовчуванням для того, щоб відобразити потрібний шаблон.

Нижче наведено приклад контролера за замовчуванням /components/com_lendr/controllers/default.php

Цей контролер отримає з запиту уявлення, знайде відповідний файл уявлення, завантажить відповідну модель і відобразить уявлення. В Joomla! 3 з кожним файлом уявлення повинна бути завантажена модель, тому дотримуючись угоди по найменуванню уявлень і моделей ми можемо пов'язати їх без додаткових рядків коду. Якщо модель з якоїсь причини не існує, ми завантажуємо модель за замовчуванням.

Варто згадати, що таке SplPriorityQueue. У PHP це масив, який є реалізацією спеціального безлічі і забезпечує основні функціональні можливості пріоритетною черзі.

контролери уявлень

Joomla! унікальна в плані обробки подань. Joomla! використовує вторинні контролери, які допомагають в рендеринге даних і призначення змінних, використовуваних в шаблонах. Вторинний контролер знаходиться в папці уявлення компонента (site / views / view_name /) і часто називається в залежності від бажаного типу рендеринга (наприклад, html.php для рендеринга html, phtml.php для рендеринга часткового шаблону, raw.php для рендеринга чистих даних і т.д.). У попередніх версіях Joomla! ці файли називалися як view.html.php. view.raw.php і т.д. Нижче представлені деякі з контролерів уявлень, які використовує Lendr.

Цей контролер уявлень відображає деталі конкретної книги, грунтуючись на id. Функція моделі getBook () буде визначена в наступній статті. Зверніть увагу, що змінні, які будуть використовуватися в шаблоні призначаються безпосередньо поточного об'єкту. Залежно від обставин контролери уявлень можуть містити різну кількість логіки. Подання вище містить мінімальну кількість логіки.

Цей контролер уявлення відображає чисті (неформатовані) деталі конкретної книги, грунтуючись на id.

Крок 5: створіть моделі

Моделі в Joomla! працюють так само, як і в більшості MVC систем. Вони займаються обробкою і отриманням більшості даних. На моделях Lendr ми сконцентруємося в наступній статті, а зараз поглянемо тільки на базову структуру.

І знову, заради простоти, в цій статті ми опустили деталі кожної функції. Ми розберемо їх в наступній статті. Важливо відзначити, що ми знову реалізували наш Default клас. Таким чином, ми можемо додати загальні функції в одну модель і використовувати їх в кожної моделі.

Це файли тільки двох моделей, які будуть створені з компонентом Lendr. Інші моделі, схожі за своєю природою і базової структурі, будуть написані в наступній статті.

Підсумки початку розробки

Тепер, коли ми створили базову структуру папок компонента, створили таблиці бази даних, файли установки, контролери, контролери уявлень і моделі, наш компонент став встановлюються. Звичайно, функціональності ще немає, і компонент просто створює порожню оболонку, але наявність встановленого компонента створює деяке почуття задоволення.

Не забудьте вивчити наш Github репозиторій. і подивитися на інші таблиці бази даних, контролери, контролери уявлень і моделі, які не були описані в цій частині.

У наступній частині ми зануримося в написання безпосередньо функціоналу моделей.