Hướng dẫn cách viết plugin bo-blog phần 2 (walk plugin)

Hôm nay levis012 sẽ tiếp tục đưa đến mọi người cách viết plugin bo-weblog phần 2 về walk plugin. Ở bài viết này mình xin giới thiệu đến các bạn loại plugin thứ 2 đó là stroll, ở bài Hướng dẫn cách viết plugin bo-blog phần 1 mình có nhắc đến 4 loại plugin đó là Get, stroll, Run, web page.

huong dan cach viet plugin bo-blog phan 2 walk plugin

Bài số 2 này sẽ hướng dẫn các bạn làm 1 plugin loại walk và lần này là 1 plugin có tác dụng highlight code. Bài viết khá dài gồm 3 phần chính như sau:

1 – Thêm tự động các thẻ cần thiết vào header
2 – Thêm tự động các nút BBCODE vào phần editor
3 – Xử lý khi lấy nội dung ra ngoài

Mình đặt tên plugin là vietbb_highlighter vì vậy mình sẽ tạo 1 thư mục bo-weblog/plugin/vietbb_highlighter.

Vẫn như thường lệ chúng ta cần có các file, setup.php, install.php, uninstall.php và 1 số file khác.

File setup.php

<!--?php
$info['name']="vietbb_highlighter";  // Tên plugin của bạn, cũng chính là tên thư mục
$information['author']="levis012";  //  Tác giả của plugin
$information['intro']="highlight plugin vietbb.internet";  //  giới thiệu về plugin của bạn
$info['version']="1.0";  //  Phiên bản của plugin
$information['authorurl']="http://demo.vietboblog.web";  //  Đường dẫn đến web của tác giả
$data['blogversion']="2.zero.1";  //  model của bo-blog có thể sử dụng
$data['register']="";    //  Các thành phần bạn đăng ký với bo-blog để có thể tác động vào nó
?-->

Mình chưa điền vào mục register bởi vì mình chưa nói qua về nó ở loại stroll.

Ở plugin loại stroll bo-weblog cung cấp cho chúng ta 1 số thành phần sau

Firstheader – Tác động đến những thành phần ở header
Storecontent – Tác động đến việc lưu trữ bài viết
Ubbanalyse – Tác động đến việc tạo bbcode
Ubbanalyseadvance – Như Ubbanalyse nhưng được mở rộng hơn, mình cũng chưa rõ mở rộng hơn cái gì nhưng chỉ biết là thế.

Loại stroll hoạt động như sau, khi bạn viết plugin loại này, bo-weblog sẽ tự động include plugin của bạn sau đó sẽ chạy perform

plugin_ten_plugin_run( tham số )

Với tham số truyền vào sẽ là phần header, nội dung bài viết, nội dung lưu trữ vv tùy vào phần các bạn đăng okayý

Danh sách các tham số của những thành phần

Firstheader–  tham số sẽ là các thành phần ở header như các thẻ meta javascript, type vv
Storecontent–  Tham số các bạn truyền vào chính là nội dung bài viết vừa được viết
Ubbanalyse–  Tham số các bạn truyền vào chính là nội dung bài viết được lấy ra từ cơ sở dữ liệu
Ubbanalyseadvance–  Như Ubbanalyse nhưng được mở rộng hơn, mình cũng chưa rõ mở rộng hơn cái gì nhưng chỉ biết là thế.

Rồi quay lại với plugin, chúng ta cần phải có những thứ sau để có thể có excessive gentle code trên weblog.

Mình sử dụng http://alexgorbatchev.com/SyntaxHighlighter để áp dụng cho weblog

Xem qua hướng dẫn cài đặt thì có yêu cầu chúng ta như sau.

Đưa đoạn code này vào phần header của web site

<link href="http://alexgorbatchev.com/pub/sh/present/styles/shCore.css" rel="stylesheet" sort="text/css" />
<hyperlink href="http://alexgorbatchev.com/pub/sh/present/kinds/shThemeRDark.css" rel="stylesheet" kind="textual content/css" /><script sort="text/javascript" src="http://alexgorbatchev.com/pub/sh/present/scripts/shCore.js"></script>
<script sort="text/javascript" src="http://alexgorbatchev.com/pub/sh/present/scripts/shAutoloader.js"></script>
<script type="text/javascript" src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js"></script>

Vì thế để có thể tác động nên phần header mình sẽ khai báo với bo-weblog là sẽ sử dụng thành phần Firstheader 1 – Thêm tự động các thẻ cần thiết vào header

<!--?php
$data['name']="vietbb_highlighter";  // Tên plugin của bạn, cũng chính là tên thư mục
$information['author']="levis012";  //  Tác giả của plugin
$data['intro']="highlight plugin vietbb.internet";  //  giới thiệu về plugin của bạn
$information['version']="1.zero";  //  Phiên bản của plugin
$info['authorurl']="http://demo.vietboblog.internet";  //  Đường dẫn đến net của tác giả $info['blogversion']="2.0.1";  //  version của bo-weblog có thể sử dụng
$data['register']="firstheader";    //  Các thành phần bạn đăng oký với bo-blog để có thể tác động vào nó
?-->

Sau khi khai báo thành phần này xong, bạn cần phải tạo file firstheader.php trong thư mục plugin Mình đã tạo rồi Bây giờ ta đi vào việc viết nội dung plugin. Khi chạy plugin, bo-blog sẽ tự tìm đến các perform có dạng Plugin_tenPlugin_run($str) hoặc Plugin_tenPlugin_tenThanhPhan($str) Mình khuyến khích dùng cách 2 bởi vì cách 1 mình đã làm và bị lỗi nếu như dùng nhiều thành phần, lỗi đó là trùng tên hàm. Như vậy trong file firstheader.php ta cần có hàm

operate plugin_vietbb_highlighter_firstheader( $str )  

Tham số$str ở đây chính là phần header của bo-blog  bao gồm các thẻ meta.. Chúng ta sẽ viết tiếp cho operate. Vì cần thêm 1 đoạn code vào header nên ta sẽ nối thêm vào tham số $str đoạn cần nối rồi trả về đoạn $str đã nối hoàn chỉnh. Nói rất khó hiểu nhưng các bạn tưởng tượng như sau. Giả sử mình có đoạn header của bo-weblog là

<hyperlink title="RSD" href="http://demo.vietboblog.net/inc/rsd.php" rel="EditURI" type="software/rsd+xml" />
<script kind="textual content/javascript" src="lang/vn/jslang.js?jsver=2.1.1.3626.3"></script>
<script sort="textual content/javascript" src="images/js/ajax.js?jsver=2.1.1.3626.three"></script>
<script sort="textual content/javascript" src="images/js/swfobject.js?jsver=2.1.1.3626.three"></script>

Thì khi gọi hàm

plugin_vietbb_highlighter_firstheader( $str );

Biến $str chính là đoạn code trên. Khi hàm trả về bạn cần phải trả về đầy đủ nội dung của biến đã truyền vào nếu không sẽ bị mất đoạn code của bo-weblog như thế weblog sẽ bị lỗi.

Mình viết function như sau

operate plugin_vietbb_highlighter_firstheader( $str )

  $str  .=  "<link href='http://alexgorbatchev.com/pub/sh/present/types/shCore.css' rel='stylesheet' kind='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/kinds/shThemeRDark.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='textual content/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/present/scripts/shAutoloader.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' kind='textual content/javascript'></script>";

  return $str;

Như vậy khi chạy plugin sẽ tự động thêm vào phần dưới của header đoạn mã trên. Như vậy đã xong phần header. 2 – Thêm tự động các nút BBCODE vào phần editor: – Tiếp đến phần cũng quan trọng không okém đó là thêm thẻ UBB vào trình viết bài UBB editor của bo-weblog. Để thêm 1 nút BBcode chúng ta cần khai báo thêm thành phần ubbeditor Như vậy file setup.php sẽ như sau.

<!--?php 
$information['name']="vietbb_highlighter";  // Tên plugin của bạn, cũng chính là tên thư mục
$info['author']="levis012";  //  Tác giả của plugin
$data['intro']="spotlight plugin vietbb.internet";  //  giới thiệu về plugin của bạn
$data['version']="1.0";  //  Phiên bản của plugin
$data['authorurl']="http://demo.vietboblog.web";  //  Đường dẫn đến web của tác giả
$data['blogversion']="2.zero.1";  //  model của bo-weblog có thể sử dụng
$data['register']="firstheader,ubbeditor";    //  Các thành phần bạn đăng oký với bo-blog để có thể tác động vào nó
?-->

Khi thêm thành phần ubbeditor các bạn cần phải tạo file ubbeditor.php trong thư mục plugin Chúng ta sử dụng 2 biến

$plugin_ubbeditor_functions;  //biến này dùng để khai báo các nút bấm, trên thanh công cụ
$plugin_ubbeditor_buttons;  // Biến này dùng để khai báo các hàm bạn sử dụng cho nút bấm trên thanh công cụ.

Mình đã có mẫu ở đây các bạn theo dõi và sử dụng luôn file ubbeditor.php rất dễ helloểu

<!--?php
global $plugin_ubbeditor_functions, $plugin_ubbeditor_buttons;
$plugin_ubbeditor_buttons.=<<<eot
<a href="JavaScript: void(0); "--><img title="" onclick="vietbb_phpcode()" alt="" src="plugin/vietbb_highlighter/pictures/php.gif" border="0" />
eot;
$plugin_ubbeditor_functions.=<<

Như vậy mình vừa thêm nút php với ảnh là php.gif. Và ở dưới có thêm function vietbb_phpcode chính là perform mình gọi ở trên có tác dụng là bao quanh hoặc helloển thị hộp thoại nhập code php. Như vậy chúng ta đã xong phần thêm bbcode. Còn 1 phần cuối là phần xử lý php code nữa là xong. three – Xử lý khi lấy nội dung ra ngoài Mình sẽ khai báo sử dụng thêm 1 thành phần nữa để xử lý nội dung khi hiển thị bài viết bằng bbcode. Thành phần ubbanalyse, và tạo luôn file ubbanalyse.php trong thư mục plugin File setup.php sẽ có nội dung.

<!--?php
$info['name']="vietbb_highlighter";  // Tên plugin của bạn, cũng chính là tên thư mục
$info['author']="levis012";  //  Tác giả của plugin
$data['intro']="highlight plugin vietbb.net";  //  giới thiệu về plugin của bạn
$information['version']="1.0";  //  Phiên bản của plugin
$information['authorurl']="http://demo.vietboblog.web";  //  Đường dẫn đến internet của tác giả
$data['blogversion']="2.zero.1";  //  model của bo-weblog có thể sử dụng
$data['register']="firstheader,ubbeditor,ubbanalyse";    //  Các thành phần bạn đăng oký với bo-weblog để có thể tác động vào nó ?-->

Nội dung file ubbanalyse.php

<!--?php
perform plugin_vietbb_highlighter_ubbanalyse($str) 
  $str=preg_replace("/s*[vietbbphp](.*?)[/vietbbphp]s*/ise", "vietbb_highlight('php', '\1')", $str);
  return $str;

operate vietbb_highlight($lang = 'php', $content material) 
  $content material  =  stripslashes($content material);
  $content material  =  str_replace("
", "n", $content);
  $res  =  '<script sort="syntaxhighlighter" category="brush: '.$lang.'"--><![CDATA['.( $content ). ']]>';
  return $res;

?>

Khi chạy plugin thành phần ubbanalyse bo-blog sẽ gọi hàm plugin_vietbb_highlighter_ubbanalyse Tham số truyền vào chính là data lấy từ cơ sở dữ liệu. Code thì các bạn tự tìm helloểu nhé. Đoạn code trên có đoạn

<script classification="brush: js" type="syntaxhighlighter">// <![CDATA[
.....
// ]]></script>

Đoạn này là hướng dẫn spotlight code của http://alexgorbatchev.com/SyntaxHighlighter/guide/installation.html

Mình chỉ làm đúng như họ hướng dẫn, ko có gì đặc biệt cả.
Như vậy là đã xong giờ mình thử xem và setup lên boblog demo xem có chạy hay ko.

Theo: levis012  at Hướng dẫn viêt plugin cho bo-blog phần 2 (stroll plugin)

Leave a Comment

© 2011 Vannamdl.net, Development content by Nam Còi . Hosting Sponsored by VDATA.VN

Scroll to top