Joomla 3Що нового для розробниківДоповідач:Віталій Маренковadmin@mavik.com.uaSkype: vitaliy.marenkovСтудія mAvik
Сьогодні розглянемо●Нові системні вимоги●Twitter Bootstrap таприціл на мобільніпристрої●Модулі та плагіни●Компоненти●Jooml...
Шаблона HTMLКороткий екскурс в історіюJoomla 1.0ЯдроPHP+HTMLКомпонентPHP+HTMLКомпонентPHP+HTML
Короткий екскурс в історіюКороткий екскурс в історіюJoomla 1.5ЯдроКомпонентPHPШаблон сайтуHTMLПлагіниШаблонКомпонентуHTMLК...
Короткий екскурс в історіюJoomla 2.5Joomla CMSКомпонентPHPШаблон сайтуHTMLПлагіниШаблонКомпонентуHTMLКомпонентPHPШаблонКом...
Короткий екскурс в історіюJoomla 3●Версії 3.0, 3.1, 3.2 — перекідні до LTS-версії 3.5●Стандартизація користвувацького інте...
Практична частина
Системні вимоги●PHP 5.3.1●MySQL 5.1●register_globals off●magic_quotes_gpc off
Twitter BootstrapTwitter Bootstrap — html/css/js фреймворк, якийспрошує та прискорює верстку. Також він включаєjs-скрипти ...
LESS@base: #f938ab;.box-shadow(@style, @c) when (iscolor(@c)) {box-shadow: @style @c;-webkit-box-shadow: @style @c;-moz-bo...
Шаблони●Базуються на Twitter Bootstrap.●Joomla User Interface — бібліотека найбільшвживаних елементів користувацького інте...
JUImedia/jui●css●fonts●img●js●less
Шаблони. Використання LESS●Стилі шаблонів задаються в less-файлах.●В папку css файли потрапляють при компіляції less.●У фа...
Шаблони. Використання LESSФайл variables.less (фрагмент):// Grays// -------------------------@black: #000;@grayDarker: #22...
Шаблони. Використання LESSФайл icomoon.less (фрагмент):.icon-home:before {content: "21";}.icon-user:before {content: "22";...
Шаблони. Використання LESSФайл template.less (фрагмент):// CSS Reset@import "../../../media/jui/less/reset.less";// Core v...
ШаблониФайл index.php●Підключення Twitter Bootstrap:JHtml::_(bootstrap.framework);●Використання HTML5 у старих версіх IE:<...
Спільні слої (layouts)●Пакет JLayouts дозволяє використовувати слої(розмітки) спільно різними видами розширення,або, навіт...
Спільні слої (layouts)●Приклад використання JLayouts:Простий приклад використання:$layout = new JLayoutFile(joomla.sidebar...
Спільні слої (layouts)●Приклад заміщення слою в шаблоні:/administrator/templates/{template}/html/layouts/joomla/sidebars/s...
Адаптивний дизайн
Модулі та плагіни●В роботі модулів змін не відбулося.●Плагіни:onContentBeforeSave і onContentAfterSaveпараметр $article пе...
Компоненти●В Joomla 3 новий фреймворк і нова MVC.●Всі наявні компоненти під Joomla 3, включаючивбудовані, використовують р...
Компоненти. Сумісніть.●В Joomla 3 є пакет сумісності з 2.5.●Joomla 2.5 має сумість вперед — для версії 3.●Класи JControlle...
Компоненти. Сумісніть.Основн і зміни у вбудованих компонентах:●JRequest замінено на JFactory::getApplication()->inputВ кон...
Компоненти. Сумісніть.Адміністративна частина.●В адміністративній частині підменю тепер відображається незверху, а зліва.●...
Joomla Platform 12.1●Видалено константу DSМожна використовувати DIRECTORY_SEPARATOR.●Деякі глобальні константи перенесено ...
Joomla Platform 12.1●Замість JHtmlBehavior::mootools() тепер використовуєтьсяJHtmlBehavior::framework().●Замість JDate::to...
Joomla 3.1 і теги●В Joomla 3.1 добавлено теги.●Теги впроваджено в усі вбудовані компоненти.●Теги можна впроваджувати у вла...
Теоретична частина
Нова концепія MVC●JController, JModel та JView тепер лише інтерфейси.●Нові базові класи: JModelBase , JViewBase і JControl...
Контролерclass MyController extends JControllerBase{public function execute(){$model = new MyModel();$paths = new SplPrior...
Модель●Базовий клас JModelBase.●Базовий клас для моделі, що використовую базу даних,JModelDatabase./*** Модель без викорис...
Модель/*** Модель що використовує базу даних*/class MyModel extends JModelDatabase{public function getItems(){$q = $this->...
Вид●Інтерфейс JView вимагає наявності лише методів escapeі render.●Базовий клас JViewBase не містить реалізації методуrend...
Вид/*** Вид для виводу JSON*/class MyJsonView extends JViewBase{public function render(){$data = array(items => $this->mod...
Нові корисні бібліотеки●Google для роботи з Google API.Забезпечую взаємодію з сервісами Google, такими як:календар, Picaso...
Чого чекати в майбутньому●Цього року вийде Joomla Platform 13●Ведуться роботи над Joomla Framework, в якому буде:●простір ...
Upcoming SlideShare
Loading in …5
×

Joomla 3. Що нового для розробників у новій версії - Віталій Маренков

786 views

Published on

З того часу як 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-versiyi

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
786
On SlideShare
0
From Embeds
0
Number of Embeds
578
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Joomla 3. Що нового для розробників у новій версії - Віталій Маренков

  1. 1. Joomla 3Що нового для розробниківДоповідач:Віталій Маренковadmin@mavik.com.uaSkype: vitaliy.marenkovСтудія mAvik
  2. 2. Сьогодні розглянемо●Нові системні вимоги●Twitter Bootstrap таприціл на мобільніпристрої●Модулі та плагіни●Компоненти●Joomla 3.1 і теги●Нова концепія MVC●Нові корисні бібліотеки●Чого чекати в майбутньомуПрактична частина Теоретична частина
  3. 3. Шаблона HTMLКороткий екскурс в історіюJoomla 1.0ЯдроPHP+HTMLКомпонентPHP+HTMLКомпонентPHP+HTML
  4. 4. Короткий екскурс в історіюКороткий екскурс в історіюJoomla 1.5ЯдроКомпонентPHPШаблон сайтуHTMLПлагіниШаблонКомпонентуHTMLКомпонентPHPШаблонКомпонентуHTML
  5. 5. Короткий екскурс в історіюJoomla 2.5Joomla CMSКомпонентPHPШаблон сайтуHTMLПлагіниШаблонКомпонентуHTMLКомпонентPHPШаблонКомпонентуHTMLJoomla Platform
  6. 6. Короткий екскурс в історіюJoomla 3●Версії 3.0, 3.1, 3.2 — перекідні до LTS-версії 3.5●Стандартизація користвувацького інтерфейсу●Нова версія Joomla Platform●Нова концепція MVC
  7. 7. Практична частина
  8. 8. Системні вимоги●PHP 5.3.1●MySQL 5.1●register_globals off●magic_quotes_gpc off
  9. 9. Twitter BootstrapTwitter Bootstrap — html/css/js фреймворк, якийспрошує та прискорює верстку. Також він включаєjs-скрипти для багатьох часто використовуванихзадач, наприклад: випадаючі меню, закладки,акордеон і т.п.Використовує LESS - динамічну мову стилів, якарозширює звичні CSS змінними, вкладенимиблоками, міксами, опараторами та фукнціями.Основною JS-бібліотекою тепер є jQuery.
  10. 10. 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%) }}
  11. 11. Шаблони●Базуються на Twitter Bootstrap.●Joomla User Interface — бібліотека найбільшвживаних елементів користувацького інтерфейсу.●Класс JHtmlBootstrap допогає використовуватикомпоненти Twitter Bootsrap.●Вбудовані компоненти та модулі адаптовані дляроботи з Twitter Bootsrap.●В якості зразка можна використовувати шаблонProtostar.
  12. 12. JUImedia/jui●css●fonts●img●js●less
  13. 13. Шаблони. Використання 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>
  14. 14. Шаблони. Використання LESSФайл variables.less (фрагмент):// Grays// -------------------------@black: #000;@grayDarker: #222;@grayDark: #333;@gray: #555;@grayLight: #999;@grayLighter: #eee;// Accent colors// -------------------------@blue: #049cdb;@blueDark: #0064cd;
  15. 15. Шаблони. Використання 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";}
  16. 16. Шаблони. Використання 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";
  17. 17. ШаблониФайл 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]-->
  18. 18. Спільні слої (layouts)●Пакет JLayouts дозволяє використовувати слої(розмітки) спільно різними видами розширення,або, навіть, кількома розширеннями.●Пакет JLayouts скадається з:●інтерфесу JLayout,●базового класу JLayoutBase,●класу JLayoutFile, який і є найбільшзастосувауваним.
  19. 19. Спільні слої (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);
  20. 20. Спільні слої (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
  21. 21. Адаптивний дизайн
  22. 22. Модулі та плагіни●В роботі модулів змін не відбулося.●Плагіни:onContentBeforeSave і onContentAfterSaveпараметр $article передається теперпо значенню, а не по посиланню
  23. 23. Компоненти●В Joomla 3 новий фреймворк і нова MVC.●Всі наявні компоненти під Joomla 3, включаючивбудовані, використовують режим сумісності з 2.5.
  24. 24. Компоненти. Сумісніть.●В Joomla 3 є пакет сумісності з 2.5.●Joomla 2.5 має сумість вперед — для версії 3.●Класи JController, JModel та JView необхіднозамінити на JControllerLegacy, JModelLegacy таJViewLegacy.●Вбудовані компоненти 2.5 вже використовувалиJControllerLegacy, JModelLegacy та JViewLegacy.
  25. 25. Компоненти. Сумісніть.Основн і зміни у вбудованих компонентах:●JRequest замінено на JFactory::getApplication()->inputВ контролері $this->input.JRequest все ще підтримується, але оголошено застарілим.●У виглядах замість $this->assignRef використовуєтьсяприсвоєння значень властивостям $this.●Замість JDispatcher використовується JEventDispatcher.●Внутрішні шаблони розширень переписані під TwitterBootstap.
  26. 26. Компоненти. Сумісніть.Адміністративна частина.●В адміністративній частині підменю тепер відображається незверху, а зліва.●Про відображення підменю потрібно потурбуватися самостійно:●В код виду потрібно добавити рядок:$this->sidebar = JHtmlSidebar::render();●В шаблон добавити код для відображення підменю.●В решті коду потрібно замість JSubMenuHelper використовуватиJHtmlSidebar.●Шаблон адмніністративної частини компоненту тепер повиненвикористовувати JUI та Twitter Bootstrap — це стандарт.
  27. 27. Joomla Platform 12.1●Видалено константу DSМожна використовувати DIRECTORY_SEPARATOR.●Деякі глобальні константи перенесено в класи, з якими вонилогічно пов’язані.●Більшість класів не наслідуються від JObject.●В JObject видалено метод toString() тепер використовується__toString().●Деякі класи переіменовано. Наприклад, JFTP тепер називаєтьсяJClientFtp.●У багатьох властивостей та методів видалено символа “_” напочатку назви.●Класи, назви яких складалися з прописних літер, переіменовані попринципу CamelCase.
  28. 28. Joomla Platform 12.1●Замість JHtmlBehavior::mootools() тепер використовуєтьсяJHtmlBehavior::framework().●Замість JDate::toMysql() тепер JDate::toSql().●JUtility::sendMail() видалено. Використовуйте JMail::sendMail(), азамість JUtility::sendAdminMail() - JMail::sendAdminMail()●Більшість методів тепер не повертає false, об’єкт JError абоJException, а викликає виключення.●Аргументи багатьох методів змінено.
  29. 29. Joomla 3.1 і теги●В Joomla 3.1 добавлено теги.●Теги впроваджено в усі вбудовані компоненти.●Теги можна впроваджувати у власних компонентах. Для цьогодостатньо добавити поле типу tag.●Добавлено плагін для поля з автопідбором значення.
  30. 30. Теоретична частина
  31. 31. Нова концепія MVC●JController, JModel та JView тепер лише інтерфейси.●Нові базові класи: JModelBase , JViewBase і JControllerBase.●Нові котролери однозадачні.●Розширені класи JModelAdmin , JModelForm , JModelItem іJModelList є частиною пакету сумісності.
  32. 32. Контролер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());}}
  33. 33. Модель●Базовий клас JModelBase.●Базовий клас для моделі, що використовую базу даних,JModelDatabase./*** Модель без використання бази даних*/class MyModel extends JModelBase{public function getTime(){return time();}}
  34. 34. Модель/*** Модель що використовує базу даних*/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();}}
  35. 35. Вид●Інтерфейс JView вимагає наявності лише методів escapeі render.●Базовий клас JViewBase не містить реалізації методуrender.●Базовий клас: JViewHtml містить реалізаці методуrender для використання з шаблонами.●Згідно нового стандарту файли видів повиннііменуватися html.php, xml.php і т.д. відповідно доформату вихідних даних.
  36. 36. Вид/*** Вид для виводу JSON*/class MyJsonView extends JViewBase{public function render(){$data = array(items => $this->model->getItems());return json_encode($data);}}
  37. 37. Нові корисні бібліотеки●Google для роботи з Google API.Забезпечую взаємодію з сервісами Google, такими як:календар, Picaso, Google+, картами.●Клієнт для протоколу OAuth2
  38. 38. Чого чекати в майбутньому●Цього року вийде Joomla Platform 13●Ведуться роботи над Joomla Framework, в якому буде:●простір імен●відхід від моноліту і побудову фреймворку на окремихкомпонентах●встановлення за допомогою Composer

×