Thực ra joomla 1.5 sắp hết thời,nhưng cộng đồng anh em dùng nó vẫn rất đông,nói như quân Nguyên chắc cũng không sai và cái nữa việc chuyển đổi module từ 1.5 sang 2.5 không phải là vấn đề khó nên hôm nay em muốn hướng dẫn những newbie mới dùng joomla cách viết module cho joomla 1.5 mà không phải 2.5.Vì vậy mong anh em đừng thắc mắc về phiên bản của module. Vào đề luôn.Module hôm nay em viết có chức năng đếm lượt truy cập cho website. (Module này không có ứng dụng thực tế cho lắm,vì có quá nhiều module pro kiểu này rồi,nhưng đây là tut thôi mà các bác,càng dễ hiểu càng vui ) Trước tiên ta cần quan tâm tới quy tắc đặt tên module và chỗ để của module.Chỗ để thì chắc chắc là trong thư mục modules của joomla rồi.Còn quy tắc thì thư mục của module phải có dạng mod_abc trong đó abc là tên module,ở đây em chọn là mod_mycounter Trong 1 module joomla có 4 file chính (4 file căn bản) mod_abc.php, helper.php, mod_abc.xml, detail.php (file này nằm trong 1 thư mục có tên là tmpl chứa trong thư mục chính của module) ngoài ra còn 2 file index.html Bây giờ ta đi vào chi tiết từng file của module. Em có hướng dẫn luôn trong file,sau khi đọc,nếu nhìn không rõ trên diễn đàn,mọi người có thể down file đính kèm về tham khảo cho rõ nhé. 1. File mod_mycounter.php PHP: <?php/**Nhiệm vụ của file này Include file helper.php,nơi chứa những class được sử dụng để thu nhặt những dữ liệu cần thiết.Gọi những phương thức thích hợp từ class helper để lấy dữ liệu.Include giao diện để thể hiện ra layout. */ //Không cho phép truy cập vào file này từ một đường dẫn ngoài trang web,có chức năng bảo mật.defined( '_JEXEC' ) or die( 'Restricted access' ); //Include file helper.php,nơi chứa những class được sử dụng để thu nhặt những dữ liệu cần thiết.require_once( dirname(__FILE__).DS.'helper.php' ); //Gọi những phương thức thích hợp từ class helper để lấy dữ liệu.Thể hiện chức năng của module$counter = modCounterHelper::getCounter( $params ); //Dòng này là mặc định nhé --> thể hiện layout như đã nói ở trênrequire( JModuleHelper::getLayoutPath( 'mod_mycounter' ) );?> 2. File mod_mycounter.xml PHP: <!--Nhiệm vụ của file này là:Chứa tất cả các thông tin của module --> <?xml version="1.0" encoding="utf-8"?><install type="module" version="1.5.0"> <!-- Tên Module --><name>My counter</name> <!-- Tên tác giả --><author>Đào Đại Dương</author> <!--Ngày ra phiên bản hiện tại của module --><creationDate>01-06-2012</creationDate> <!-- Copyright information --><copyright>All rights reserved by Đào Đại Dương.</copyright> <!-- Email tác giả --><authorEmail>[email protected]</authorEmail> <!-- Phiên bản hiện tịa module --><version>1.0.0</version> <!-- Mô tả qua về module --><description>Module đếm lượt truy cập cho joomala 1.5</description> <!-- Danh sách các file sẽ được cài đặt cho module --><files> <filename>mod_mycounter.xml</filename> <filename module="mod_mycounter">mod_mycounter.php</filename> <filename>index.html</filename> <filename>helper.php</filename> <filename>tmpl/default.php</filename> <filename>tmpl/index.html</filename></files> <!-- Tham số parameter --><params></params></install> 3. File helper.php PHP: <?php/**File này chứa những class sẽ được truy xuất và sử dụng ở file mod_mycounter.php*/ //Không cho phép truy cập vào file này từ một đường dẫn ngoài trang web,có chức năng bảo mật.defined( '_JEXEC' ) or die( 'Restricted access' ); class modCounterHelper{ function getCounter( $params ) {//Khởi tạo biến check và gán giá trị cho Session khi truy cập web$check=$_SESSION["counter"];//Khai báo,thao tác với file$rfile=file("counter.txt");//Gán biến đếm cho giá trị trong file$counter=$rfile[0];//Nếu giá trị check chưa được gán thì...if(!isset($check)){//Gán giá trị cho Session, từ lần tiếp theo $check sẽ có giá trị xác định$_SESSION["counter"]=1;$counter++;//Ghi thêm lượt cho file counter.txt$fp=fopen("counter.txt","w");fwrite($fp,$counter);fclose($fp);}//Trả ra giá trị của biến $counter cho hàm getCounter() và giá trị này sẽ được lấy ở file mod_mycounter.phpreturn $counter;}}?> 4. File Default.php PHP: <?php/**File này có chức năng hiển thị output cho moduleCó một lưu ý quan trọng khi khỏi tạo file default.php làFile này phải có cùng phạm vi truy cập với file mod_mycounter.php.Có thể hiểu là biến $counter phải được định nghĩa trong file mod_mycounter.php and then used in the template file without any extra declarations or function calls. File này được đặt trong thư mục tmpl được để ngang hàng với 3 file còn lại trong module*/ //Không cho phép truy cập vào file này từ một đường dẫn ngoài trang web,có chức năng bảo mật.defined( '_JEXEC' ) or die( 'Restricted access' ); ?><?php echo '<h1>'.'Lượt truy cập thứ : '.'</h1>'.'<center>'.$counter.'</center>'; ?> Ngoài ra trong 4 file trên còn có 1 file language và 2 file index.html có cấu trúc HTML: <html><body bgcolor="#FFFFFF"></body></html> Thực ra 2 file index này chẳng có nhiệm vụ gì to tát ngoài việc nhằm không cho người xem tò mò liệt kê các file hiện hành trong thư mục module. Còn file language có nhiệm vụ thể hiện những từ viết tắt cho module,mọi người có thể tham khảo mấy file language trong bộ cài joomla,vì module này không thực sự cần thiết có file lang nên mình đã lược bỏ nó đi cho bớt phức tạp. Trên đây là cách viết một module đơn giản cho joomla 1.5, mời mọi người xem và cho ý kiến Dưới đây là bản đính kèm đầy đủ của module.Anh em tận hưởng nhé Ah còn chút lưu ý,để lược bớt độ phức tạp cho code php đếm lượt truy cập,mình đã không thêm vào đó quá trình kiểm tra Ip và cookies nên sau khi tắt web đi và mở lại counter sẽ tự tăng lên 1 đơn vị vì lúc đó là kết thúc 1 phiên Session mà
Mình làm được cái đó, nhưng mình thấy các mod trên mạng, down về có file zip, và cài vào, vậy muốn làm cái đó thì phải làm thế nào vậy daiduong47?