Tài liệu xây dựng component trong Joomla! 1.5

Chia sẻ: Nguyen Minh Bao | Ngày: | Loại File: PDF | Số trang:41

0
443
lượt xem
220
download

Tài liệu xây dựng component trong Joomla! 1.5

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Một Component là một trong những thành phần mở rộng lớn nhất và phức tạp nhất . Các Component có thể xem như các ứng dụng mini . Một cách trực quan chúng ta có thể hình dung joomla là một hệ điều hành và tất cả các component là các ứng dụng desktop.

Chủ đề:
Lưu

Nội dung Text: Tài liệu xây dựng component trong Joomla! 1.5

  1. Tài liệu xây dựng component trong Joomla! 1.5
  2. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 TÀI LI U HƯ NG D N XÂY D NG COMPONENT TRONG JOOMLA! 1.5 Th c hi n b i oàn Thanh Tám (email: tamdt_a9tth@yahoo.com) [Ngư i d ch] Tài li u này bao g m 4 ph n hư ng d n b n t ng bư c xây d ng m t component trong joomla 1.5. Ph n sau s b sung thêm các c i m m i vào ph n trư c hoàn thi n d n component c a b n. Khi k t thúc m i ph n b n u có th cài t ngay các ví d th y ư c các k t qu c a ph n ó. Tài li u hư ng d n này ư c d ch ch y u t trang web: http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,tutorials:components/ Tuy nhiên, ây không ph i là b n d ch hoàn thi n, có m t s o n ch d ch theo ý, có m t s o n d ch hơi “chu i” do ó tài li u này ch mang tính ch t tham kh o. N u b n mu n có thêm thông tin chi ti t và chính xác xin vui lòng xem b n g c ti ng Anh trên các trang web tương ng) [Ngư i d ch] M U M t component là m t trong nh ng thành ph n m r ng l n nh t và ph c t p nh t. Các component có th xem như các ng d ng mini. M t cách tr c quan chúng ta có th hình dung joomla là m t h i u hành và t t c các component là các ng d ng desktop. M i trang (page) trong joomla s g i n m t component t i v các n i dung chính (page body) c a trang ó. Ví d component n i dung (com_content) là m t ng d ng mini x lý t t c các v n v n i dung ư c tr l i, tương t như th component ăng ký là m t ng d ng mini nh m x lý vi c ăng ký c a ngư i dùng. M t componet có hai ph n chính: ph n qu n tr và ph n trên site. Ph n trên site là ph n ư c s d ng t i v các trang khi ư c tri u g i trong quá trình v n hành site thông thư ng. Ph n qu n tr cung c p giao di n c u hình, qu n lý các khía c nh khác nhau c a component và ư c truy c p thông qua ng d ng qu n tr c a joomla. Ph n hư ng d n dư i ây s cung c p cho các b n m t vài ví d h u ích giúp b n làm th nào t o ra m t component. While we have gone to great lengths to make Joomla easy for content providers to use, we have equally spent a lot of time developing a flexible framework for developers to extend the capabilities of Joomla without having to touch the Core code. How-To's (ph n b n d ch c a MVC 1-4 phía dư i) • Hello World MVC 1 Component - The frame • Hello World MVC 2 Component - The model • Hello World MVC 3 Component - The table • Hello World MVC 4 Component - The admin interface Copyleft by oàn Thanh Tám Trang 1/41 Email: tamdt_a9tth@yahoo.com
  3. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 PH N 1. PHÁT TRI N M T COMPONENT MVC. (Ph n hư ng d n này ư c d ch t trang web: http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,components:hello_world_mvc1/). 1. Gi i thi u Frameword m i trong joomla 1.5 ã mang l i nh ng thu n l i r t l n cho các nhà phát tri n. Các o n code ã hoàn toàn ư c ki m tra và khá rõ ràng. Bài hư ng d n này s giúp b n i qua các bư c trong quá trình phát tri n nh m t o ra m t component có th s d ng frameword m i này. Ph m vi c a bài này là phát tri n m t component Hello World ơn gi n. Trong các bài hư ng d n ti p theo, frameword ơn gi n này s ư c b sung, th hi n m t cách y kh năng và tính linh ho t c a m u thi t k MVC trong joomla. 2. Yêu c u B n c n có joomla 1.5 ho c các phiên b n m i hơn th c hành bài hư ng d n này. 3. Gi i thi u v MVC (Model-View-Controler) Trong khi ý tư ng phía sau m t component dư ng như là khá ơn gi n thì, các o n code có th nhanh chóng tr lên r t ph c t p khi các c i m b sung ư c thêm vào ho c giao di n ư c tùy bi n. Model-View-Controler (g i t t là MVC) là m t m u thi t k ph n m m ư c dùng t ch c các o n mã theo cách mà vi c x lý d li u (business logic) và vi c bi u di n d li u là tách r i nhau. Ti n n m sau hư ng ti p c n này là n u bussiness logic ư c nhóm vào trong m t section thì giao di n và tương tác ngư i dùng bao quanh d li u có th nh d ng và tùy bi n l i mà không có nh hư ng n vi c ph i l p trình l i bussiness logic. (nghĩa là hình th c và n i dung là tách r i nhau, do ó khi thay i hình th c th hi n thì không nh hư ng n n i dung). Có ba ph n chính trong m t MVC component (ba ph n này bao g m Model, View và Controler). Chúng ư c mô t m t cách v n t t dư i ây. N u b n c n nhi u thông tin y hơn xin vui lòng tham kh o thêm trong các ư ng d n ư c cung c p cu i bài hư ng d n này. 3.1. Model M t model là thành ph n c a component óng gói d li u c a ng d ng. Nó thư ng cung c p các th t c qu n lý và thao tác d li u này theo m t cách nào ó, trong ó có b sung thêm các th t c l y d li u t model. Trong trư ng h p c a chúng ta model s ch a các phương th c như b sung, lo i b và c p nh t thông tin v nh ng l i chào m ng trong cơ s d li u. Nó còn ch a phương th c l y danh sách các l i chào trong CSDL. Nói m t cách t ng quát, vi c truy c p vào CSDL l p dư i s ư c óng gói trong model. Theo cách này, n u m t ng d ng chuy n i sang vi c s d ng m t file bình thư ng lưu tr thông tin c a nó thay vì s d ng CSDL, thì ch có thành ph n model là thay i, các thành ph n view và controler là không i. 3.2. View Copyleft by oàn Thanh Tám Trang 2/41 Email: tamdt_a9tth@yahoo.com
  4. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 View là m t thành ph n c a component ư c s d ng tr l i d li u t model theo cách phù h p v i tương tác. i v i các ng d ng web, view thông thư ng là các trang HTML tr l i d li u. View l y d li u t model (d li u này ư c chuy n qua nó t i controler). Và ưa d li u vào trong template (d li u s hi n th v i ngư i dùng). View không làm thay i d li u. Nó ch hi n th d li u l y t model. 3.3. Controler Controler ch u trách nhi m ph n h i các hành ng c a ngư i dùng. Trong các ng d ng web, m t hành ng c a ngư i dùng thông thư ng là m t yêu c u t i trang. Controler s xác nh yêu c u gì ư c ưa ra b i ngư i s d ng và ph n h i thích h p b ng vi c yêu c u model tính toán d li u phù h p và chuy n t model vào view. Controler không th hi n d li u t model, nó kích ho t các phương th c trong model hi u ch nh d li u và sau ó chuy n t model sang view hi n th d li u. 4. Cài t Joomla! MVC Trong joomla m u MVC ư c th c hi n s d ng 3 l p: JModel, JView và JController. Thông tin chi ti t v các l p này vui lòng xem trong tài li u hư ng d n API ((WIP). 5. T o m t component i v i component cơ s c a chúng ta, chúng ta ch c n 5 file: • hello.php - ây là i m vào cho component c a chúng ta (this is the entry point to our component) • controller.php – file này có ch a controler cơ b n (this file contains our base controller) • views/hello/view.html.php – file này nh n các d li u c n thi t và t nó lên template (this file retrieves the necessary data and pushes it into the template) • views/hello/tmpl/default.php – file này là temple cho u ra (this is the template for our output) • hello.xml – ây là m t file XML nói cho joomla bi t cách cài t component c a chúng ta như th nào (this is an XML file that tells Joomla! how to install our component). 5.1. T o entry point Joomla luôn luôn ư c truy c p thông qua m t i m vào ơn: index.php cho các ng d ng site và administrator/index.php cho ng d ng qu n tr . Sau ó ng d ng s t i các component c n thi t d a trên giá tr ch n l a trong URL ho c trong d li u POST. i v i component c a chúng ta URL s như sau: index.php?option=com_hello&view=hello. Vi c này s t i file chính c a chúng ta và có th ư c xem như m t i m vào ơn cho component c a chúng ta: components/com_hello/hello.php. o n mã này th c s là c th tùy theo các component.
  5. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 /** * @package Joomla.Tutorials * @subpackage Components * components/com_hello/hello.php * @link http://dev.joomla.org/component/option,com_jd- wiki/Itemid,31/id,tutorials:modules/ * @license GNU/GPL */ // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); // Require the base controller require_once( JPATH_COMPONENT.DS.'controller.php' ); // Require specific controller if requested if($controller = JRequest::getWord('controller')) { $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php'; if (file_exists($path)) { require_once $path; } else { $controller = ''; } } // Create the controller $classname = 'HelloController'.$controller; $controller = new $classname( ); // Perform the Request task $controller->execute( JRequest::getVar( 'task' ) ); // Redirect if set by the controller $controller->redirect(); ?> Câu l nh u tiên là câu l nh ki m tra b o m t. JPATH_COMPONENT là ư ng d n tuy t i t i component hi n t i, trong trư ng h p c a chúng ta là components/com_hello. N u b n c n xác nh site component ho c admin component thì b n có th s d ng JPATH_COMPONENT và JPATH_COMPONENT_ADMINISTRATOR. DS là d u phân cách thư m c trong h th ng c a b n: có th là “\” ho c “/”. i u này ư c thi t l p t ng b i frameword, vì th developer không ph i quan tâm n vi c phát tri n các phiên b n khác nhau cho các h i u hành khác nhau. DS s luôn ư c s d ng khi tham chi u n các file trên máy ch c c b . Copyleft by oàn Thanh Tám Trang 4/41 Email: tamdt_a9tth@yahoo.com
  6. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 Sau khi t i controler cơ b n, chúng ta s ki m tra m t controler c th c n n. Trong component này, controler cơ b n ch là m t controler nhưng chúng ta c p n i u này cho các công vi c trong tương lai. JRequest:getVar() tìm m t bi n trong URL ho c POST d li u. B i v y n u URL c a chúng ta là: index.php?option=com_hello>controller=controller_name thì chúng ta có th nh n ư c tên controler c a chúng ta trong component b ng s d ng câu l nh sau: echo JRequest::getVar(’controller’); Bây gi chúng ta ã có controler cơ s ‘HelloController’ trong com_hello/controller.php, và n u c n thi t b sung thêm các controler d ng như: ‘HelloControllerController1’ trong com_hello/controllers/controller1.php. S s p x p theo h th ng này s t o ra thu n l i v sau: ‘{Componentname}{Controller}{Controllername}’. Sau khi controler ư c t o ra, chúng ta cho controler ch y nhi m v như ư c ch ra trong URL: index.php?option=com_hello&task=sometask. N u không có nhi m v nào ư c thi t l p thì nhi m v m c nh ‘display’ s ư c gi nh. Khi ‘display’ ư c s d ng, bi n ‘view’ s quy t nh cái gì s ư c hi n th . Các nhi m v khác như ‘save’, ‘edit’, ‘new’, … Controler có th quy t nh redirect the page (th c hi n t i l i m t trang), thông thư ng là sau khi m t nhi m v như ‘save’ ư c hoàn thành. Câu l nh cu i cùng th c hi n vi c này. i m vào chính (hello.php) v b n ch t ã thông qua vi c i u khi n controler th c hi n các nhi m v ư c t ra trong request. 5.2. T o controler Component c a chúng ta ch có m t nhi m v - greet the world (th hi n l i chào). B i v y controler s r t ơn gi n. Không c n n vi c tính toán trên d li u. T t c nh ng gì c n thi t ph i làm là t i view thích h p. Chúng ta s ch có m t phương th c trong controler là display(). H u h t các hàm c n thi t ư c xây d ng trong l p JControler, b i v y t t c nh ng gì chúng ta c n là g i phương th c JControler::display(); Code c a controler cơ s như sau:
  7. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 * Hello World Component Controller * * @package Joomla.Tutorials * @subpackage Components */ class HelloController extends JController { /** * Method to display the view * * @access public */ function display() { parent::display(); } } ?> Vi c kh i t o c a JController s luôn luôn ăng ký m t nhi m v display() khi không có nhi m v c th nào ư c ch ra (b ng vi c s d ng phương th c registerDefaultTask()), nó s ư c thi t l p như m t nhi m v m c nh. Phương th c display() này th t s không c n thi t b i vì t t c nh ng gì nó làm là g i hàm kh i t o c a cha nó. Tuy nhiên, ó là m t cơ s khá t t ch ra i u gì c n ph i làm trong controler. Phương th c JController::display() s xác nh view và layout t request, t i view ó và thi t l p layout. Khi b n t o ra m t menu item cho component c a b n, menu manager s cho phép admin l a ch n view mà h thích th hi n và trên layout c th . M t view thông thư ng ư c xem như m t cách hi n th c a m t t p các d li u nào ó (ví d , danh sách các car, danh sách các event, m t car ơn, m t event ơn, …). M t layout là m t cách t ch c view. Trong component c a chúng ta chúng ta s có m t view ơn ư c g i là hello, và m t layout ơn (default). 5.3. T o view Nhi m v c a view là r t ơn gi n: nó nh n d li u ư c th hi n và t nó lên template. D li u ư c t lên template s d ng phương th c JView::assignRef. o n mã c a view như sau:
  8. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 * @package Joomla.Tutorials * @subpackage Components * @link http://dev.joomla.org/component/option,com_jd- wiki/Itemid,31/id,tutorials:modules/ * @license GNU/GPL */ // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.view'); /** * HTML View class for the HelloWorld Component * * @package HelloWorld */ class HelloViewHello extends JView { function display($tpl = null) { $greeting = "Hello World!"; $this->assignRef( 'greeting', $greeting ); parent::display($tpl); } } ?> 5.4. T o template Joomla template/ layout là các file PHP thông thư ng, ư c s d ng b trí, x p t d li u t view theo m t cách c th nào ó. Các bi n ư c gán b i phương th c JView::assignRef có th ư c truy c p t template s d ng $this→{propertyname} (xem mã template bên dư i như m t ví d ). Template c a chúng ta r t ơn gi n, chúng ta ch mu n th hi n m t l i chào h p quy cách t view. 5.5. óng gói t t c - T o ra file hello.xml Copyleft by oàn Thanh Tám Trang 7/41 Email: tamdt_a9tth@yahoo.com
  9. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 Có th cài t th công m t component b ng cách copy t t c các file b ng FPT client và hi u ch nh CSDL. Nhưng s hi u qu hơn n u t o ra m t file ư c óng gói Joomla! Installer th c hi n i u này cho b n. File óng gói này s ch a nhi u d ng thông tin khác nhau như: • Các miêu t chi ti t cơ b n v component c a b n (ví d như tên), và tùy ý m t s mô t thông tin v b n quy n …. • M t danh sách các file c n copy. • M t file PHP th c hi n b sung các thao tác cài t và g b (file này là không b t bu c). • M t file SQL có ch a các câu truy v n d li u mà s ư c th c hi n vào lúc cài t ho c g b (file này là không b t bu c). nh d ng c a file XML như dư i ây: Hello 2007 02 22 John Doe john.doe@example.org http://www.example.org Copyright Info License Info Component Version String Description of the component ... index.html hello.php controller.php views/index.html views/hello/index.html Copyleft by oàn Thanh Tám Trang 8/41 Email: tamdt_a9tth@yahoo.com
  10. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 views/hello/view.html.php views/hello/tmpl/index.html views/hello/tmpl/default.php Hello World! index.html admin.hello.php N u b n ã xem xét file này m t cách c n th n b n s nh n th y r ng có m t vài file s ư c copy mà chúng ta chưa c p trên. Chúng là các file index.html. M t file index.html ư c t trong m i thư m c ngăn c n nh ng ngư i dùng tò mò trong vi c li t kê m t danh sách thư m c. N u không có file index.html m t vài máy ch web s li t kê danh sách n i dung c a thư m c. i u này thư ng gây r c r i. Các file này có m t dòng ơn như sau: (Nó ơn gi n là th hi n m t trang tr ng) File khác là admin.hello.php, ây là i m vào cho section qu n tr trong component c a chúng ta. B i vì chúng ta chưa có section qu n tr trong component vào th i i m này nên nó s có n i dung tương t như file index.html. 6. Nh ng ngư i vi t và a ch download ví d Nh ng ngư i tham gia vi t bài hư ng d n này: • mjaz • staalanden Component có th ư c download t i: http://dev.joomla.org/components/com_jd-wiki/data/media/components/com_hello1.zip Copyleft by oàn Thanh Tám Trang 9/41 Email: tamdt_a9tth@yahoo.com
  11. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 PH N 2. B SUNG MODEL VÀO COMPONENT MVC. (Ph n hư ng d n này ư c d ch t trang web: http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,components:hello_world_mvc2/). 1. Gi i thi u Trong bài hư ng d n u tiên ( ph n 1), chúng ta ã mô t vi c t o thành m t component view-controler ơn gi n s d ng Joomla! Frameword. Trong bài u tiên, l i chào m ng ã ư c code c nh vào trong view. i u này không tuân theo m u MVC m t cách chính xác b i vì view ch ư c hi n th d li u ch không ch a nó. Trong ph n th hai này, chúng ta s mô t làm th nào chuy n d li u ra kh i view và ưa nó vào m t model. Trong các bài hư ng d n ti p theo chúng ta s mô t kh năng và s m m d o mà m u thi t k cung c p. 2. T o ra m t model Khái ni m model ư c g i tên như th b i vì l p này ư c mong i s mô hình hóa cho m t vài th c th nào ó. Trong trư ng h p c a chúng ta, model u tiên s ưa ra m t l i chào m ng. i u này phù h p v i thi t k hi n t i, b i vì chúng ta ã có m t view ‘hello’, view ó th hi n m t câu chào m ng t i ngư i dùng. Cách thông thư ng t tên cho các model trong Joomla! Frameword là tên l p b t u b ng tên c a component (trong trư ng h p c a chúng ta là ‘hello’), ti p theo là ‘model’, và cu i cùng là là tên c a model. B i th l p model c a chúng ta ư c g i là HelloModelHello. th i i m này chúng ta ch mô hình hóa cách x lý c a model hello, và nó s tr l i m t l i chào. Chúng ta s có m t phương th c ư c g i là getGreeting(). Phương th c này ơn gi n là tr l i chu i “Hello, World”. Dư i ây là code cho model c a chúng ta:
  12. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 * * @package Joomla.Tutorials * @subpackage Components */ class HelloModelHello extends JModel { /** * Gets the greeting * @return string The greeting to be displayed to the user */ function getGreeting() { return 'Hello, World!'; } } Trong o n code trên, chú ý dòng b t u là l nh jimport. Hàm jimport ư c s d ng t i các file t Joomla! frameword c n thi t cho component c a chúng ta. C th câu l nh trên s t i file /libraries/joomla/application/component/model.php. Các d u ch m ‘.’ ư c s d ng như các d u phân cách thư m c, và ph n cu i cùng là tên file c n t i. T t c các file ư c t i t thư m c libraries. File trong trư ng h p trên có ch a nh nghĩa c a l p JModel, i u này là c n thi t vì l p c a chúng ta ư c k th a t l p này. Bây gi chúng ta ã t o ra model c a mình. Ti p theo chúng ta s ph i hi u chính view nó có th l y ư c l i chào. 3. S d ng model Joomla! Frameword ư c thi t l p theo cách controler s t ng t i model có tên trùng v i view và t nó vào trong view. Vì view c a chúng ta ư c t là ‘hello’, nên model ‘hello’ c a chúng ta s t ng ư c t i và ư c t vào trong view. B i v y chúng ta s d dàng nh n ư c m t tham chi u n model c a chúng ta s d ng phương th c JView::getModel(). o n mã cho view trư c c a chúng ta có ch a dòng: $greeting = "Hello World!"; s d ng model, chúng ta chuy n i dòng trên thành: $model =& $this->getModel(); $greeting = $model->getGreeting(); Bây gi , code c a view s như sau: Copyleft by oàn Thanh Tám Trang 11/41 Email: tamdt_a9tth@yahoo.com
  13. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 4. B sung file vào package T t c nh ng gì còn l i c n ph i làm là b sung m t entry vào file XML model m i c a chúng ta ư c copy. Joomla! Frameword s tìm ki m model c a chúng ta trong thư m c models. B i v y entry cho file này trông như sau: models/hello.php File hello.xml m i c a chúng ta s như sau: Copyleft by oàn Thanh Tám Trang 12/41 Email: tamdt_a9tth@yahoo.com
  14. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 Hello 2007 02 22 John Doe john.doe@example.org http://www.example.org Copyright Info License Info Component Version String Description of the component ... index.html hello.php controller.php views/index.html views/hello/index.html views/hello/view.html.php views/hello/tmpl/index.html views/hello/tmpl/default.php models/index.html models/hello.php Hello World!
  15. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 to copy FROM in the package to install therefore files copied in this section are copied from /admin/ in the package --> index.html admin.hello.php 5. K t lu n Chúng ta ã có m t component MVC ơn gi n. M i ph n t là r t ơn gi n vào th i i m này, nhưng nó cung c p m t kh năng và s linh ho t r t l n. 6. Nh ng ngư i vi t và a ch download ví d Nh ng ngư i tham gia vi t bài hư ng d n này: • staalanden Component có th ư c download t i: http://dev.joomla.org/components/com_jd-wiki/data/media/components/com_hello2.zip Copyleft by oàn Thanh Tám Trang 14/41 Email: tamdt_a9tth@yahoo.com
  16. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 PH N 3. S D NG CSDL TRONG COMPONENT MVC. (Ph n hư ng d n này ư c d ch t trang web: http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,components:hello_world_mvc3/). 1. Gi i thi u Trong hai bài hư ng d n u tiên (ph n 1 và ph n 2) chúng tôi ã hư ng d n các b n làm th nào xây d ng m t component MVC ơn gi n. Chúng ta ã có m t view l y d li u t model (trong bài hư ng d n th 2). Trong bài này chúng ta s làm vi c v i model. Thay vì vi c d li u ư c code tr c ti p trong model, thì model s l y d li u t m t b ng trong CSDL. 2. L y d li u Model hi n t i c a chúng ta có m t phương th c getGreeting(). Phương th c này r t ơn gi n, t t c nh ng gì nó làm là tr v m t câu chào ư c code c nh. làm nh ng i u này thú v hơn, chúng ta s l y câu chào t b ng cơ s d li u. Trong ph n sau, chúng ta s mô t làm cách nào t o ra m t file SQL và b sung các o n mã phù h p vào file XML t o ra b ng và b sung d li u m u vào b ng khi component ư c cài t. Bây gi , chúng ta ch ơn gi n thay th câu l nh tr v trong hàm getGreeting b ng o n code l y l i chào m ng t CSDL và tr l i l i chào m ng ó. u tiên, chúng ta c n l y ư c m t tham chi u n i tư ng CSDL. Vì joomla s d ng CSDL cho các thao tác thông thư ng c a nó, nên nó ã có m t k t n i t i CSDL t n t i, b i th không c n thi t ph i t o ra m t k t n i CSDL riêng. Có th l y ư c m t tham chi u t i k t n i b ng cách s d ng câu l nh: $db =& JFactory::getDBO(); JFactory là m t l p static ư c s d ng nh n tham chi u n nhi u i tư ng h th ng khác nhau. Các thông tin thêm v l p này có th tham kh o trong tài li u v API. Tên hàm getDBO là vi t t t cho get DataBase Object, có th nh m t cách d dàng và r t quan tr ng. Bây gi chúng ta ã có m t tham chi u n i tư ng CSDL, Chúng ta có th l y d li u. i u này ư c th c qua hai bư c: • Lưu tr câu truy v n c a vào i tư ng CSDL • T i k t qu v Code c a phương th c getGreeting() bây gi s như sau: function getGreeting() { $db =& JFactory::getDBO(); $query = 'SELECT greeting FROM #__hello'; $db->setQuery( $query ); Copyleft by oàn Thanh Tám Trang 15/41 Email: tamdt_a9tth@yahoo.com
  17. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 $greeting = $db->loadResult(); return $greeting; } Trong o n mã trên ‘hello’ là tên c a b ng trong CSDL mà chúng ta s t o ra trong ph n sau. Và ‘greeting’ là tên c a trư ng lưu tr câu chào m ng. N u b n chưa quen v i SQL, s r t h u ích n u b n l y m t bài hư ng d n xem xét l i. Nh ng bài hư ng d n như th b n có th tìm th y w3schools. Phương th c $db→loadResult() s ch y câu l nh truy v n CSDL ã ư c lưu tr và tr v trư ng u tiên c a dòng u tiên trong k t qu . Xem JDatabase API reference có các thông tin nhi u hơn v các phương th c khác trong l p JDatabase. 3. T o ra file SQL trong quá trình cài t và g b component Joomla! installer có xây d ng s n vi c h tr i v i vi c ch y các câu truy v n trong quá trình cài t component. T t c các câu truy v n này ư c lưu tr trong m t file text chu n. Chúng ta s có 3 câu truy v n trong file cài t: vi c u tiên s th c hi n xóa b ng trong trư ng h p nó ã t n t i, ti p theo th c hi n vi c t o ra b ng v i các trư ng phù h p, và cu i cùng là chèn d li u vào b ng v a t o. Dư i ây là các câu truy v n c a chúng ta: DROP TABLE IF EXISTS `#__hello`; CREATE TABLE `#__hello` ( `id` int(11) NOT NULL auto_increment, `greeting` varchar(25) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT DEFAULT CHARSET=utf8; INSERT INTO `#__hello` (`greeting`) VALUES ('Hello, World!'), ('Bonjour, Monde!'), ('Ciao, Mondo!'); B n có th th y ti n t trong các tên b ng h i kỳ c c. Tuy nhiên, Joomla! s thay th các ti n t này b i ti n t ã ư c xác nh trong quá trình cài t. i v i h u h t các b n cài t, b ng này s tr thành jos_hello. i u này cho phép nhi u b n cài t joomla có th s d ng chung CSDL, và ngăn ch n các xung t v i các ng d ng khác s d ng cùng tên b ng (ví d , hai ng d ng có th chia s chung m t CSDL, nhưng c hai u c n m t b ng ‘user’, v i cách này v n s ư c gi i quy t). Chúng ta ã xác nh hai trư ng trong CSDL. Trư ng u tiên là ‘id’ óng vai trò là khóa chính. Khóa chính trong m t b ng c a CSDL là trư ng dùng xác nh duy nh t Copyleft by oàn Thanh Tám Trang 16/41 Email: tamdt_a9tth@yahoo.com
  18. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 m t b n ghi trong b ng. Nó thư ng ư c s d ng tìm ki m các hàng trong CSDL. Trư ng còn l i là ‘greeting’. ây là trư ng lưu câu chào m ng ư c tr l i b i truy v n mà chúng ta ã s d ng trên. Các câu truy v n c a chúng ta s ư c lưu trong file install.utf.sql. T o ra file SQL g b cài t M c dù chúng ta luôn mong mu n ngư i dùng s không bao gi mu n g b component c a chúng ta, tuy nhiên có m t i u quan tr ng là n u h th c hi n vi c ó chúng ta không ư c l i b t c th gì sau khi g b . Joomla! s qu n lý vi c xóa các file và các thư m c ư c t o ra trong quá trình cài t, nhưng b n ph i b sung th công các câu truy v n s lo i b các b ng ã ư c thêm vào CSDL. Trong ví d , chúng ta ch t o m t b ng, nên chúng ta ch c n m t câu truy v n xóa nó. DROP TABLE IF EXISTS `#__hello`; Câu truy v n này s ư c lưu tr trong file uninstall.utf.sql. 4. C p nh t file cài t Chúng ta c n ph i thay i m t vài th trong file cài t XML. u tiên, chúng ta c n b sung hai file m i vào danh sách các file. File cài t SQL s ph i ưa vào trong thư m c admin. Th hai, chúng ta c n ph i báo cho trình cài t ch y các câu truy v n trong các file c a chúng ta trong quá trình cài t và quá trình g b . File XML m i c a chúng ta s như sau: Hello 2007 02 22 John Doe john.doe@example.org http://www.example.org Copyright Info License Info Component Version String Description of the component ... Copyleft by oàn Thanh Tám Trang 17/41 Email: tamdt_a9tth@yahoo.com
  19. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 index.html hello.php controller.php views/index.html views/hello/index.html views/hello/view.html.php views/hello/tmpl/index.html views/hello/tmpl/default.php models/hello.php install.sql uninstall.sql Hello World! index.html admin.hello.php install.sql uninstall.sql Copyleft by oàn Thanh Tám Trang 18/41 Email: tamdt_a9tth@yahoo.com
  20. Tài li u hư ng d n xây d ng component trong Joomla! 1.5 Chú ý n hai thu c tính xu t hi n trong các th n m trong các ph n và : charset và driver. Charset là ki u charset ư c s d ng. Ch có charset h p l là utf8. N u b n mu n t o ra các file cài t cho CSDL không ph i là utf8 b n s b qua thu c tính này. Thu c tính driver xác nh CSDL nào các câu truy v n ư c vi t cho. Hi n t i, thu c tính này ch có th là mysql, nhưng các phiên b n joomla trong tương lai có th có nhi u d ng CSDL hơn. 5. K t lu n Cho n bây gi chúng ta có m t component t n d ng ư c các thu n l i c a c các l p Joomla! MVC framework và l p JDatabase. Bây gi b n ã có kh năng vi t các component MVC tương tác v i CSDL và có th s d ng Joomla! Installer t o và thao tác trên các b ng CSDL. 6. Nh ng ngư i vi t và a ch download ví d Nh ng ngư i tham gia vi t bài hư ng d n này: • staalanden Component có th ư c download t i: http://dev.joomla.org/components/com_jd-wiki/data/media/components/com_hello3.zip Copyleft by oàn Thanh Tám Trang 19/41 Email: tamdt_a9tth@yahoo.com

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản