joomla 3. Що нового для розробників у новій версії -...
DESCRIPTION
З того часу як Joomla 1.0 відокремилась від CMS Mambo, вона пройшла шлях від мішанини ООП і функціонального програмування із міксом PHP з HTML, де часто, заради дрібних правок доводилось правити код самої системи, до системи на базі MVC-фреймворка. Версія 1.5 принесла нам MVC, систему подій та зручну шаблонізацію, завдяки яким поняття “хак” практично зникло. 1.6 та 1.7 стали проміжними на шляху до наступної LTS-версії — 2.5. Цього разу ключовою зміною стало відокремлення Joomla CMS і Joomla Platform. Joomla 3.0 знову є перехідною, перед виходом 3.5. Перше, що можна в ній помітити — це направленість на мобільні пристрої та впровадження Twitter Bootstrap, а разом з ним і jQuery. Також, нарешті, добавлено модульне тестування. А “під капотом” криється нова концепція MVC — HMVC. http://itevent.if.ua/lecture/joomla-3-shcho-novogo-dlya-rozrobnikiv-u-novii-versiyiTRANSCRIPT
![Page 1: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/1.jpg)
Joomla 3Що нового для розробників
Доповідач:Віталій Маренков[email protected]: vitaliy.marenkovСтудія mAvik
![Page 2: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/2.jpg)
Сьогодні розглянемо
● Нові системні вимоги
● Twitter Bootstrap та приціл на мобільні пристрої
● Модулі та плагіни
● Компоненти
● Joomla 3.1 і теги
● Нова концепія MVC
● Нові корисні бібліотеки
● Чого чекати в майбутньому
Практична частина Теоретична частина
![Page 3: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/3.jpg)
Шаблона HTML
Короткий екскурс в історію
Joomla 1.0
ЯдроPHP+HTML
КомпонентPHP+HTML
КомпонентPHP+HTML
![Page 4: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/4.jpg)
Короткий екскурс в історіюКороткий екскурс в історію
Joomla 1.5
Ядро
КомпонентPHP
Шаблон сайтуHTML
ПлагіниШаблон
КомпонентуHTML
КомпонентPHP
ШаблонКомпоненту
HTML
![Page 5: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/5.jpg)
Короткий екскурс в історію
Joomla 2.5
Joomla CMS
КомпонентPHP
Шаблон сайтуHTML
Плагіни
ШаблонКомпоненту
HTML
КомпонентPHP
ШаблонКомпоненту
HTML
Joomla Platform
![Page 6: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/6.jpg)
Короткий екскурс в історію
Joomla 3
● Версії 3.0, 3.1, 3.2 — перекідні до LTS-версії 3.5
● Стандартизація користвувацького інтерфейсу
● Нова версія Joomla Platform
● Нова концепція MVC
![Page 7: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/7.jpg)
Практична частина
![Page 8: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/8.jpg)
Системні вимоги
●PHP 5.3.1
●MySQL 5.1
●register_globals off
●magic_quotes_gpc off
![Page 9: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/9.jpg)
Twitter Bootstrap
Twitter Bootstrap — html/css/js фреймворк, який спрошує та прискорює верстку. Також він включає js-скрипти для багатьох часто використовуваних задач, наприклад: випадаючі меню, закладки, акордеон і т.п.
Використовує LESS - динамічну мову стилів, яка розширює звичні CSS змінними, вкладеними блоками, міксами, опараторами та фукнціями.
Основною JS-бібліотекою тепер є jQuery.
![Page 10: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/10.jpg)
LESS@base: #f938ab;
.box-shadow(@style, @c) when (iscolor(@c)) { box-shadow: @style @c; -webkit-box-shadow: @style @c; -moz-box-shadow: @style @c;}
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) { .box-shadow(@style, rgba(0, 0, 0, @alpha));}
.box { color: saturate(@base, 5%); border-color: lighten(@base, 30%); div { .box-shadow(0 0 5px, 30%) }}
![Page 11: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/11.jpg)
Шаблони
● Базуються на Twitter Bootstrap.● Joomla User Interface — бібліотека найбільш
вживаних елементів користувацького інтерфейсу.● Класс JHtmlBootstrap допогає використовувати
компоненти Twitter Bootsrap.● Вбудовані компоненти та модулі адаптовані для
роботи з Twitter Bootsrap.● В якості зразка можна використовувати шаблон
Protostar.
![Page 12: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/12.jpg)
JUI
media/jui● css● fonts● img● js● less
![Page 13: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/13.jpg)
Шаблони. Використання LESS
● Стилі шаблонів задаються в less-файлах.● В папку css файли потрапляють при компіляції less.● У файлі template.less відвувається «збирання»
стилів з необхідних компонентів JUI.● Використовуючи власний файл variables.less можна
налаштовувати Twitter Bootstrap.● Використання less.js для компіляції less на стороні
клієнта:
<link rel="stylesheet/less" type="text/css" href="styles.less"><script src="less.js" type="text/javascript"></script>
![Page 14: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/14.jpg)
Шаблони. Використання LESS
Файл variables.less (фрагмент):
// Grays// -------------------------@black: #000;@grayDarker: #222;@grayDark: #333;@gray: #555;@grayLight: #999;@grayLighter: #eee;
// Accent colors// -------------------------@blue: #049cdb;@blueDark: #0064cd;
![Page 15: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/15.jpg)
Шаблони. Використання LESS
Файл icomoon.less (фрагмент):.icon-home:before {
content: "\21";}.icon-user:before {
content: "\22";}.icon-checkedout:before,.icon-lock:before,.icon-locked:before {
content: "\23";}.icon-comment:before,.icon-comments:before {
content: "\24";}
![Page 16: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/16.jpg)
Шаблони. Використання LESS
Файл template.less (фрагмент):// CSS Reset@import "../../../media/jui/less/reset.less";
// Core variables and mixins@import "variables.less"; // Custom for this template@import "../../../media/jui/less/mixins.less";
// Grid system and page structure@import "../../../media/jui/less/scaffolding.less";@import "../../../media/jui/less/grid.less";@import "../../../media/jui/less/layouts.less";
// Base CSS@import "../../../media/jui/less/type.less";@import "../../../media/jui/less/code.less";@import "../../../media/jui/less/forms.less";
![Page 17: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/17.jpg)
Шаблони
Файл index.php● Підключення Twitter Bootstrap:JHtml::_('bootstrap.framework');
● Використання HTML5 у старих версіх IE:<!--[if lt IE 9]><scriptsrc="<?php echo $this->baseurl ?>/media/jui/js/html5.js"> </script> <![endif]-->
![Page 18: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/18.jpg)
Спільні слої (layouts)
● Пакет JLayouts дозволяє використовувати слої (розмітки) спільно різними видами розширення, або, навіть, кількома розширеннями.
● Пакет JLayouts скадається з:● інтерфесу JLayout,● базового класу JLayoutBase,● класу JLayoutFile, який і є найбільш
застосувауваним.
![Page 19: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/19.jpg)
Спільні слої (layouts)
● Приклад використання JLayouts:Простий приклад використання:
$layout = new JLayoutFile('joomla.sidebars.submenu', $basePath = null);$sidebarHtml = $layout->render($data);
● Приклад використання у власному розширенні:
$layout = new JLayoutFile('my_layout', JPATH_ROOT .'/components/com_something/layouts');$html = $layout->render($data);
![Page 20: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/20.jpg)
Спільні слої (layouts)
● Приклад заміщення слою в шаблоні:/administrator/templates/{template}/html/layouts/joomla/sidebars/submenu.php
● Рекомендовані каталоги для зберігання слоїв:● /administrator/components/com_example/layouts
● /components/com_example/layouts
● /plugins/content/example/layouts
● /modules/mod_example/layouts
● всередині каталогу layouts рекомендується сворити підкаталог по назві розширення, наприклад:● /components/com_example/layouts/com_example
![Page 21: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/21.jpg)
Адаптивний дизайн
![Page 22: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/22.jpg)
Модулі та плагіни
● В роботі модулів змін не відбулося.● Плагіни:
onContentBeforeSave і onContentAfterSave параметр $article передається теперпо значенню, а не по посиланню
![Page 23: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/23.jpg)
Компоненти
● В Joomla 3 новий фреймворк і нова MVC.● Всі наявні компоненти під Joomla 3, включаючи
вбудовані, використовують режим сумісності з 2.5.
![Page 24: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/24.jpg)
Компоненти. Сумісніть.
● В Joomla 3 є пакет сумісності з 2.5.● Joomla 2.5 має сумість вперед — для версії 3.● Класи JController, JModel та JView необхідно
замінити на JControllerLegacy, JModelLegacy та JViewLegacy.
● Вбудовані компоненти 2.5 вже використовували JControllerLegacy, JModelLegacy та JViewLegacy.
![Page 25: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/25.jpg)
Компоненти. Сумісніть.
Основн і зміни у вбудованих компонентах:● JRequest замінено на JFactory::getApplication()->input
В контролері $this->input.JRequest все ще підтримується, але оголошено застарілим.
● У виглядах замість $this->assignRef використовується присвоєння значень властивостям $this.
● Замість JDispatcher використовується JEventDispatcher.
● Внутрішні шаблони розширень переписані під Twitter Bootstap.
![Page 26: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/26.jpg)
Компоненти. Сумісніть.
Адміністративна частина.● В адміністративній частині підменю тепер відображається не
зверху, а зліва.
● Про відображення підменю потрібно потурбуватися самостійно:
● В код виду потрібно добавити рядок:$this->sidebar = JHtmlSidebar::render();
● В шаблон добавити код для відображення підменю.
● В решті коду потрібно замість JSubMenuHelper використовувати JHtmlSidebar.
● Шаблон адмніністративної частини компоненту тепер повинен використовувати JUI та Twitter Bootstrap — це стандарт.
![Page 27: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/27.jpg)
Joomla Platform 12.1
● Видалено константу DSМожна використовувати DIRECTORY_SEPARATOR.
● Деякі глобальні константи перенесено в класи, з якими вони логічно пов’язані.
● Більшість класів не наслідуються від JObject.
● В JObject видалено метод toString() тепер використовується __toString().
● Деякі класи переіменовано. Наприклад, JFTP тепер називається JClientFtp.
● У багатьох властивостей та методів видалено символа “_” на початку назви.
● Класи, назви яких складалися з прописних літер, переіменовані по принципу CamelCase.
![Page 28: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/28.jpg)
Joomla Platform 12.1
● Замість JHtmlBehavior::mootools() тепер використовується JHtmlBehavior::framework().
● Замість JDate::toMysql() тепер JDate::toSql().
● JUtility::sendMail() видалено. Використовуйте JMail::sendMail(), а замість JUtility::sendAdminMail() - JMail::sendAdminMail()
● Більшість методів тепер не повертає false, об’єкт JError або JException, а викликає виключення.
● Аргументи багатьох методів змінено.
![Page 29: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/29.jpg)
Joomla 3.1 і теги
● В Joomla 3.1 добавлено теги.
● Теги впроваджено в усі вбудовані компоненти.
● Теги можна впроваджувати у власних компонентах. Для цього достатньо добавити поле типу tag.
● Добавлено плагін для поля з автопідбором значення.
![Page 30: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/30.jpg)
Теоретична частина
![Page 31: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/31.jpg)
Нова концепія MVC
● JController, JModel та JView тепер лише інтерфейси.
● Нові базові класи: JModelBase , JViewBase і JControllerBase.
● Нові котролери однозадачні.
● Розширені класи JModelAdmin , JModelForm , JModelItem і JModelList є частиною пакету сумісності.
![Page 32: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/32.jpg)
Контролер
class MyController extends JControllerBase{
public function execute(){
$model = new MyModel();$paths = new SplPriorityQueue;$paths->insert(JPATH_BASE.'/view/item/tmpl', 1);$view = new MyView($model, $paths);
return $view->render();
// Для AJAX останній рядок можна замінити на:// return json_encode($model->getItems());
}}
![Page 33: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/33.jpg)
Модель
● Базовий клас JModelBase.● Базовий клас для моделі, що використовую базу даних,
JModelDatabase.
/** * Модель без використання бази даних */class MyModel extends JModelBase{
public function getTime(){
return time();}
}
![Page 34: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/34.jpg)
Модель
/** * Модель що використовує базу даних */class MyModel extends JModelDatabase{
public function getItems(){
$q = $this->db->getQuery(true);$q->select('*') ->from($q->qn('#__mytable'));$this->db->setQuery($q);
return $this->db->loadResult();}
}
![Page 35: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/35.jpg)
Вид
● Інтерфейс JView вимагає наявності лише методів escape і render.
● Базовий клас JViewBase не містить реалізації методу render.
● Базовий клас: JViewHtml містить реалізаці методу render для використання з шаблонами.
● Згідно нового стандарту файли видів повинні іменуватися html.php, xml.php і т.д. відповідно до формату вихідних даних.
![Page 36: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/36.jpg)
Вид
/** * Вид для виводу JSON */class MyJsonView extends JViewBase{
public function render(){
$data = array('items' => $this->model->getItems()
);
return json_encode($data);}
}
![Page 37: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/37.jpg)
Нові корисні бібліотеки
● Google для роботи з Google API.Забезпечую взаємодію з сервісами Google, такими як: календар, Picaso, Google+, картами.
● Клієнт для протоколу OAuth2
![Page 38: Joomla 3. Що нового для розробників у новій версії - Віталій Маренков](https://reader034.vdocuments.site/reader034/viewer/2022052218/5480bd3e5906b5e16c8b45ab/html5/thumbnails/38.jpg)
Чого чекати в майбутньому
● Цього року вийде Joomla Platform 13
● Ведуться роботи над Joomla Framework, в якому буде:
● простір імен
● відхід від моноліту і побудову фреймворку на окремих компонентах
● встановлення за допомогою Composer