Luyenkim.Net!

...where your idea grows!

 
  • Decrease font size
  • Default font size
  • Increase font size
Trang chủ arrow Công nghệ thông tin arrow What's mambot là gì - cách tạo và ứng dụng mambot
What's mambot là gì - cách tạo và ứng dụng mambot PDF In E-mail
(2 votes)
23/11/2007

Giới thiệu

Mambot là 1 kịch bản nhúng và sẽ được chạy trong các sự kiện (event) từ phần mã của Mambo/Joomla. Có nhiều kiểu khác nhau về mambot. Nhưng kiểu chung nhất và đó là kiểu mà chúng ta sẽ trao đổi trong bài viết này về mambot nội dung (content mambot).

Mambot nội dung sẽ thực thi bên trong hàm content.html.php để thay thế cách mục nội dung được hiển thị. Sử dụng chung nhất là để thay thế dạng TAG của mambot {mymambot} bằng một nội dung nào đó được phát sinh từ kịch bản mambot. Cho mục đích này, chúng ta sẽ gọi các thay thế này từ mambot.

Có bốn sự kiện của nội dung content.php.html sẽ tạo ra thực thi mambot:

  1. onPrepareContent - thi hành trước tất cả các quá trình xử lý khác sẽ được thực hiện trong nội dung.
  2. onAfterDisplayTitle - thi hành ngay lập tức sau khi hiển thị tiêu đề bài viết (title).
    Chú ý: sự kiện này không thi hành nếu chúng đang chỉ hiển thị phần giới thiệu (introtext).
  3. onBeforeDisplayContent - thi hành ngay sau khi hiển thị tiêu đề bài viết.
  4. onAfterDisplayContent - thực thi ngay sau ngày sửa đổi/chi tiết (modified date/read more).

Nào chúng ta hãy xem xét 1 mambot thay thế đơn giản chúng ta sẽ gọi là 'Hello World'.

Gài đặt

File cài đặt xml tuơng tự như hầu hết các file cài đặt của Mambo/Joomla khác. Có hai sự khác biệt:

  1. Tham số nhóm trong TAG mosinstall
  2. Thông số mambot trong TAG filename

Tham số nhóm mosinstall cho biết kiểu của mambot chúng ta đang cài đặt. Ở trường hợp này, đó là mambot đối với nội dung.

Tham số filename được sử dụng cho tham chiếu nội bộ. Trong hầu hết các trường hợp, nó có dạng tên file bỏ đi phần mở rộng.

<?xml version="1.0" encoding="iso-8859-1"?>
<mosinstall version="4.5.4" type="mambot" group="content">
<name>Hello World!</name>
<author>Author</author>
<creationDate>December 2007</creationDate>
<copyright>Author</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<authorEmail>author @ test.com</authorEmail>
<authorUrl>www.test.com</authorUrl>
<version>1.0</version>
<description>Displays Hello World in content items</description>
<files>
<filename mambot="helloworld">helloworld.php</filename>
</files>
<params>
<params/>
</mosinstall>

Mã chuơng trình mambot

Mã chuơng trình sau đây là 1 mambot có 1 nhiệm vụ và từ mambot này bạn có thể hình dung ra các ứng dụng cụ thể cho mình. Chỉ việc nén dạng zip file này với file xml cài đặt trên và bạn có thể cài đặt nó. Tên của file cài đặt helloworld.xml và file mã chưong trình php là helloworld.php.

<?php
/*** @version $Id: helloworld.php,v 1.0 2006/12/06 02:00:00 author Exp $*
@package Hello World Mambot*
@copyright (C) Author*
@license http://www.gnu.org/copyleft/gpl.html GNU/GPL*
Hello World Mambot is Free Software*/
/** ensure this file is being included by a parent file */
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
$_MAMBOTS->registerFunction( 'onPrepareContent', 'botHelloWorld' );
function botHelloWorld( $published, &$row, &$params, $page )
{
// replacement text
$replace = '<b>Hello World!</b>';
// expression to search for
$regex = '/{helloworld}/i';
// don't replace if not published or intro text only or a popup
if (!$published || $params->get( 'intro_only' )|| $params->get( 'popup' ))
{
$row->text = preg_replace( $regex, '', $row->text );
return;
}
// replace the tag with the replacement text
$row->text = preg_replace( $regex, $replace, $row->text );
return true;
}
?>

Phía bên trong mã chuơng trình

Có 1 cặp hàm nắm quyền trong mambot chúng ta cần phải hiểu. Đầu tiên là registerFunction() được sử dụng bởi chuơng trình mambot của chúng nêu trên để báo cho Mambo/Joomla là các hàm của mambot đó sẽ được thực thi khi đó. Và thứ hai là hàm trigger() được sử dụng bởi Mambo/Joomla để thi hành nhóm mambot và các hàm gắn với mambot.

registerFunction() được sử dụng để tập hợp các nhóm mambot và các hàm liên quan của chúng. Có hai tham số. Tham số đầu tiên là tên nhóm được sử dụng nội bộ bở Mambo/Joomla. Tham số thwus hai là tên hàm chúng ta muốn thực thi bên trong mambot của mình.

Hãy xem xét mã lệnh sau từ mambot Hello World:

