Diễn đàn Trái Tim Yên Bái 2024

 Quên mật khẩu
 Đăng ký
Xem: 2047|Trả lời: 2
Thu gọn cột thông tin

Mod Discuz Syntax HighLight BBCODE (màu code) Discuz version 7.0, 7.2

[Lấy địa chỉ]

Viết tâm trạng

Đăng lúc 2-7-2010 06:18 PM | Xem tất |Chế độ đọc

Mời bạn đăng ký để giao lưu kết bạn nhé <3

Bạn phải đăng nhập để xem được nội dung, nếu bạn chưa có tài khoản? hãy Đăng ký

x
Tình hình diễn đàn của mình học tập về C++, php,... nên việc phân biệt màu sắc giữa hàm, biến, chuỗi… rất quan trọng. Discuz cũng hỗ trợ bbcode CODE nhưng mà với giao diện của nó thì các bạn cũng biết chuối quá. Ở Việt Nam mình chưa thấy nhắc đến mod Syntax HighLight cho discuz. Cũng may mắn search google tìm ra mod này. Nay mình viết TUT hướng dẫn các bạn hack mod. Ai thấy hay thanks động viên nhé!

Demo:

                               
Đăng nhập/Đăng ký mở rộng


Demo From web: http://tin32.com/diendan/viewthread.php?tid=451489
Tính năng: HightLight tất cả các loại ngôn ngữ: C/C++, C#, HTML, CSS, JAVASCRIPT, PHP, JAVA, DELPHI, RUBY, SQL, VB, XML,….
Sử dụng luôn thẻ CODE mà discuz hỗ trợ

Các files cần chỉnh sửa: Ở đây TUT tôi hướng dẫn trên Discuz version 7.2
-        ROOT_DZ/viewthread.php
-        ROOT_DZ/include/discuzcode.func.php
-        ROOT_DZ/templates/default/header.htm hoặc ROOT_DZ/templates/your_dir_template/header.htm
Chúng ta bắt đầu:
1)        Các bạn mở ROOT_DZ/viewthread.php
Tìm:
  1. $postlist = $attachtags = $attachlist = $threadstamp = array();
Sao chép mã
Thay thế:
  1. $codeclasses = $postlist = $attachtags = $attachlist = array();
Sao chép mã
2)        Tiếp theo ROOT_DZ/include/discuzcode.func.php (Nhớ backup file này trước khi modify nhé!)
Tìm:

  1. function codedisp($code) {
  2.         global $discuzcodes;
  3.         $discuzcodes['pcodecount']++;
  4.         $code = dhtmlspecialchars(str_replace('\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
  5.         $code = str_replace("\n", "<li>", $code);
  6.         $discuzcodes['codehtml'][$discuzcodes['pcodecount']] = tpl_codedisp($discuzcodes, $code);
  7.         $discuzcodes['codecount']++;
  8.         return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
  9. }
  10.       
Sao chép mã
Thêm dưới nó:

  1. function jscodedisp($code, $para) {  
  2.         global $codeclasses;  
  3.         if ($para == "") $para = "javascript";  
  4.         $class = split(":", $para);  
  5.         $codeclasses[strtolower($class[0])] = 1;  
  6.         $code = jscode_br_encode($code);  
  7.         return "<pre name="code" class="$para">$code</pre>";  
  8. }  
  9. function jscode_br_encode($str) {  
  10.         $str = str_replace("\r\n", "[JSCODE_RN]", $str);  
  11.         $str = str_replace("\r", "[JSCODE_R]", $str);  
  12.         $str = str_replace("\n", "[JSCODE_N]", $str);  
  13.         return $str;  
  14. }  
  15. function jscode_br_decode($str) {  
  16.         $str = str_replace("[JSCODE_RN]", "\r\n", $str);  
  17.         $str = str_replace("[JSCODE_R]", "\r", $str);  
  18.         $str = str_replace("[JSCODE_N]", "\n", $str);  
  19.         return $str;  
  20. }  
  21.      
Sao chép mã
Tiếp tục tìm:

  1. if($parsetype != 1 && !$bbcodeoff && $allowbbcode && (strpos($message, '[/co.de]') || strpos($message, '[/CO.DE]')) !== FALSE) {
  2.                 $message = preg_replace("/\s?\[co.de\](.+?)\[\/co.de\]\s?/ies", "codedisp('\\1')", $message);
  3.         }

  4.         $msglower = strtolower($message);

  5.         //$htmlon = $htmlon && $allowhtml ? 1 : 0;

  6.         if(!$htmlon) {
  7.                 $message = $jammer ? preg_replace("/\r\n|\n|\r/e", "jammer()", dhtmlspecialchars($message)) : dhtmlspecialchars($message);
  8.         }
Sao chép mã
Lưu ý: đoạn code trên từ khoá CODE và code không có dấu "chấm" ở giữa từ (CO.DE và co.de) . Vì BBcode nhận nhầm!
Thay thế bằng :

  1.         if(!$htmlon && !$allowhtml) {  
  2.                 $message = $jammer ? preg_replace("/\r\n|\n|\r/e", "jammer()", dhtmlspecialchars($message)) : dhtmlspecialchars($message);  
  3.         }  
  4.         $msglower = strtolower($message);
  5.         if($parsetype != 1 && !$bbcodeoff && $allowbbcode) {  
  6.                 $message = preg_replace("/\s*\[code\s*(class=)?"?([^]"]*)"?\](.+?)\[\/code\]\s*/ies", "jscodedisp('\\3', '\\2')", $message);  
  7.         }  
Sao chép mã
Tìm tiếp :

  1. return $htmlon ? $message : nl2br(str_replace(array("\t", '   ', '  '), array('&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;'), $message));
Sao chép mã
Thay thế :

  1. return $htmlon || $allowhtml ? $message : jscode_br_decode(nl2br(str_replace(array("\t", '   ', '  '), array('        ', '   ', '  '), $message)));  
Sao chép mã
3) Mở template ROOT_DZ/templates/default/header.htm hoặc ROOT_DZ/templates/your_dir_template/header.htm
Tìm:
  1. {csstemplate}
Sao chép mã
Thêm dưới nó:
  1. <? include('Plugins/syntax_highlight/jscode.php'); ?>
Sao chép mã
4) Ấn nút thanks nếu bạn thấy mod này hay hjhj!

      File đính kèm: (Bao gồm file ROOT_DZ/include/discuzcode.func.php đã hack sẵn)
DOWNLOAD
Hoặc
       plugin_discuz_high_light.rar (35.09 KB, Lượt tải về: 8)

Cảm ơn

Số người tham gia 3Danh vọng +20 Tiền +20 Thanks +3 Thu lại Lý do
WindCTU + 10 + 10 + 1
Mr.Heo + 1
hoangtucoi87 + 10 + 10 + 1

Xem tất cả

Đăng lúc 2-7-2010 06:52 PM | Xem tất
Chưa dùng. Nhưng thanks cho công mày mò vì cộng đồng ^^!
 Tác giả| Đăng lúc 2-7-2010 08:22 PM | Xem tất
Thanks, như thế thì discuz đã có nhiều chức năng hơn VBB rồi còn gì. Lại thân thiện nữa Mình đã không chọn làm Discuz!
Bạn phải đăng nhập mới được đăng bài Đăng nhập | Đăng ký

Quy tắc điểm

Đóng

Thông báoTrước /1 Sau

Phòng tối|Lưu trữ|Diễn đàn Yên Bái 2024 Community Guidelines |

GMT+7, 18-10-2026 05:25 PM , Processed in 0.039606 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

Trả lời nhanh Lên trên Trở lại danh sách