$_MAMBOTS->registerFunction( 'onPrepareContent', 'botHelloWorld' );	

Tham số đầu tiên là sự kiện - onPrepareContent. Tham số thứ hai là hàm mambot - botHelloWorld(). Vì thế, ở ví dụ này, registerFunction() báo cho Mambo/Joomla phải thi hành hàm botHelloWorld() trước khi làm điều gì đó đối với nội dung.

trigger() là hàm điều hành lõi bên trong của Mambo/Joomla để thực thi nhóm hàm của mambot. Hàm botHelloWorld() ở ví dụ trên từ mambot Hello World thực thi khi Mambo/Joomla gọi hàm sau đây:

$_MAMBOTS->trigger( 'onPrepareContent', array( &$row, &$params, $page ), true );

Chúng ta sẽ không bao giờ sử dụng hàm trigger() trong mambot của mình trừ phi bạn muốn tìm kiếm lõi Mambo đối với tất cả các vị trí nơi mà mambot sẽ được thực thi.

Hoạt động

botHelloWorld() là hàm chúng ta muốn Mambo/Joomla thi hành đối với tất cả các mục nội dung. hãy xem xét nó làm việc thế nào:

function botHelloWorld( $published, &$row, &$params, $page ) 
{

Hãy để ý đến các tham số của hàm. Bây giờ chúng ta so sánh chúng với tham số thwus hai của hàm trigger(). Hàm trigger sẽ truyền dữ liệu tới hàm mambot trên. Bất cứ lúc nào khi chúng ta viết mambot, bạn có thể tìm kiếm mã lõi đối với hàm trigger() để tìm dữ liệu nào là sẵn sàng đối với mambot của bạn.

Trong trường hợp này, chúng ta có 2 dữ liệu có thể thao tác:

  1. $row - bản ghi dữ liệu mục nội dung (hay mục tin)
  2. $params - tham số của mục nội dung (hay mục tin)
  3. $page - số trang đối với mục tin gồm nhiều trang

Chú ý: có thêm biến $published không làm xuất hiện các tham số của trigger(). Xem hàm trigger() để có thêm thông tin chi tiết và điều nó có thể làm.

Phuơng thức thay thế đơn giản

Trong ví dụ Hello World, chúng ta đã làm 1 thay thế đơn giản. Mỗi vị trí xuất hiện của tag {helloworld} sẽ được thay thế bằng Hello World!. Do chúng ta có thể truy cập mục tin, chúng ta có thể thay thế $row->text bằng cách chúng ta muốn. Hãy ghi nhớRemember, $row->text là tổ hợp của $row->introtext và $row->fulltext. Chúng ta cũng có thể sử dụng $row->published đẻbieets mục tin có được công bố hay không. Hãy bắt đầu nào.

Trước tiên, chúng ta cần thiết lập giá trị thay thế:

$replace = '<b>Hello World!</b>';	

Tiếp theo, chúng ta cần xác lập giá trị tìm kiếm. Đối với các thay thế của mambot trên, chúng ta sử dụng xâu ký tự đặc biệt gọi là biểu thức quy ước. Biểu thức quy ước hơi phức tạp so với bài viết này , vì thế chúng ta bỏ qua nó và chấp nhận biểu thức sau:

$regex = '/{helloworld}/i';

Bước tiếp theo là quan trọng. Chúng ta không muốn có sự thay thế trong 1 số trường hợp nhất định. Và nếu chúng ta không muốn hiển thị thay thế, chúng ta cần xóa bỏ tag {helloworld}. Vì thế chúng ta sử dụng preg_replace() để thay thế tag trên bằng giá trị rỗng:

if (!$row->published || $params->get( 'intro_only' )|| $params->get( 'popup' )) 
{
$row->text = preg_replace( $regex, '', $row->text );
return;
}

Chúng ta gần như đã hoàn tất. Bây giờ tất cả những việc cần làm là thay thế các tag {helloworld} bằng Hello World! Chúng ta sẽ sử dụng use preg_replace() để làm điều đó:

$row->text = preg_replace( $regex, $replace, $row->text );

Vậy đó. Cách thay thế an toàn đã xong. chúng ta hãy tiếp bước và báo cho Mambo/Joomla rằng mambot của chúng ta đã thwucj thi thành công và đóng hàm của chúng ta lại:

return true;
}

Kết luận

Hy vọng rằng, từ nay bạn có những hiểu biết tốt hơn về cách mambot làm việc. Có nhiều thú vị đang ở phía trước bạn có thể làm với mambot. Hãy xem xét các mã chương trình trong thư mục /mambot/. Hãy đào sâu. Có kinh nghiệm. Và khi bạn có cơ hội, hãy viết tiếp các mambot có giá trị cho cộng đồng. 


Biên dịch và giới thiệu: Nguyễn Hoàng Việt - Luyenkim.Net
Tin liên quan:
Tin mới hơn:
Tin cũ hơn:

 

Please install Flash and turn on Javascript.

Đăng nhập






Bạn quên mật khẩu?
Chưa có tài khoản? Tạo một tài khoản

Liên kết website

Luyenkim.net
joomlaviet.org
thietbidien.vn
onbai.com
Thư viện cộng đồng
vnfolk.com

Thống kê

Chúng ta có 11 khách trực tuyến